Работать с картами флеш памяти можно при помощи SPI интерфейса, чем большинство радиолюбителей и занимались последние пару лет (в следствии чего, если вы поищите как подключить карту памяти к контроллеру, сразу получите результат в виде схемы подключения SPI). Но техника не стоит на месте и у нас в руках не дорогие 32 битные контроллеры, которые имеют на борту модуль специально предназначенный для работы с картами памяти — SDIO, который существенно упрощает и ускоряет работу.
Сначала о контактах.
С картой можно работать по SDIO в режиме однобитной шины данных и 4ех битной (вроде бы уже есть и 8). Далее речь пойдет об одно битной. Никакой принципиальной разницы, кроме количества используемых проводников, это не играет.
Как видно контактов на флешке довольно много. Из них нам кроме питания и земли понадобятся только три.
CLK — тактирование карты.
CMD — по этой линии передаются команды.
DAT0 — линия данных (в случае 4-ех битной шины их будет 4).
Соединяем с контроллером:
PC8 — SDIO_D0 (DAT0)
PC12 — SDIO_CK (CLK)
PD2 — SDIO_CMD (CMD)
Я не использовал никаких подтяжек и все работало нормально. Правда иногда случаются сбои и карта не инициализируется.
Теперь перейдем к принципу работы.
Все черные дела за нас делает модуль SDIO. Мы просто должны знать команды, которые нужно посылать и читать данные.
Передача данных с/на карту неотъемлемо связана с вычислением контрольных сумм. Это происходит при каждой передаче.




