čtvrtek 23. srpna 2012

Kamera TCM8230MD


Kameře na letounu bylo věnováno několik málo řádků v předchozím příspěvku. Touto problematikou se dále zabývám a tak bych rád doplnil několik dalších informací.

Nejprve upřesním samotné zapojení kamery. Parametry modulu jsou nastavovány pomocí registrů dostupných po I2C sběrnici, tou je možné pouze kameru inicializovat (v požadovaném nastaví). Samotnou obrazovou informaci zprostředkovává 8 datových pinů a 4 řídící.

Pro chod kamery je nezbytně nutné připojení hodin (EXTCLK), které určují „frame rate“ ale současně musí být aktivní i při inicializaci kamery! V případě, že odešleme kameře požadavek na nastavení registru s absencí hodinového signálu, modul potvrdí (potvrzením je myšleno nastavení ACK bitu do „0“) pouze svojí adresu (0x3C) a adresu registru a tudíž i hodnotu, kterou chceme zapsat, nepotvrdí. Zbylé 3 řídící piny jsou výstupní a jedná se o hodinový výstup (DCLK), jehož frekvence je poloviční oproti EXTCLK a s náběžnou hranou pulzu se čte byte z DOUT0-DOUT7 (neplatí pro každý pulz)


Další dva výstupy (HD, VD) slouží jako příznaky nového řádku a nového obrázku. Frame rate, se tedy odvíjí od frekvence hodinového signálu.

Při testování bylo nastaveno EXTCL na 15MHz, což po připojení sondy osciloskopu způsobilo značné rušení I2C sběrnice, stačilo i připojení drátku s délkou jednotek centimetrů a data na I2C byla rušena. Tuto skutečnost píši jako varování pro ty, co ve svých aplikacích s tímto modulem budou navrhovat DPS.

STM32F103, ke kterému je kamera připojena má za úkol čtení obrazových dat, ale i jeho zpracování do podoby vektoru pohybu obrazu. Použití MCU nemá periferii pro připojení kamery, a aby stihl data přečíst i zpracovat, je třeba tyto data načítat pomocí DMA, které poskytne čas, pro zpracování.

DMA tedy „Direct Memory Access“ nám dovoluje přímý přístup do paměti z paměti, nebo nějaké periferie (a opačně) bez interakce samotného výkonného jádra procesoru. Samotný přenos dat je trigrován například těmito periferiemi:



Přenos bohužel nelze trigrovat externím přerušením, proto je zatím myšlenka triigeru postavena na timeru (TIM1_CH1 – připojený na DCLK), ten by měl pracovat v režimu input capture mode. V tomto režimu je pin timeru nastaven jako vstup, který dovoluje vyvolání přerušení či DMA request.


Žádné komentáře:

Okomentovat