Свързване на SD карта, за да микроконтролер, microtechnics, мобилна версия
Всички добри дни! Днес ние ще говорим за това как да се свържете карта SD памет, за да STM32 на микроконтролер.
Изглежда, че паметта е пълна в STM32F10x контролери, защо все още има по-нататък, но това впечатление е измамно) Ето, например, трябва да се покаже, за да донесе няколко различни изображения - формат 320 * 240 - това е 76,800 пиксела, всеки от които съответства на толкова, колкото 2 байта. Така че ние се около 150 КВ на снимка. Голяма част от него по стандартите на микроконтролера, а не на факта, че две различни картини ще могат да се тъпча в своя Flash памет. Или трябва да се съхраняват големи количества информация, данните от който и да е сензор, например. Да, така, че тези данни са на разположение след спиране на тока. Ето това е полезно за нас, и външната памет. И най-доброто решение е SD карта с памет или MMC. Между другото, в тази статия ще се проведат експерименти с микро SD карта.
Да започнем с няколко думи за самата карта памет, или по-скоро неговата задача ПИН. Изглежда всичко е бизнес, както следва:
И така, какво имаме тук? Е, ние виждаме веднага, че заключенията, тя има най-много осем парчета. Pin възлагане на следното (от ляво на дясно):
SPI-Mode Колона ни намеква за факта, че SD картата комуникира към микроконтролера, използвайки интерфейса SPI. НО! Ние ще отидем в другата посока 😉 нещо е, че STM32 са на борда готов за периферен модул е карта с памет, и тя се нарича SDIO.
Най-общо, взаимодействието с карти с памет е да ги прехвърля в някои команди. Някои команди изискват аргумент, някои не са. Екипите могат да бъдат намерени в официалната документация за конкретната карта. Така че това е вграден SDIO позволява значително да се опрости процеса на команда, а всъщност и процеса на работа с външни карти с памет. Например, тук SDIO_CMD регистрирате - там ние просто напишете кода на командата, която искате да прехвърлите на картата. Или тук е състоянието на регистър SDIO_STA - има най-много 24 на флага на всички, това е, за голям брой събития.
Между другото STM угодно-точна и документация за цялото това нещо. Ето, например, подробно описание на инициализация за карти с памет SD (подобно на всички описани за други видове карти):
Ами, всъщност, че е време да се премине към практически пример. Поиграйте-ка Standard Периферна библиотека.
Обърнете внимание, как в ЗУТ се изпълнява командите за тях от картата с памет. За тази цел той използва специална структура SDIO_CmdInitTypeDef. В SDIO_CmdIndex въведете командата кода в полето SDIO_Argument - аргумента, попълни и в други области. Остава, тъй като е в данните, натиснете микро SD карта 😉 И за това ние сме подготвили функция:
SDIO_SendCommand (SDIO_CmdInitTypeDef * SDIO_CmdInitStruct)
Аргументът, подадено към нея като само една и съща структура, която сме създали. За да запишете данни за функция - SDIO_WriteData (uint32_t данни). След като нарече тази функция, данните ще бъдат в специален регистър за това - SDIO_FIFO.
Това е начина, по който работим с SDIO модул в STM32F10x)
Сега стигаме до практикуват най-сетне. Отново, аз отивам да работя с дъската Mini STM32, тъй като китайците са добри в нея озадачен инсталиране на карта с памет слот за Micro SD а. Ето схемата на свързване на конектора на карта, за да микроконтролера:
Да се напише програма, използвайте готов пример за Keil'a - ще изтегля двата файла, които прилагат нещо като водачът да работи с карти - това е файлове и sdcard.c sdcard.h. Създаване на нов проект, който се е вкопчил в тези файлове, но също така и, разбира се, CMSIS и SPL файлове. Тук е завършен проекта, в който вече е добавен всичко - може само да напише основната () функция код)
В sdcard.c файл изпълнява различни функции за работа с карта с памет, ние сме в момента е само тяхното използване 😉 Писане код! Например, за микро SD напиши 512 байта данни тест, а след това се опитват да поемат своята:
Моля, обърнете внимание, което поддържа SD карти за запис на блокове от по 512 байта.
Ако стартирате програмата в рамките на дебъгер, ще видите, че чете данни съответстват на писмените =) Така, че експериментът може да се счита за успех. Това приключва днес, ще се видим скоро!