Распиновка sd разъема. Подключение SD карты к микроконтроллеру

Урок 33

Часть 1

SPI. Карта SD. FAT

Сегодня мы продолжим нашу любимую тему по интерфейсу SPI. Закончили мы с данной шиной друг к другу контроллеров Atmega8a и ATTtiny2313. А сегодня мы по данному интерфейсу попробуем подключить к микроконтроллеру по данной шине карту памяти SD (Secure Digital) .

Данная карта может подключаться также по интерфейсу SDIO, но так как такой интерфейс не поддерживается аппаратно нашим контроллером, то в рамках данного занятия мы его касаться не будем. Нам интересен именно тип подключения по шине SPI , так как у нас уже есть неплохие накопленные знания по данной теме, а также аппаратная поддержка в контроллере, который мы программируем.

Тем не менее мы посмотрим распиновку ножек карты по обоим типам

Ну, так как нас интересует второй тип, с ним и будем разбираться.

А разбираться тут особо не в чем. Все эти аббревиатуры нам известны. Здесь все стандартные ножки интерфейса SPI и ничего тут лишнего нет.

Теперь вообще про карту. Данная карта нам позволяет хранить данные, тип памяти у неё FLASH, который по сравнению с памятью типа EEPROM также является энергонезависимым, то есть при отключении питания данные никуда не пропадают, а остаются храниться. Также данная память имеет отличия, мы с ними познакомимся в процессе программирования. Одно из главных отличий то, что мы уже как в память EEPROM в данную память не можем записать один байт. Теоретически то конечно можем, но только запишутся туда либо только единички из нашего байта либо только нули в зависимости от типа FLASH — NOR или NAND. То есть прежде чем писать байт, нужно его стереть, а в силу организации данной памяти, стирать мы можем только блоками, вот и писать следовательно также только блоками. Но зато есть величайшее отличие от EEPROM — это цена. Она в разы дешевле, даже порой на порядки за одну хранящуюся единицу инфорамции (за мегабайт, за гигабайт). Поэтому у памяти FLASH как правило всегда гораздо больший объём информации.

Существуют 4 типа SD, но это мы изучим немного позднее.

Подключим данную карту пока в протеусе

Здесь всё просто. На самом деле не совсем так. Нужны ещё резисторы

Данные резисторы нужны для того, чтобы обеспечить соответствующие уровни, так как карта питается от 3,3 вольт. Вообще по технической документации от 2,7 до 3,6 вольт.

Также в протеусе не указано, а на самом деле мы будем питать нашу карту от отдлеьного питания, поставив микросхему, преобразующую 5 вольт в 3,3 вольт.

Вернее, мы не будем ничего ставить, а будем использовать готовый модуль, в котором уже всё установлено.

Также у нас подключен дисплей, как и на по расширению функционала библиотеки дисплея.

Вот так у нас всё выглядит в практической схеме

Вот так вот выглядит модуль с держателем

Найти такой модуль можно везде, стоит он копейки. Тот модуль, который конектится по SDIO, стоит дороже. Мы видим также, что на модуле уже установлена микросхема для понижения напряжения до 3,3 вольта. А подключаем питание мы только на контакт 5 вольт, а на 3,3 не подключаем ничего

Также на модуле установлены все делители для уровней, то есть данный модуль рассчитан именно на подключение к 5-вольтовым устройствам.

А флеш-карту для тестов я откопал на 32 мегабайта, именно мегабайта а не гигабайта

Данная флеш-карта была подарена вместе с каким-то фотоаппаратом и она нам лучше всего подойдёт для наших тестов, по крайней мере мы не будем думать, что тот или иной глюк у нас из-за слишком большого размера памяти на карте.

Код был весь взят также с прошлого занятия вместе с библиотекой дисплея, так как функцию, которую мы создали на прошлом уроке, мы будем очень активно использовать, только был конечно создан проект новый и назват соответственно MYSD_SPI .

Удалим ненужные строки, в main() у нас останется только во это

int main ( void )

unsigned int i ;

Port_ini ();

LCD_ini (); //инициализируем дисплей

Clearlcd (); //очистим дисплей

Setpos (0,0);

Str_lcd ( "String 1" );

Setpos (2,1);

Str_lcd ( "String 2" );

Setpos (4,2);

Str_lcd ( "String 3" );

Setpos (6,3);

Str_lcd ( "String 4" );

Delay_ms (2000);

// for (i=0;i<=22;i++) {str80_lcd(buffer2+i*20);_delay_ms(1000);}

While (1)

Так как мы посимвольно не будем выводить текст, то можно будет в переменной обойтись типом char

unsigned char i ;

Теперь ещё один нюанс.

Чтобы нам работать с SD-картой в протеусе, нам мало добавить сам держатель с картой, необходимо также в его свойствах прикрепить файл образа флеш-карты.

Создать его не сложно. Одним из способов является создание с помощью программы WinImage.

Мы в ней стандартно создаём новый файл с помощью пункта меню File — > New. Выбираем в диалоге самый последний пункт и жмём "OK"

Для теста в протеусе нам вполне хватит размера 4 мегабайта, поэтому поменяем в следующем диалоге поле с номером секторов, а также выберем формат FAT12/16, потому что с 32-битной файловой системой немного другая специфика работы, и также нажмём "OK"

Вообще мы конечно можем оставить и FAT32, так как мы с файловой системой пока не работает, но в дальнейших частях занятия будет работа с файловой системой и мы будем именно работать с 12/16.

Затем мы сохраняем наш созданный файл с помощью пункта меню File -> Save As. И сохраняем мы его в ту папку, где у нас находится сохранённый проект протеуса. Назовём файл и нажмём "Сохранить"

Также затем нужно будет убедиться, что данный файл у нас получился не с аттрибутом "только для чтения" и после этого мы уже сможем его подключить в протеусе. Надо будет вручную вписать имя файла, так как протеус требует какой-то свой формат и наш файл будет просто не виден

Путь нам никакой не нужен, так как файл у нас находится в папке с проектом. Жмём "ОК".

Инициализация шины нам не нужна, так как у нас SPI будет программный, с аппаратным флеш-карты работают корректно не все, то нам не надо будет использовать никаких регистров. Аппаратный конечно, лучше, но чтобы уяснить работу протокола досконально, надо ещё поработать и с программным, то есть подрыгать ножками портов. Вообще, глядя на схему, может показаться, что у нас всё аппаратно, так как я именно такие ножки выбрал, это потому, что я просто так выбрал, чтобы впоследствии когда-то может быть кто-то попытается всё-таки поработать с аппаратной реализацией шины.

Добавим макроподстановки для ножек порта

#include "main.h"

#define MOSI 3

#define MISO 4

#define SCK 5

#define SS 2

Добавим код для инициализации ножек в функцию инициализации портов

void port_ini ( void )

PORTD =0x00;

DDRD =0xFF;

PORTB |=(1<< SS )|(1<< MISO )|(1<< MOSI );

DDRB |=(1<< SS )|(1<< MOSI )|(1<< SCK );

Мы оставляем на вход ножку MISO, так как по умолчанию все биты в регистре равны нулю, и мы его просто не трогает. Также мы включаем сразу высокий уровень в MOSI и SS, а к MISO подтягиваем резистор.

Напишем функцию передачи байта по шине SPI

void SPI_SendByte ( unsigned char byte )

{

}

Добавим переменную для цикла и сам цикл

void SPI_SendByte ( unsigned char byte )

unsigned char i ;

for ( i =0; i <8; i ++) //движемся по битам байта

{

}

Я думаю, понятно почем мы считаем до 8, так как битов мы передаём именно 8.

Ну и начнём их передавать потихоньку.

Проверим сначала самый левый бит, выделив его из всего байта маскированием, и, если он у нас равен 1, то выставим 1 и на шине MOSI, а если 0 — то не трогаем шину

for ( i =0; i <8; i ++) //движемся по битам байта

Несколько лет назад в мае 2011 создателем культовой игры «Elite» Дэвидом Бребеном был представлен первый концепт одноплатного компьютера Raspberry Pi. Этот момент стал переломным в моей жизни. Идея сделать компьютер размером с флеш-накопитель лежала на поверхности, но большой размах получила лишь с помощью компании Raspberry Pi Foundation.

Уже 25 июля 2011 в производство отдается альфа версия компьютера. К сожалению, у проекта изменился концепт, и теперь он позиционируется как компьютер размером с кредитную карту. Несмотря на это обстоятельство за ним следили миллионы людей. Эффекту толпы повиновался и я, ежедневно проверяя официальную страницу проекта. Началось длительное и мучительное ожидание «чуда», которое случилось 29 февраля 2012 года – старт продаж.

Купить Raspberry Pi можно было через сеть Farnell либо у RS Components . Как оказалось, 29 февраля можно было сделать лишь предзаказ. В наличии этих плат не было ни у одной из контор. Первая партия устройств составляла всего 10000 экземпляров, поэтому, учитывая ажиотаж вокруг проекта, оформить заказ было очень тяжело. Однако, преодолев все трудности, в 14:06 того же дня компьютер был куплен за 46.73 фунтов стерлингов у Farnell’а.

Так долго не выполняли ни один из моих зарубежных заказов. Меня крайне огорчил тот момент, что Farnell, взяв за доставку 20 фунтов, отправил посылку 29 мая 2012 года (спустя 2 месяца) обычной почтой без номера для отслеживания. На удивление, симбиоз Королевской и Российской почты доставил посылку в целости и сохранности уже 22 июня. Это была самая желанная посылка за последние несколько месяцев, поэтому, не выдержав напряжения, мне пришлось отпроситься с работы и бежать на почту.

Рассказывать про то, как настраивать Raspberry Pi для первого запуска нет смысла. Со статьей на эту тему я опоздал на пару лет, уже много строк об этом написано на других ресурсах, а на Youtube выложено достаточное количество видеоматериалов. Я же хочу рассказать о существенном для меня недостатке в конструкции – неудобном расположении разъема для SD карты. Когда карта вставлена, она сильно выпирает за пределы платы, что портит вид самодельного корпуса.

Есть два варианта решения этой проблемы: подпаять переходник SD->microSD параллельно разъему, установленному на Raspberry Pi (как сделать такую операцию можно почитать в статье на Хабре), или использовать переходник Low-profile MicroSD->SD. Первый вариант для меня просто недопустим – ну не поднимается рука паять плату, т.к. боюсь испортить товарный вид своей Малинки. Считаю, что оптимальным выбором является все же использование Low-profile переходника.

Изначально было решено приобрести такой переходник в одном из зарубежных интернет магазинов. Выбор есть, но стоимость на такие безделушки просто запредельная. Самые дешевые экземпляры стоят 10 долларов, причем некоторые образцы откровенно выглядят самоделками. Окончательное решение о самостоятельном изготовлении переходника, было принято после посещения сайта DIYGadget , обратите внимание, как просто повторить их творение .

Готовы? Переходим от слов к делу. Чтобы правильно сделать переходник, изучим спецификацию на SD и microSD карты. Все, что необходимо для изготовления я попытался систематизировать в таблице 1, 2.

Таблица 2: Цоколевка карт памяти SD

Соединив соответствующие контакты на картах памяти, и, объединив Vss1, Vss2, получаем электрическую принципиальную схему переходника.

Чтобы изготовить переходник нам потребуется:
1) Держатель для microSD (CF TFC-WPCE-08 MICROSD CARD) – 52.22 руб.
2) Кусок двустороннего фольгированного стеклотекстолита площадью порядка 4 см 2 (2% от позиции СТЕКЛОТЕКСТОЛИТ ФОЛЬГИР.1.5ММ 2-Х СТОРОН) – 3 руб.
3) Материалы для монтажа (хлорное железо, олово, флюс) – 10 руб.

Тогда себестоимость проекта составит 65 рублей 22 копейки и некоторое количество свободного времени. Для того чтобы удешевить конструкцию можно заменить держатель карты microSD на CF TFC-WPCER-08 MICROSD CARD . К сожалению, этой позиции не оказалось в наличии на складе ЗАО «Промэлектроника», поэтому я приобрел более дорогой вариант. Обращаю Ваше внимание на то, что если Вы замените тип держателя, то воспользоваться моим шаблоном для ЛУТ (лазерно-утюжной технологии) у Вас может не получиться.

Для проектирования печатной платы я использовал Autocad, т.к. мой любимый SprintLayout не смог порадовать наличием нужного шаблона. Для любителей видоизменить печатную плату Вы можете скачать исходник в формате DWG , а если такой необходимости нет, то – заготовку в формате PDF (рекомендую перед нанесением шаблона из PDF сверить размеры).

После того, как шаблон перенесен на плату, рекомендую просверлить отверстия диаметром 0,5 мм для перехода с одного слоя на другой.

Переход со слоя на слой я произвожу с помощью тонкого провода, предварительно облудив дорожки будущего переходника. В тех местах, где отверстия находятся под держателем microSD, необходимо надфилем сточить капли олова, чтобы он установился без перекоса. В последнюю очередь производим монтаж держателя. Если в процессе изготовления платы использовались различные флюсы, то перед тем как толкать её в Ваш Raspberry Pi обязательно промойте плату.

Делать переходник самим или покупать – выбирать Вам. Чтобы выбор был более осознанным, специально для Вас я подобрал несколько ссылок для покупки:
1) Raspberry Pi Premium Low-profile MicroSD (TF) to SD Card Adapter. Protect Board.
2) Raspberry Pi Low-profile MicroSD to SD Card Adapter, SD card won"t get damaged!!
3) MicroSD to "short" SD / RS-MMC adapter. For Everdrive carts, Raspberry Pi, etc.
4) Low-profile MicroSD to SD Card Adapter for Raspberry Pi.
5) SD card adapter for Raspberry pi REV2 +free shipping.

В заключении хочется сказать, что весь материал предназначен лишь для ознакомления. Использование наработок в коммерческих целях строго запрещено. Перепечатка материалов возможна только с моего разрешения и с соблюдением ссылок на первоисточник. Желающих поддержать не только словом, но и делом, а также поблагодарить – прошу ко мне на почту .

Для самостоятельной сборки устройства Вам необходимо скачать следующие файлы:
1. Исходник платы для ЛУТ в формате DWG
2. Плата для ЛУТ в формате PDF

Удачи в Ваших начинаниях!!!

Сколько себя помню всегда любил читать, но на дворе 21 век и порой необходимую литературу можно найти только в интернете. Да и читать электронные книги можно на электронном устройстве типа планшет, компьютер или ридер. В итоге получилось небольшое устройство, которое может читать текстовые файлы с SD или microSD карты и выводить их содержимое на экран.

Мозгом устройства служит микроконтроллер Atmega32 работающий на частоте 8МГц. МК тактируется от внешнего кварца на 8МГц, в качестве экрана устройства я применил небольшой ЖК индикатор WH1604A на контроллере HD44780 разрешением 4 строки по 16 знакомест каждая. Кнопки использовал обычные тактовые, что касается SD карты для её подключения к микроконтроллеру я использовал резисторные делители чтобы согласовать логические уровни.

Принципиальная схема устройства:

На схеме распиновка верна только для SD карты или SD адаптера, для подключения других карт пользуйтесь их распиновкой!

Устройство поддерживает SD, miniSD и microSD карты памяти размером до 4ГБ отформатированные в файловой системе FAT, FAT16. Следует помнить что устройство не поддерживает каталоги поэтому все файлы нужно записывать только в корень флешки. Текстовые файлы должны быть в обычном txt формате и без форматирования, имена файлов должны быть не длинее 8 знаков (не считая расширения).

При включении устройства на дисплее появится заставка:

Если SD карта не установлена в устройство, неправильно подключена, или ещё чего то появится следующие сообщение:

Если же всё в порядке, то появится главное меню:

Пользуясь кнопками вы можете войти в пункт "Обзор файлов" где можете выбрать нужный вам для прочтения файл.

В пункте "Настройки" вы можете выбрать с каким расширением файлы отображать в "Обзоре файлов".

И в последнем пункте "О системе..." вы можете почитать информацию об устройстве, его авторе и т.д.

Прошивку для устройства я писал в среде BASCOM-AVR с использованием библиотеки AVRDOS, прошивка занимает всего 30% программной памяти микроконтроллера поэтому есть место для творчества. Внутри устройство собрано на двух печатных платах: на одной расположен МК с обвесом, на другой разъём под SD карту и согласующие цепочки логических уровней.

Вот фото устройства внутри:

Для питания я использовал Ni-Cd аккумулятор на 4.8В, 600мАч. После прошивки микроконтроллера необходимо установить следующие фьюз-биты:

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

ATmega32

1 В блокнот
D1, D2 Выпрямительный диод

1N4001

2 В блокнот
С1, С2 Конденсатор 22 пФ 2 В блокнот
С3 Электролитический конденсатор 100 мкФ 1 В блокнот
С4 Конденсатор 100 нФ 1 В блокнот
R1 Резистор

10 кОм

1 В блокнот
R2-R4 Резистор

4.7 кОм

3 В блокнот
R5-R7 Резистор

1 кОм

3 В блокнот
LCD1 LCD-дисплей LM014L 1 В блокнот
X1 Кварц 8 МГц 1 В блокнот
Кнопка 4 В блокнот
Выключатель 1

Artem Makarov aka Robin

27.09.2014

В последнее время всё чаще приносят на восстановление информации флешки, выполненные на монокристальной основе, так называемые монолиты. Сегодня речь пойдёт о процессе восстановления данных с такого монолита, - карты памяти SD которую прислал партнер из города Кемерово. На карточке была записана видеосъемка свадьбы, и когда торжество успешно окончилось и пора было приступать к монтажу и выпуску подарочных DVD, флешка приказала долго жить.

Восстановление монолитных SD карт памяти

Примечательно, что внешне не понять, - это "классическая" SD карточка, с платой текстолита, NAND памятью и контроллером, или монокристалл. До тех пор, пока не вскроется пластиковый корпус. Чаще всего выход таких карт памяти из строя обусловлен сбоем в таблицах трансляции. Реже - электромеханическими повреждениями.

Для восстановления файлов с такой карточки первым делом надо вычитать дампы с кристалла. Для этого механическим (очисткой и шлифованием) путем удаляется защитный лак, скрывающий дорожки и контактные площадки монолита. После чего флешка начинает выглядеть так:

Дорожки и распиновка монолитной SD карты

Видны контактные площадки, к которым подключены шина данных, chip enable, read/write busy, питание и т.п. Разумеется ничего не промаркировано, и даташитов, в которых подробно расписано, что куда подключать, в свободном доступе так же нету. Распиновку можно отыскать либо взяв точно такую же исправную флешку (а их великое множество типов, и найдя такой же по виду условный SD Kingston, можно получить внутри совершенно по другому сделанный девайс) и вооружившись логическим анализатором кропотливо изыскивать что куда и зачем. Либо купив распиновку у человека/конторы, которые такую работу за тебя уже сделали.

В итоге получается нечто такое:

Или такое:

Теперь в полученных дампах нужно устранить внутренние преобразования. Первым делом убрать маску XOR, которую накладывал при записи информации в ячейки NAND контроллер флешки. С этой маской сектор выглядит так:

а когда нужная маска XOR подобрана и применена, то сектор приобретает осмысленный вид:

После устранения XOR преобразований нужно выставить корректную геометрию сектора, описать маркеры и область ECC корректировки данных. С помощью алгоритма ECC поправить битовые ошибки. Выяснить, в какой последовательности были расположены блоки, их размер. Поскольку тип контроллера неизвестен (это ж монолит!), то надо определить, каким сборщиком пользоваться в данном конкретном случае. Будет ли это сборка финального образа по маркеру сектора или по остаткам таблиц трансляции.

После того, как образ собран, проверить конфликтные блоки, имеющие одинаковый маркер, на актуальность и подставить в образ те, с которыми итоговый результат будет наилучшим. Получив привычный образ с файловой системой можно открыть его в любом дисковом редакторе и выгрузить нужные пользователю файлы.

Безусловно, многие операции достаточно автоматизированы, но тем не менее объем работ при восстановлении данных с монолитов (монокристаллов) весьма велик. Далеко не каждый инженер или компания, восстанавливающая информацию, горит желанием с такими работами связываться. И ценник на такого рода восстановление весьма далёк от понятия "бюджетный".

Вот еще один случай на примере восстановления SD Sandisk - такой же монолит, только внутри чуть по-другому сделан:

Готово для чтения

Восстановление MicroSD флешек

А вот как выглядят контактные площадки на Micro SD карточке. Сразу нужно оговориться, что это только несколько примеров из множества вариантов компоновки.

А вот вариант распиновки монолитной карты памяти Memory Stick Pro Duo

Вот - не сказать что монолит, но и не обычная USB флешка. Микросхема памяти (кристалл) залита компаундом (клеем).

А вот как выглядит монолитная карта памяти Olympus XD Picture card, с которой потребовалось восстановить фотоснимки:

Восстановление поломанных Микро СД

Отдельно стоит упомянуть об успешном выполнении задач по восстановлению информации с MicroSD флешек, сломанных на части, с отломанным куском, с трещинами на корпусе и т.п. Несколько примеров на картинках ниже:

Во всех случаях, когда речь идет о флешке разломанной на куски, с отломанной частью и т.п. есть возможность восстановления информации если остался цел кристалл NAND. Например в микро-флешке Сандиск из примера ниже в результате неаккуратной эксплуатации откололся кусок с повреждением дорожек, отмеченных красным овалом.

Лаборатория "Хардмастер" одна из немногих, имеющих опыт и квалификацию в восстановлении данных с монолитных USB, SD, microSD, Memory Stick и т.п. карт памяти. Если на вашей монолитной поломанной флешке остались важные файлы которые хотелось бы вернуть - обращайтесь к нам!

Как известно, карты памяти SD совместимы с интерфейсом SPI, поэтому их легко можно подключить к микроконтроллеру и наладить с ними обмен данными. Адаптеры для карт типа microSD также являются доступными, из такого адаптера мы можем изготовить слот для карты microSD для нашего макета. На фотографиях ниже показан внешний вид изготовленного адаптера для подключения к макетной плате.

В проект изначально использовалась карта памяти microSD объемом 1 ГБайт. Микроконтроллер - ATmega8 или ATmega32, работающий на частоте 8 МГц от внутреннего RC осциллятора. Кроме того, для подключения макета к персональному компьютеру для мониторинга данных использовался интерфейс RS-232. Для преобразования логических уровней интерфейса используется микросхема MAX232 . Для питания схемы необходим стабилизированный источник питания 3.3 В (микросхема MAX232 рассчитана на напряжение питания 5 В, однако, как показала практика, сохраняет работоспособность при 3.3 В). Подключение карты памяти по 7-проводной схеме, согласно распиновке (см. рис).

Принципиальная схема для микроконтроллера ATmega8.

Подтягивающие резисторы R1, R2 номиналом 51 кОм интерфейса SPI придают лучшую стабильность при работе с различными картами. Стабилитроны D1, D2 предназначены для защиты карты памяти при работе внутрисхемного программатора (ISP). Выводы микросхемы MAX232 VCC и GND на схемах не указаны, но их необходимо подкличить к соответствующим точкам схемы.

Принципиальная схема для микроконтроллера ATmega32

Принципиальная схема для микроконтроллера ATmega32 (добавлены часы реального времени на микросхеме DS1307)

Как вы заметили, питание последнего варианта устройства осуществляется от источника 12 В, а на плате установлены два регулятора напряжения 5.0 В (LM7805) и 3.3 В (LM1117-3.3). Для питания интерфейса SD карты используется 3.3 В, вся остальная часть схемы питается от источника 5.0 В. Микросхема часов реального времени DS1307 в стандартном включении и подключена к интерфейсу I2C микроконтроллера.

Сперва был изучен «сырой» формат передачи данных, на примере операций чтения любого блока данных, чтения и записи нескольких блоков данных, стирания нескольких блоков, записи данных в любой блок памяти SD. Устройство, собранное на макетной плате, подключалось к компьютеру по интерфейсу RS-232. Для отображения прочитанных данных с карты памяти, а также для ввода и записи данных на карту используется программа HyperTerminal (или аналогичная) на компьютере.

После удачной реализации обмена данными без спецификации, карта памяти была отформатирована (FAT32) в операционной системе Windows XP, затем на карту были записаны несколько текстовых файлов, директорий и другие типы файлов (в корневую директорию карты). После этого были написаны подпрограммы и функции по работе с файловой системой FAT32 для чтения файлов, для получения списка файлов на карте памяти (с использованием HiperTerminal), для получения информации о полном и свободном объеме памяти.

Вид окна программы HiperTerminal с функциями по работе с картой памяти SD:

Пользователю предлагаются свыше 10 опций по работе с картой памяти (для варианта с часами).

Опции 0 - 4 - это низкоуровневые функции. Gосле использования опций 0 - 3 Вам необходимо переформатировать карту перед использованием FAT32 подпрограмм.
Опции 5 - 9 - относятся к файловой системе FAT32. На данный момент поддерживаются только короткие имена файлов (8 Байт - имя файла, 3 Байта - расширение файла). Если будут записаны файлы с длинными именами, то они будут отображены в терминальной программе в коротком формате. Для тестирования этих опций не забудьте отформатировать карту в файловой системе FAT32, записать несколько директорий и текстовых файлов.

Описание опций:

0 - Erase Blocks - стирание выбранного количества блоков начиная с указанного.
1 - Write Single Block - запись данных в блок с определенным адресом. Данные вводятся с клавиатуры в программе Hiperterminal;
2 - Read Single Block - чтение данных с блока с определенным адресом. Прочитанные данные отображаются в окне терминальной программы;
3 - Writing multiple blocks - запись нескольких блоков, начиная с определенного адреса;
4 - Reading multiple blocks - чтение нескольких блоков, начиная с определенного адреса.

Примечание. Здесь функции работы с несколькими блоками (опции 3 и 4) отключены из-за нехватки памяти микроконтроллера ATmega8, поскольку эти функции не нужны для тестирования файловой системы FAT32. Для включения этих опций необходимо удалить макрос в файле SD_routines.h (#define FAT_TESTING_ONLY). И, если Вы используете ATmega8, на время тестирования опций 3 и 4 библиотека FAT32 может быть удалена с целью освобождения памяти микроконтроллера.

5 - Get File List - отображает список доступных директорий и файлов с занимаемым ими объемом памяти (в корневой директории карты);
6 - Read File - чтение указанного файла и отображение содержимого в окне терминальной программы;
7 - Create File - создать/добавить файл с указанным именем;
8 - Delete File - удалить все файлы файл с указанным именем;
9 - Read SD Memory Capacity - информация о полном и свободном объеме карты памяти (используется FSinfo сектор SD карты).

В терминальной программе последовательный порт настраивается на скорость обмена 19200 бод, без контроля потока и без проверки четности.

Для версии с часами реального времени (DS1307) на микроконтроллере ATmega32 свойства создаваемых или обновляемых файлов привязываются к дате и времени (дата создания/изменения), эти свойства прописываются в файловой таблице и могут быть проверены с помощью компьютера, а также часы могут быть полезны при сборе данных. В меню опций в терминальной программе добавлены три опции.

Поделиться: