Доброе время суток, продолжаем изучать микроконтроллеры ARM архитектуры. На повестке дня у нас SDIO и FatFS.

SDIO
SDIO — (Secure Digital Input/Output) — стандарт для работы со слотами расширения формата SD/MMS. Сегодня на самом деле используется не так много стандартов флэш-памяти. Это Secure Digital/Multimedia Card, которая включая некоторые их модификации, такие как RS-MMC, CompactFlash Type II, реже — MemoryStick. Карты памяти семейства SD/MMC сегодня довольно многообразны как по емкости, так и по форм-фактору. Кроме «традиционных» карт Secure Digital существуют,так называемые карты половинной высоты (Reduced Size MMC), MMCmobile (RS-MMC со сниженными требованиями к напряжению). Secure Digital Memory Card (SD) — формат карт памяти (флеш-память), разработанный для использования в основном в портативных устройствах. На сегодняшний день широко используется в цифровых фотоаппаратах и видеокамерах, мобильных телефонах, электронных книгах, GPS-навигаторах и в некоторых игровых приставках.

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

Режим шины SPI: Serial Peripheral Interface в основном используется в микроконтроллерах. Этот тип шины поддерживает только 3,3-вольтовой интерфейс. Это единственный тип шины, которые не требуют лицензии на хост.
Однобитовый режим шины SD: Отдельная шина для команды и каналов передачи данных.
Четырёхбитовый режим шины SD: Использует дополнительные контакты, переназначены некоторые контакты. Для карт UHS-I и UHS-II требуется именно этот режим.

Физический интерфейс включает в себя 9 контактов, за исключением того, что для карт miniSD добавлено два несвязанных контакта в центре и microSD карты не использует один из двух общих контактов.

FatFs
FatFs является модулем простой файловой системы FAT (generic FAT file system), предназначенным для маленьких встраиваемых систем на микроконтроллерах (embedded systems). FatFS-module-layers FatFs написан на ANSI C(C89) и полностью разделен по уровням дискового ввода/вывода (disk I/O). Таким образом, модуль полностью не зависит от аппаратной архитектуры подключения носителя данных (карта памяти, жесткий диск, FLASH, SDRAM и т. п.) к микроконтроллеру, и может быть легко портирован на любой микроконтроллер и систему. Модуль хорошо подходит для микроконтроллеров нижней ценовой категории типа AVR, 8051, PIC, ARM, Z80, 68k и т. д., и портируется без всяких изменений. Для того, чтобы модуль заработал, нужно только предоставить низкоуровневый интерфейс ввода вывода (см. далее, Disk I/O Interface). Модуль Petit FatFs также доступен как пример реализации такого ввода/вывода для 8-битных микроконтроллеров.

Подробное описание о работе с FatFs на русском языке.
http://microsin.net/programming/file-systems/fatfs-file-system.html
http://microsin.net/programming/file-systems/fatfs-appnotes.html

Мы с вами просто возьмем готовый пример, немного его исправим, чтобы он у нас запускался и затем поиграемся с основными функциями, для работы с SD и FatFS.

Изменять будем STM32Cube_FW_F4_V1.5.0\Projects\STM324x9I_EVAL\Applications\FatFs\FatFs_uSD для STM324x9I_EVAL на STM32F429i-Disco.

Но первым делам нужно развести плату для microSD карты (я делаю писибишки в Altium Designer).

Писибишка

main.c

Сейчас нам необходимо подправить 2 участка кода, чтобы проект у нас с Вами начал полноценно функционировать. Первый участок кода, находим uint8_t BSP_SD_Init(void) внутри функции находим uSdHandle.Init.ClockDiv = SDIO_TRANSFER_CLK_DIV; Переходим по определению (F12) и изменяем define на define следующего вида #define SDIO_TRANSFER_CLK_DIV ((uint8_t)0xFF). Второе изменения касается использования пина для фиксации SD карточки. Находим функцию uint8_t BSP_SD_IsDetected(void) и просто, основной код этой функции комментируем(а не удаляем, конечно лучше поставить define и в следующей раз когда будет необходимость собрать проект, для SD, просто нужно будет сказать компилятору, что у нас проект с фиксацией или без фиксации карточки).

Проект в Keil для SD карты.
После зашивки проекта в микроконтроллер, достаем карту памяти и вставляем ее в кард ридер. И ВОЛЯ! 🙂

Начало положено, 2 статью уже начал писать. Вопросы оставляйте в комментариях.

4
Отправить ответ

avatar
2 Comment threads
2 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
ДимаadminSeverusTacitus Recent comment authors

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

  Subscribe  
Самый новый Самый старый Наиболее проголосовали
Уведомлять о
SeverusTacitus
Гость
SeverusTacitus

Здравствуйте.
А для чего такие сигзаги на трассировке?
Спасибо.

Дима
Гость
Дима

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