|
![]() |
ISSN 1214-9675 Server vznikl za podpory Grantové agentury ČR. 20. ročník |
Témata
Doporučujeme
Kontakt
|
![]()
Vydáno dne 12. 11. 2009 (6705 přečtení) |
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
Tento web site byl vytvořen prostřednictvím phpRS - redakčního systému napsaného v PHP jazyce.
Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
nebo registrovanými ochrannými známkami příslušných vlastníků.