Čítačka SD kariet
... alebo, porozprávajte sa s SD kartou pomocou terminálového programu
Luhan Monat, 22.11.2010-01:08
Hneď na úvod si dovolím krátku poznámočku o obrázkoch. Oba obrázky zobrazujú zariadenie vo verzii 1, popis ako aj všetky prílohy sú už ku verzii 2.
HardvérZa jadro aplikácie bol pasovaný PIC16F819, pretože má hardvérovú podporu SPI rozhrania (SD karty zvyčajne komunikujú pomocou neho). Mikrokontrolér beží na 20MHz externom kryštále, čo znamená, že SPI zbernica je taktovaná frekvenciou 5MHz (rýchlosť menenia sa logických úrovní na vodiči SCK) a komunikácia prostredníctvom softvérovej sériovej linky je schopná dosiahnuť rýchlosť 115200 Baudov. Krátkym pohľadom na schému si môžete všimnúť jeden zo spôsobov ako prepojiť mikrokontrolér s napäťovými úrovňami 5V s SD kartou, ktorá je napájaná 3,3V napätím. Keď si všimnete napájaciu vetvu SD karty, vidíte že do série s napájacím napätím zariadenia je zapojená červená LED, ktorá zníži 5V napätie asi o 1,8V. Za LEDkou sa tak nachádza napätie 3,2V, ktoré je v odporúčanom rozsahu napájacieho napätia pre SD kartu. Napäťové úrovne signálov smerujúcich od mikrokontroléra ku SD karte sú upravené pomocou deliča napätia zloženého z dvoch rezistorov o veľkostiach 1k a 2k. Problémom je signál DO (data out - MISO) smerujúci od SD karty ku mikrokontroléru, pretože v SPI móde je na príslušné piny zaradený schmit-trigger obvod, ktorého prahová úroveň pre logickú jednotku je 3,5V. "Obvod", ktorý je zložený z napäťového deliča (rezistory R13 a R16) a diódy CR6 posúva úroveň napätia na dátovom výstupe SD karty o 0,6V vyššie, takže na pine SDI mikrokontroléra dostávame rozsah napätí 0,6V až 3,8V. Gýčové, ale funguje to.
Firmvér a komunikácia zariadenia s kartouHlavným problémom s firmvérom mikrokontroléra bola konfigurácia periférneho modulu SPI. Po nemalých tažkostiach, sa ako správne zdá byť nastavenie: SMP = 1, CKE = 1 a CKP = 1. Pre kompletné nastavenie registrov SSPCON a SSPSTAT nahliadnite do výpisu firmvéru, konkrétne do rutiny
sspinit. Programová rutina ktorou sa zapisujú dáta do karty, sa taktiež používa na ich čítanie z karty, pretože pri komunikácii prostredníctvom zbernice SPI sú čítanie a zapisovanie simultánne operácie.
Celá komunikácia prebieha v ASCII kóde, takže budete potrebovať nejaký terminálový program. Po pripojení sa terminálového programu (rýchlosť 115200 Baudov, 1 stop bit, žiadna parita, bez riadenia toku) ku zariadeniu, sú k dispozícii nasledujúce príkazy, pričom označenie
ddd je
dekadická hodnota a označenie
xx je
hexadecimálna hodnota:
- D - "Zruší" vybranú kartu
- Zddd - Pošle ddd bytov taktovacieho signálu, myslí sa tým, že zariadenie vyšle ddd x 8 impulzov taktovacieho signálu
- W xx xx xx xx xx ... - Pošle sériu xx xx xx xx xx hexadecimálnych bytov
- Cdd ddddd - Pošle príkaz číslo dd obsahujúci adresu 512 x ddddd
- Xddd xx - Pošle ddd bytov, ktoré majú hexadecimálnu hodnotu xx
- Rddddd - Načíta ddddd bytov z karty
- Ctrl-C - Opätovne pošle posledný príkaz
Príkazy môžu byť v terminálovom programe kombinované za sebou, napríklad:
- C17 2 R520 - príkaz číslo 17 (prečítať sektor) od adresy 1024 (počiatočná adresa sektora 2), ktorý nasleduje príkaz prečítaj z karty 520 bytov
Všimnite si, že príkaz C generuje efektívnu adresu sektora násobením čísla 512. Taktiež sa ale používa na generovanie povinného CRC, ktoré je požadované iba pri použití príkazu 0 na vstup karty do režimu SPI. Potom sa už CRC nepožaduje pre žiadny nasledujúci príkaz. Ak chceme vyslať príkaz, ktorý potrebuje okrem adresy sektora aj nejaké špecifické parametre, je potrebné použiť príkaz W a všetky čísla zadať hexadecimálne. Konečná úloha tohto zariadenia má byť programátor/čítačka SD kariet. Zatiaľ je to ale iba prostriedok na overenie/vyskúšanie činnosti SD kariet od rôznych výrobcov.
Zdrojový kód, ako aj .hex súbor vhodný na priame nahranie do mikrokontroléra nájdete v prílohe, kde sa taktiež nachádza schéma, ukážka navrhnutej dosky plošných spojov a obrázok jej osadenia súčiastkami. Poznámka na záver: K ovládaniu a pochopeniu ako to vlastne celé funguje (ak si budete túto konštrukciu náhodou chcieť postaviť) budete potrebovať stiahnuť špecifikácie ku SD kartám (tipujem, že autor originálneho článku to zabudol spomenúť).
Zverejnené zo súhlasom autora.Homepage projektu: http://mondo-technology.com/sdcard.htmlPreklad:
Kiwwicek
tento článok je z mikroZONE
( https://www.mikrozone.sk/pluginy/content/content.php?content.87 )