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.
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.
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í
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).
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.
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.
[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