Záznamník dat na kartu SDHC

Autor: J. Čáp, P. Zahradník <(at)>, Pracoviště: České vysoké učení technické v Praze, FEL, Téma: Elektronika a audio, Vydáno dne: 12. 11. 2009

Článek popisuje řešení zařízení pro ukládání hodnot z 16 analogových vstupů a 4 digitálních (čítacích) vstupů na paměťovou kartu SDHC v reálném čase.


Abstract - Data Logger for SDHC Card
The paper describes solutions of device for data storage from 16 analog inputs and 4 digital (counting) inputs to the SDHC memory card in real time.

Tento příspěvek popisuje datový záznamník pro ukládání hodnot z 16 analogových vstupů a 4 digitálních (čítacích) vstupů na paměťovou kartu SDHC. Data ze vstupůjsou opatřena časovou značkou z obvodu reálného času a uložena na kartu. Zařízení je vybaveno obvodem pro detekci podpětí. Při výpadku napájecího napětí je zajištěno správné ukončení všech funkcí a uložení nasbíraných dat. Této funkčnosti je dosaženo využitím 256kbit FRAM, na kterou se data ukládají podstatně rychleji než na kartu SDHC. Obvody a součástky použité v návrhu jsou vybrány s ohledem na minimální příkon. Blokové schéma záznamníku je uvedeno na obr. 1.

zaznamnik1

Obr. 1 Blokové schéma záznamníku dat

Napájení datového záznamníku. Datový záznamník je napájen ze zdroje stejnosměrného napětí 5V nebo 12V. Napájecí napětí je přivedeno na vstupy stabilizátorů LM317 a LM2937 [1]. Dva stabilizátory jsou zvoleny s ohledem na zálohovanou a nezálohovanou napájecí větev. Použitím zálohovacího kondenzátoru lze při výpadku napájecího napětí data urychleně bezpečně uložit do paměti FRAM FM33256 [2] a zároveňukončit komunikaci s kartou tak, aby nedošlo ke ztrátě nasbíraných dat. Součástí bloku napájení je obvod detekce podpětí. Ten je realizován multifunkčním obvodem FM33256. Poslední částí bloku napájení je měnič 5V/12V. Tento obvod je využit pouze pokud je zařízení napájeno napětím 5V. Napětí 12V je potřebné pro napájení zobrazovací části displeje.

Analogové vstupy. Sbírání analogových dat z 16 analogových vstupů je realizováno součinností šestnáctivstupového multiplexeru MAX396 [3] a AD převodníku MAX1240 [3]. Multiplexer MAX396 je řízen čtyřmi adresovacími vodiči. Jeho výstup je přiveden na vstup 12-bitového A/D převodníku MAX1240 připojeného k mikroprocesoru přes rozhranní SPI.

Digitální vstupy. Digitální vstupy umožňují m.j. čítání impulzů ze čtyřč íslicových vstupů, např. otáčkoměrů. Jejich galvanické oddělení je realizováno MEMS oddělovačem ADUM1400 [4].

Blok reálného času (RTC). Zařízení je vybaveno RTC obvodem FM33256. Pro případ výpadku napájecího napětí slouží k jeho napěťovému zálohování baterie CR2032. Při napájení z baterie má RTC odběr kolem 1µA. Komunikace s RTC obvodem probíhá přes rozhraní SPI.

Blok nastavení. Datový záznamník je vybaven blokem osmi spínačů, které slouží k parametrizaci činnosti datového záznamníku. Spínače jsou připojeny k procesoru přes V/V expandér DS2408 [3].

Blok řízení. Dílčí bloky záznamníku jsou řízeny mikroprocesorem P8X32A [5]. Program je uložen v externí paměti EEPROM 24LC256 a po restartu procesoru přenesen do interní paměti RAM. Firmware zařízení lze aktualizovat pomocí čtyř programovacích vývodů. Využití V/V vývodů mikroprocesoru ukazuje tab. 1.

Vývod Funkce Připojené zařízení Vývod Funkce Připojené zařízení Funkce Připojené zařízení
0 CS MAX1240 16 SWITCH MAX4948
1 SCLK MAX1240 17 CON10 Čtečka karet
2 DOUT MAX1240 18 DAT0 SDCARD
3 PowEN displej 19 DAT1 SDCARD
4 CS FM33256 20 DAT2 SDCARD
5 SO FM33256 21 DAT3 SDCARD
6 SI FM33256 22 CMD SDCARD
7 SCLK FM33256 23 CLK SDCARD
8 A3 MAX396 24 VOA ADUM1400
9 A2 MAX396 25 VOB ADUM1400
10 A1 MAX396 26 VOC ADUM1400
11 A0 MAX396 27 VOD ADUM1400
12 I/O DS2408 28 SCL 24LC256 PFO FM33256
13 Data displej 29 SDA 24LC256
14 Clk displej 30 JP2 Programming Reset displej
15 D/C displej 31 JP2 Programming C/S displej

Tab. 1 Využití vývodů mikroprocesoru

Blok displeje. K záznamníku je připojen OLED displej Pictiva Calgary [6] s rozlišením 128x64 obrazových bodů a šestnácti úrovněmi jasu. Na displeji se zobrazuje stav zařízení popř. průběh některé ze snímaných veličin. Displej je k mikroprocesoru připojen přes sériové rozhraní pěti vodiči DATA, CLK, D/C, RESET, C/S.

Blok karty SDHC. Paměťová karta je k záznamníku připojena přes obvod MAX4948 [3] použitím konektoru Molex. Není počítáno s tím, že by byla karta ze zařízení běžně vyjímána, ale v případě potřeby (např. pro zvýšení kapacity karty) je to díky konektoru možné. Data se z karty SDHC odebírají upravenou čtečkou karet. Záznamník dat pozná, že je připojena externí čtečka, uloží poslední získaná data na kartu a pomocí obvodu MAX4948 přepne vývody karty na vývody čtečky. Ta potom ke kartě přistupuje tak, jako kdyby byla karta vložena přímo do čtečky.

Programové vybavení. Programové vybavení bylo vyvinuto jednak v jazyce SPIN a dále v jazyce symbolických adres. Řídící program je rozčleněn do několika samostatných souborů. Tyto soubory odpovídají obsluze jednotlivých hardwarových bloků datového záznamníku. Členění programu je patrné z obr. 2. Některé objekty jsou v mikroprocesoru vykonávány paralelně. Využití jader mikroprocesoru (COG) jednotlivými objekty je uvedeno v tab. 2.

zaznamnik2

Obr. 2. Struktura programu

Cog0 Cog1 Cog2 Cog3 Cog4 Cog5 Cog6 Cog7
main.spin sdbusasm.spin AD_conv digital.spin pictivaASM.spin x x x

Tab. 2 Využití jader (COG) při paralelním zpracování

zaznamnik3

Obr. 3. Vývojový diagram bloku main.spin

Blok main.spin. Toto je hlavní řídící blok celého zařízení. Jeho funkce spočívá v inicializaci jednotlivých bloků zařízení a v řízení jejich spolupráce (obr. 3). V tomto bloku je definováno pole o velikosti 8x512 bajtů do něhož se ukládají výstupy jednotlivých funkčních bloků záznamníku. Po naplnění je pole uloženo do karty SDHC. Součástí algoritmu v bloku main.spin je periodická kontrola stavu obvodu pro detekci podpětí a detekce přítomnost čtečky karty. Při poklesu napájecího napětíse načtená data uloží do paměti FRAM a nastaví se příslušné příznaky. Po připojení externí čtečky se nečeká na zaplnění datového pole. Neúplné datové pole se uloží na kartu. Po restartu zařízení se podle příznaků zjistí zda byl zapsán celý datový blok. Pokud ne, načte se obsah neúplného datového bloku a pokračuje se v jeho zaplňování.

Blok ovládání displeje. Ovládání displeje je řešeno procedurami pictiva.spin a pictivaASM.spin. V těchto souborech jsou potřebné procedury pro zobrazování dat na displeji. Jednotlivé body displeje odpovídají bitům v poli dispmatrix o rozměrech 16 x 64. V tomto poli se uchovává informace o tom, zda je obrazový bod rozsvícen/zhasnut (1/0). Pro aktualizaci displeje je toto pole je periodicky posíláno na displej. Při zavolání procedury start se provede inicializace displeje.

SD Bus protokol. Komunikace host-karta SDHC probíhá přes SD Bus protokol ve formě command/response tokenů [7]. Host vždy posílá příkaz, karta vždy posílá odpoveď. Příkazy a odpovědi jsou odesílány a přijímány na CMD lince. V případě speciálních příkazů jsou zároveň s odpověďmi odeslanými přes CMD linku odeslána také data po DAT linkách. Veškerá komunikace na SD Bus sběrnici je chráněna pomocí CRC. Command je definován pevně danou strukturou a jeho délka je čtyřicet osm bitů včetně 7bitů CRC.

Pozice bitu 47 46 45:40 39:8 7:1 0
Počet bitů1 1 6 32 7 1
Hodnota "0" "1" xxxxxx x..x xxxxxxx "1"
Start Transmitter CMD Obsah info End
Popis bit bit index field CRC7 bit

Tab. 3. Význam bitů v příkazu (Command token)

U response tokenů rozlišujeme čtyři typy (obr. 4). Typy R1, R3 a R6 mají všechny shodnou délku čtyřicet osm bitů, ale jejich obsah se liší v závislosti na commandu, kterému odpovídají. Typ R2 má délku sto třicet šest bitůa obsahuje informace o CID nebo o CSD registru karty. Odpovědi jsou také chráněny sedmibitovým CRC.

R1, R3, R6:

0 0 OBSAH 1
délka 48 bitů

R2:

0 0 OBSAH = CID, CSD CRC 1
délka 136 bitů

Obr. 4 Odpovědi (Response token)

Data odesílaná z nebo přijímaná na DAT linkách jsou přenášena v blocích o velikosti 512 bytů a zabezpečena 16 bity CRC. Data je možné přenášet po jedné nebo po čtyřech DAT linkách paralelně (obr. 5).

zaznamnik4

Obr. 5 Formát dat (Data Packet)

V datovém záznamníku se v procedurách pro čtení a zápis využívá přenosu po čtyřech paralelních DAT linkách (Wide Bus). V tomto případěse počítá CRC pro každou linku zvlášť. Data jsou totiž rozdělena po bitech mezi jednotlivé linky (obr. 5). Jádro kódu tvoří soubory FAT32.spin, SDBUSASM.spin a SDBUSFUNC.spin. Soubor SDBUSASM.spin je stěžejní pro komunikaci s kartou v SDBUS módu. Pro komunikaci s kartou jsou nejdůležitější procedury readblock a writeblock. Komunikace s kartou se spustí zavoláním procedury start s parametrem pozice prvního pinu karty. Tato procedura provede inicializaci karty a spustí v novém jádru COG smyčku, která neustále čte synchronizační proměnnou a v případějejího nastavení spustí požadovaný příkaz v ASM. Tímto způsobem sice zatížíme natrvalo jeden COG, ale odezva na volání procedury je prakticky okamžitá a nadále se nezdržujeme čekáním na start nového COG. Pro inicializaci karty se volá procedura start ze souboru SDBUSFUNC.spin. Této proceduře se předávají informace, na kterých vývodech procesoru je paměťová karta připojena. Tím se provede inicializace karty a dále se již využívají jen funkce readblock a writeblock ze souboru SDBUSASM.spin. V proceduře je implementován výpočet šestnácti bitového CRC pro zabezpečení odesílaných dat. Pro ukládání nasbíraných dat se využívá zápisu osmi bloků najednou, což odpovídá velikosti jednoho clusteru ve FAT32. To zjednodušuje procedury pro aktualizaci systému souborů. Jako systém souborů byl zvolen FAT32. Vzhledem k omezené velikosti souboru v FAT32 se na paměťovou kartu ukládá více souborů. Např. v případěplného využití 16GB karty SDHC bude na kartě 8 souborů o velikosti 2GB a dále soubor ENDMARK.BIN. Tento soubor označuje konec karty, má nulovou velikost a je skrytý. Je vytvářen procedurou format.

Realizovaný záznamník dat je demonstrován na obr. 6.

zaznamnik5

Obr. 6 Funkční vzorek - záznamník dat

Tato práce byla podpořena výzkumným záměrem Výzkum perspektivních informačních a komunikačních technologií MSM6840770014.

Literatura:

[1] LM2937, http://www.national.com
[2] FM33256, www.ramtron.com
[3] MAX396, MAX1240, DS2408, MAX4948, www.maxim-ic.com
[4] ADUM1400, www.analog.com
[5] P8X32A, www.parallax.com
[6] OLED displej Pictiva, www.osram-os.com
[7] Specifikace SD card, http://www.sdcard.org