SD karta

Z MAM wiki

Přejít na: navigace, hledání

SD karta (Secure Digital, SD card) je zajímavé paměťové médium, které se dá připojit k PC i k AVR. Karty jsou k dispozici i ve velmi malých rozměrech.


Na této části stránky se pracuje !!! Brzy zde najdete další informace k SD kartě :

- popis samotné problematiky rozhranní SD karet, včetně vzorové knihovny (česky komentované) nejen pro překladač CodeVision.
- Výsledky jsou oveřené a jednoduše aplikovatelné - zápis, čtení SD karet - přes komunikační rozhranní SPI vašeho AVR procesoru.

Pro práci s SD kartou si kromě ní a ATmega procesoru připravte integrovaný obvod 4050 (- jako převodník log. úrovní na 3,3V logiku) a slot na SD kartu, je jedno zda pro velikost standart, či micro. Odkaz na prodejce tohoto slotu je níže. Jelikož je karta určena pro napájení 2,7-3,6V pořidte si také jeden z lineárních stabilizátorů 3,3V (např. LE33CZ) - ten kromě napájení karty bude napájet i obvod 4050. Zapojení pak může vypadat například takto:

Soubor:Připojení SD karty k MCU.png

Samotná SD karta vychází z koncepce starší MMC, výrobci je standartně připravena ke komunikaci pomocí 3 typů rozhranní. Neveřejné specifikace jsou k prvním 2, tzv. SD režimy jsou 4, příp. jednobitové - ty používají profesionální konstrukce, za jejichž použití výrobci SD asociaci platí. Zcela volně dostupná ze stránek SD asociace ZDE je specifikace ke komunikaci v tzv. SPI režimu. Ten je až na napěťové hladiny shodný s SPI rozhraním (nejenom) vašeho AVR procesoru.

Vše o SPI naleznete ZDE, stručně jen tedy - jde o 3 vodičové synchronní rozhranní. Výrobce Atmel tyto signály nazývá MOSI (Master out,Slave in), MISO (Master in, slave out) a SCK (serial clock), dva jsou datové a jeden hodinový. Periferie mohou být nastaveny do režimu Master, nebo Slave, podle toho jsou-li zdrojem hodinových impulzů, tedy řídí-li komunikaci (což zpravidla řídí jen MCU). Zpravidla se nevyhneme i dalšímu doplňujícímu pomocnému vodiči CS (chip select) - ten "adresuje" konkrétní periferii na sběrnici (může to být jakýkoliv z volných pinů MCU). Zde doplňuji, že karta používá tzv. režim 0,0 a prozatím frekvenci 2MHz. Při taktování procesoru externím krystalovým oscilátorem 16MHz (a děličky kmitočtu pro SPI :8) jsem dosáhl času čtení(zápisu)cca 3,5ms.

Komunikační protokol je relativně jednoduchý, MCU spouští taktování přenosu a posílá specifikovaný řetězec několika bajtů příkazu (nazývaný CMDxx rámec - kde xx je číslo příkazu) jehož součástí může být argument - například adresa dat. MCU poté dále taktuje práci karty a čeká na přijetí jistého "start bajtu", za kterým následuje nějaký response bajt (označované Rx) a pak nejčastěji čtený blok dat (nastaven prakticky vždy na 512B), či posíláme vlastní data k zápisu, infomace o nastavení karty. Tento typ komunikace se někde nazývá Comand-Response.

Soubor:Comand Response.png

Praktická práce je samozřejmě o něco složitější, je ale velice dobře popsána na internetu, ale i v oficiální dostupné specifikaci. Nechceme-li se jí do podrobností zabývat, šáhneme po některé z mnoha hotových knihoven - viz. odkazy výše. Pro svoji bakalářskou práci jsem prošel takových knihoven několik. Povětšinou ovšem byl jejich kód dosti neprůhledný, težko aplikovatelný. Proto jsem se rozhodl využít a drobně přepracovat několik základních kódů, nejvíce jich je použito z asi nejpropracovanější knihovny zde: ELM-CHAN. Přepracovaný a česky okomentovaný kód jsem napsal v prostředí C překladače CodeVision! Budete-li chtít knihovnu použít pro jiný překladač, stačí zpravidla jen přejmenovat názvy datových typů. Před použitím si prosím pročtěte aplikační poznámky, přímo v knihovním souboru lib. . Knihovní i hlavičkový soubor naleznete brzy zde !


Osobní nástroje