, пауза, ответ карты 0х00, и блок данных (так как контрольная сумма не проверяется, то ее поле можно заполнить случайно). Далее следует ответ карты про прием блока данных.
После чего busy
состояние, когда карта записывает полученные данные. Временная диаграмма операции записи приведена ниже.
Исходная карта памяти может быть отформатирована в FAT16
или в FAT32для FatFs это не имеет разницы, она умеет работать с обоими. Нам потребуется написать функции взаимодействия с носителем, в данном случае их будет шесть:
1) DSTATUS disk_initialize (BYTE Drive);
Инициализирует носитель Drive и подготавливает его к операциям чтения/записи. Эту функцию не следует лишний раз вызывать из своей программы, иначе есть хорошая вероятность попортить все данные на карточке.
В случае удачного вызова возвращает 0. В случае, если носитель не инициализировался, возвращает STA_NOINIT, а если носитель отсутствует - STA_NODISK.
2) DSTATUS disk_status (BYTE Drive);
Узнает статус носителя Drive. Возвращает STA_NOINIT если диск не инициализирован, а если носитель отсутствует - STA_NODISK. Также в случае, если носитель защищен от записи, то возвращается STA_PROTECTED.
3) DRESULT disk_read (BYTE Drive, BYTE* Buffer, DWORD SectorNumber, BYTE SectorCount);
Читает SectorCount из носителя Drive в буфер, на который указывает указатель Buffer начиная с сектора SectorNumber в LBA адресации. Возвращает DRESULT:
enum
{ //Статус дисковой операции_OK = 0, //Операция успешно завершена_ERROR, //Ошибка носителя_NOTRDY, //Носитель не готов
RES_PARERR //Ошибочный аргумент
} DRESULT;
Буфер должен иметь размер количество секторов для чтения * размер сектора в байтах. Количество считываемых за раз секторов SectorCount должно быть о 1 до 128.
4) DRESULT disk_write (BYTE Drive, const BYTE* Buffer, DWORD SectorNumber, BYTE SectorCount);
Полный аналог disk_read, только не считывает данные, а пишет их на карточку.
5) DRESULT disk_ioctl (BYTE Drive, BYTE Command, void* Buffer);
Довольно интересная функция, которая передает носителю Drive команду Command, а ответ на команду пишет в буфер, на который указывает Buffer. Таблица необходимых команд приведена ниже. Проконтролировать результат позволяет возвращаемое значение DRESULT.
6) DWORD get_fattime (void);
Возвращает текущее дату и время, представленное в виде двойного слова DWORD следующим образом::25 - года, начиная с 1980 (0 127):21 - месяца (1 12):16 - дни месяца (1 31):11 - часы (0 23):5 - минуты (0 59):0 - секунды деленные на 2 (0 29)
Если в системе не поддерживаются часы с реальным временем, то нужно возвращать какую-то реальную дату и время, потому что они нужны для маркировки времени изменения/создания файлов.
Заключение
В данной работе были рассмотрены разные варианты схемной реализации подсистем информационно-вычислительной системы анализа характеристик электрических сигналов, выполненных на микропроцессорах Atmel ATmega. Проведен анализ и выбор решения, соответствующего требованиям технического задания, а также его обоснование. На основании проведенного анализа можно сделать вывод, что принятое схематическое решение оптимально и соответствует всем требованиям, оговоренным в техническом задании на разработку.
Приложение
ATmega128, ATmega128L 8-разрядный AVR-микроконтроллер с внутрисистемно программируемой флэш-памятью емкостью 128 кбайт
Отличительные особенности:
- Высокопроизводительный, маломощный 8-разрядный AVR-микроконтроллер
133 мощных инструкций, большинство из которых выполняются за один машинный цикл
Амплитудная модуляция
Исследование
различных видов модуляции необходимо для определения требуемых свойств каналов,
сокращения избыточности модулированных сигналов и улучшения исп ...
Проектирование автоматического измерителя артериального давления
Важным компонентом клинического мониторинга, определяющим
состояние сердечнососудистой системы и организма в целом, является контроль
кровяного давления. Дв ...
Проектирование генераторного триода дециметрового диапазона
Генераторные
лампы предназначены для генерирования и усиления электрических колебаний низких
и высоких частот. По роду работы генераторные лампы можно разде ...