VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Bakalářský studijní obor ELEKTRONIKA A SDĚLOVACÍ TECHNIKA
BAKALÁŘSKÁ PRÁCE
Brno 2006
Zdeněk HLAVICA
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav radioelektroniky
Realizace snímače obrazu CCD, řízení a přenos dat pomocí jednočipového mikroprocesoru bakalářská práce
Studijní obor:
Elektronika a sdělovací technika
Jméno studenta:
Zdeněk HLAVICA
Vedoucí bakalářské práce:
Ing. Tomáš URBANEC
BRNO UNIVERSITY OF TECHNOLOGY Faculty of Electrical Engineering and Communication Institute of Radio Electronics
CCD Sensor Realization, Commanding and Data Handling with Microprocessor Bachelor Thesis
Study Specialization:
Electronics and Communication
Author:
Zdeněk HLAVICA
Supervisor:
Ing. Tomáš Urbanec
ABSTRACT The aim of Bachelor thesis is using CMOS image sensor ADCS-2121 Agilent company. Producer of this sensor recommends a special support chip, which can control all function of sensor. The aim of this thesis is to replace the special chip by simple microcontroller. The image sensor has too fast data stream. This fast data stream is not possible to process by simple microcontroller. This problem is resolved by RAM memory. In this memory is stored image data from sensor. The microcontroller then transfers the data from RAM to other device. This thesis consists of these parts: module with image sensor ADCS-2121, supporting circuit with microcontroller from 8051 family, control program for supporting circuit, control application for personal computer. The result of this thesis is functional device, which allows taking images and loading images to personal computer.
Prohlášení Prohlašuji, že svou bakalářskou práci na téma „Realizace snímače obrazu CCD, řízení a přenos dat pomocí jednočipového mikroprocesoru“ jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou všechny uvedeny v seznamu literatury na konci práce.
V Brně dne ...............
............................................ (podpis autora)
Poděkování Děkuji vedoucímu bakalářské práce Ing. Tomáši Urbancovi za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce.
V Brně dne ...............
............................................ (podpis autora)
Semestrální projekt 2
Obsah 1
Úvod................................................................................................................................... 1
2
Digitální obrazové snímače.............................................................................................. 2
3
Základní parametry obrazového snímače ADCS-2121 ................................................ 2
4
Struktura snímače ADCS-2121....................................................................................... 3
5
Charakteristika ADCS-2121 ........................................................................................... 4 5.1
Napájení snímače ....................................................................................................... 4
5.2
Hodinový signál.......................................................................................................... 5
5.3
Reset ........................................................................................................................... 5
5.4
Řízení snímače hostujícím zařízením.......................................................................... 5
5.5
Výstup dat z A/D převodníku snímače........................................................................ 6
5.6
Schématická značka ADCS-2121 ............................................................................... 6
5.7
Nejdůležitější vývody snímače .................................................................................... 7
5.8
Registrová sada ADCS-2121...................................................................................... 8
6
Návrh obvodového zapojení pro mikropočítač řídící snímač obrazu ......................... 9
7
Použité integrované obvody, součástky........................................................................ 12 7.1 Paměť SRAM K6T4008V1C ..................................................................................... 12 7.1.1 Základní parametry K6T4008V1C: ................................................................. 12 7.1.2 Zapojení vývodů K6T4008V1C....................................................................... 13 7.1.3 Čtení dat z paměti............................................................................................. 13 7.1.4 Zápis dat do paměti .......................................................................................... 14 7.2 Adresní čítač - binární čítač 74HC4040 .................................................................. 15 7.2.1 Základní parametry 74HC4040........................................................................ 15 7.2.2 Zapojení vývodů a řídící signály 74HC4040 ................................................... 15 7.3 Oddělovací obvod – paralelní registr 74HC573...................................................... 16 7.3.1 Základní parametry 74HC573.......................................................................... 16 7.3.2 Zapojení vývodů a řídící signály 74HC573 ..................................................... 16 7.4 Invertor a Multiplexer - 4 x 2-vstupový NAND 74HC00 ........................................ 16 7.4.1 Základní parametry obvodu 74HC00 ............................................................... 17 7.4.2 Zapojení vývodů 74HC00 ................................................................................ 17 7.4.3 Multiplexer ....................................................................................................... 17 7.5 Řídící mikrokontrolér ............................................................................................... 18 7.5.1 Základní rysy a parametry jednočipového mikropočítače AT89LS51 ............ 18 7.5.2 Zapojení vývodů AT89LS51............................................................................ 19 7.6 Převodník napěťových úrovní MAX232 ................................................................... 19 7.6.1 Základní parametry MAX232 .......................................................................... 20 7.6.2 Zapojení doporučené výrobcem ....................................................................... 20 7.6.3 Zapojení vývodů MAX232 .............................................................................. 20
Semestrální projekt 2 8
Modul se snímačem obrazu ADCS-2121...................................................................... 21
9
Schéma zapojení obvodu pro přenos dat ..................................................................... 24
10
Deska s plošnými spoji ............................................................................................... 26
11
Komunikace s ADCS-2121 – synchronní mód......................................................... 29 11.1
Časování, zahájení a ukončení přenosu................................................................... 29
11.2
Rychlostní limity sběrnice I2C .................................................................................. 30
11.3
Organizace přenosu bitů v paketech ........................................................................ 31
11.4
Formáty paketů ........................................................................................................ 32
11.5
Přenos dat do snímače – zápis do registrů .............................................................. 33
11.6
Přenos dat ze snímače – čtení registrů..................................................................... 33
11.7
Časové průběhy komunikace.................................................................................... 34
12
Programové vybavení pro řídící mikrokontrolér.................................................... 36
12.1 Důležité registry snímače obrazu ADCS-2121......................................................... 36 12.1.1 STATUS (01H) ................................................................................................ 36 12.1.2 CONTROL (1CH)............................................................................................ 36 12.1.3 CONFIG (1BH)................................................................................................ 36 12.1.4 FWROW (0AH), FWCOL (0BH), LWROW (0CH), LWCOL (0DH) ........... 37 12.1.5 ERECPGA (0FH), EROCPGA (10H), ORECPGA (11H), OROCPGA (12H)38 12.1.6 ROWEXPL (13H), ROWEXPH (14H), SROWEXP (15H) ............................ 39 12.2
Algoritmus programu řídícího mikrokontroléru ...................................................... 39
12.3 Detailní popis programu pro řídící mikrokontrolér................................................. 41 12.3.1 Význam a přiřazení názvů registrům a vývodům mikrokontroléru ................. 41 12.3.2 Počáteční inicializace ....................................................................................... 42 12.3.3 Hlavní smyčka programu ................................................................................. 43 12.3.4 Podprogram časového zpoždění - sdelay ......................................................... 44 12.3.5 Podprogram pro reset snímače hard_reset ....................................................... 44 12.3.6 Podprogram pro nulování adresního čítače reset_count .................................. 45 12.3.7 Podprogram pro inkrementování adresního čítače inc_c ................................. 45 12.3.8 Podprogram pro nastavení časovače pro time-out sériového kanálu time_out 45 12.3.9 Podprogram pro obsluhu time-outu sériového kanálu itime_out ..................... 46 12.3.10 Podprogramy pro generování hodinového signálu sběrnice I2C, generování Start_bitu a Stop_bitu....................................................................................................... 46 12.3.11 Podprogram pro vyslání jednoho bytu na sběrnici I2C tr_byte .................... 47 12.3.12 Podprogram pro přečtení bytu ze snímače po sběrnici I2C rd_byte ............. 47 12.3.13 Podprogram pro zapsání do jednoho registru snímače swrite...................... 48 12.3.14 Podprogram pro přečtení jednoho registru snímače sread ........................... 49 12.3.15 Podprogram pro počáteční inicializaci registrů snímače sinit...................... 50 12.3.16 Podprogram pro obsluhu přerušení od sériového kanálu iscom .................. 51 12.3.17 Podprogram set_param................................................................................. 52 12.3.18 Podprogram pro spuštění snímacího procesu flash ...................................... 52 12.3.19 Podprogram wait_photo ............................................................................... 53 13
Řídící aplikace pro PC ............................................................................................... 53
Semestrální projekt 2 14
Příklad snímku ........................................................................................................... 54
15
Další možnosti zjednodušení obvodu........................................................................ 55
16
Závěr............................................................................................................................ 57
17
Použitá literatura........................................................................................................ 58
Seznam obrázků Obr. 1 Obrazový snímač ADCS-2121........................................................................................ 2 Obr. 2 Rozmístění vývodů ......................................................................................................... 3 Obr. 3 Struktura ADCS-2121..................................................................................................... 3 Obr. 4 Struktura snímače Micron MT9V011 ............................................................................. 4 Obr. 5 Časový průběh resetu snímače ADCS-2121................................................................... 5 Obr. 6 Časování výstupu obrazových dat................................................................................... 6 Obr. 7 Schématická značka ADCS-2121 ................................................................................... 6 Obr. 8 Způsob zapojení ADCS-2121 ......................................................................................... 9 Obr. 9 Principiální blokové schéma ......................................................................................... 10 Obr. 10 Časování přenosu do paměti ....................................................................................... 10 Obr. 11 Blokové schéma obvodu pro zápis do paměti............................................................. 11 Obr. 12 Podrobné blokové schéma připojení řídícího mikropočítače..................................... 11 Obr. 13 Zapojení vývodů paměti K6T4008V1C...................................................................... 13 Obr. 14 Časové průběhy signálů při čtení dat z paměti, /WE = Log 1 .................................... 13 Obr. 15 Průběhy signálů při zápisu do paměti ........................................................................ 14 Obr. 16 Zapojení vývodů čítače 74HC4040............................................................................. 15 Obr. 17 Zapojení vývodů 74HC573......................................................................................... 16 Obr. 18 Zapojení vývodů 74HC00........................................................................................... 17 Obr. 19 Zapojení multiplexeru z členů NAND ........................................................................ 17 Obr. 20 Blokové schéma AT89LS51 ....................................................................................... 18 Obr. 21 Zapojení vývodů AT89LS51 ...................................................................................... 19 Obr. 22 Doporučené zapojení obvodu MAX232 ..................................................................... 20 Obr. 23 Zapojení vývodů MAX232 ......................................................................................... 20 Obr. 24 ADCS-2121, vlevo snímací strana.............................................................................. 21 Obr. 25 Schéma zapojení modulu snímače ADCS-2121 ......................................................... 22 Obr. 26 Deska s plošnými spoji modulu (29,2 x 50,0) a její osazovací nákresy, vlevo strana součástek, vpravo spodní strana ....................................................................................... 22 Obr. 27 Funkce jednotlivých vývodů konektorových lišt ........................................................ 23 Obr. 28 Pohledy na hotový modul ........................................................................................... 23 Obr. 29 Schéma zapojení obvodu ............................................................................................ 25 Obr. 30 Realizace obvodu na nepájivém kontaktním poli ....................................................... 26 Obr. 31 Deska s plošnými spoji obvodu 1:1 - strana spojů (spodní) ....................................... 27 Obr. 32 Deska s plošnými spoji obvodu 1:1 - strana součástek............................................... 27 Obr. 33 Osazení součástek na desce s plošnými spoji (1,5 : 1)................................................ 28 Obr. 34 Časování synchronního přenosu řídící sběrnice snímače ........................................... 29 Obr. 35 Časování signálů SCLK a SDATA ............................................................................. 30 Obr. 36 Časování Start bitu a Stop bitu synchronní komunikace ............................................ 31 Obr. 37 Paket vysílaný z mastera do snímače .......................................................................... 31 Obr. 38 Paket vysílaný ze snímače do mastera ........................................................................ 31
Semestrální projekt 2 Obr. 39 Časové průběhy komunikace (vlevo zápis, vpravo čtení)........................................... 35 Obr. 40 Rozdělení snímací plochy ........................................................................................... 38 Obr. 41 Algoritmus programu pro řídící mikrokontrolér......................................................... 40 Obr. 42 Vývojový diagram podprogramu sdelay..................................................................... 44 Obr. 43 Vývojový diagram podprogramu hard_reset .............................................................. 45 Obr. 44 Vývojový diagram pro uložení dat do registru snímače ............................................. 48 Obr. 45 Vývojový diagram pro přečtení jednoho registru snímače ......................................... 49 Obr. 46 Pomocná aplikace Downloader ADCS-2121.............................................................. 54 Obr. 47 Příklad pořízeného snímku.......................................................................................... 55 Obr. 48 Blokové schéma obvodu s použitím sériové paměti................................................... 55
Seznam tabulek Tab. Tab. Tab. Tab. Tab. Tab. Tab. Tab. Tab. Tab. Tab. Tab.
1 Základní parametry ADCS-2121 ................................................................................... 3 2 Registrová sada ADCS-2121 ......................................................................................... 8 3 Důležité doby při čtení dat z paměti ............................................................................ 14 4 Důležité doby při zápisu dat do paměti........................................................................ 14 5 Funkční tabulka řídících signálů 74HC4040 ............................................................... 15 6 Pravdivostní tabulka multiplexeru ............................................................................... 17 7 Minimální trvání signálu SCLK................................................................................... 30 8 Formáty paketů ............................................................................................................ 32 9 Zápis do dvou registrů snímače ................................................................................... 33 10 Přečtení jednoho registru snímače ............................................................................. 34 11 Nastavení přenosové rychlosti sériového kanálu UART ........................................... 43 12 Pořadí a význam bytů v řídícím paketu ..................................................................... 52
Bakalářská práce
1 Úvod Bakalářská práce se zabývá obrazovým snímačem CMOS ADCS-2121 firmy Agilent. Cílem je navrhnout obvodové zapojení pro řídící mikroprocesor, které bude schopno zcela ovládat snímač obrazu a umožní přenos obrazových dat do jiného hostujícího zařízení. Je požadováno pořizování jednotlivých snímků, nikoli video režim. Obvodové řešení podle výrobce obvodu spočívá v použití speciálního a hardwarově přizpůsobeného obvodu připojeného ke snímači, který podporuje všechny potřebné funkce pro přenos dat včetně rozhranní USB pro přenos do osobního počítače. V této práci není však cílem použít tento podpůrný obvod, ale pokusit se o řešení sestávající z diskrétních součástek, řízené běžným jednočipovým mikropočítačem. Realizace obvodového zapojení je možná různými způsoby na základě různých hardwarových prostředků. Cílem je pokusit se o co největší minimalizaci počtu součástek na základě vlastností a parametrů obrazového snímače ADCS-2121. Dalším úkolem je navrhnout potřebné programové vybavení pro řídící mikroprocesor, které umožní realizovat všechny řídící funkce a požadované datové přenosy. Dále realizovat modul, obsahující snímač obrazu s řešením jeho napájecích obvodů, pomocí kterého bude možné experimentálně sestavit navržený obvod a vyzkoušet přenosy dat do jiného zařízení, např. do osobního počítače a ověřit tak jeho funkci. Dále navrhnout desku plošných spojů pro sestavení funkčního vzorku.
1
Bakalářská práce
2 Digitální obrazové snímače Každý digitální fotoaparát nebo kamera používá ke snímání obrazu speciální součástky - snímače CCD nebo CMOS. Obě technologie se zásadně liší, lepší kvality zatím dosahují snímače CCD. Dnes již CMOS snímače dosahují kvality levnějších CCD, a tak snímače CMOS pomalu CCD vytlačují, zejména díky nižší ceně, což je dáno levnou technologií výroby. Tyto CMOS snímače se již osazují i do špičkových digitálních fotoaparátů, zatímco levnější CMOS snímače horší kvality jsou ideální např. do průmyslových kamer. Snímače typu CMOS (Complementary Metal Oxid Semiconductor) využívají polovodičové součástky řízené elektrickým polem a k provozu jim stačí jen jedno napájecí napětí. Navíc je jejich technologie výroby poměrně laciná, protože se podobně vyrábí většina integrovaných obvodů. Moderní CMOS už generují snímky srovnatelné s levnějšími CCD a lze čekat další vývoj. CCD prvky jsou doprovázeny dalšími čipy. CMOS umožňují integraci specializovaných čipů, například ke stabilizaci nebo kompresi obrazu. Nevýhodou dosavadních CMOS je jejich malá citlivost na světlo. Je to dáno tím, že obvody omezující šum jsou uvnitř buněk. Nedostatek se řeší přidáním miniaturních čoček ke každé buňce a další miniaturizací kompenzačních obvodů. Snímače CMOS se dělí na dva druhy. Prvním jsou tzv. pasivní CMOS (PPS - Passive Pixel Sensors), které generují elektrický náboj úměrný energii dopadajícího svazku světelných paprsků. Náboj pak jde přes zesilovač do A/D převodníku, stejně jako u CCD. V praxi však pasivní CMOS dávají díky šumu špatný obraz. Druhým typem jsou aktivní CMOS (APS Active Pixel Sensors), u nichž je každý světlocitlivý element doplněn analytickým obvodem, který měří šum a eliminuje ho.
3 Základní parametry obrazového snímače ADCS-2121 ADCS-2121 je aktivní CMOS černobílý obrazový snímač s rozlišením VGA (video graphics adapter) 640x480 pixelů s digitálním datovým výstupem, který je produktem firmy Agilent [1]. Vyznačuje se dobrou kvalitou obrazu s malým šumem při docela nízké spotřebě viz tab. 1. Snímač je navržen pro video aplikace (průmyslové kamery, kamery k PC apod.) nebo pro snímání statických obrazů. Snímač má velkou citlivost a výborné anti-bloomingové vlastnosti. Snímač vyžaduje pouze jednoduché napájecí napětí. Je zapouzdřen do pouzdra CLCC32, rozmístění vývodů na pouzdru CLCC32 je na obr. 1.
Obr. 1 Obrazový snímač ADCS-2121
2
Bakalářská práce Tab. 1 Základní parametry ADCS-2121 Maximální obrazové rozlišení 640x480 pixelů Velikost pixelu 7,4x7,4um Maximální hodinová frekvence 25MHz Max. počet snímků za vteřinu 15 A/D převodník 10-bit Efektivní dynamický rozsah 65dB Počet kroků prog. zesilovače 1-40 Faktor plnění 42% Napájecí napětí 3,3V ,-5%/+10% Příkon (provozní / klidový) 150mW/150µW Optický formát 1/3" Provozní teplota -5° až +65° Pouzdro čipu CLCC32
Obr. 2 Rozmístění vývodů
4 Struktura snímače ADCS-2121 Snímač ADCS-2121 se skládá ze čtyř hlavních bloků, viz obr. 3: fotocitlivé pole – soustava fotocitlivých (aktivních) CMOS buněk s efektivním rozlišením VGA (640x480 pixelů), programovatelný zesilovač – zesiluje analogový signál z jednotlivých buněk snímacího pole a tím umožňuje korigovat citlivost snímače, ve skutečnosti snímač obsahuje čtyři tyto zesilovače, každý pro jinou část fotocitlivého pole a každý zvlášť je možné nastavit na jinou hodnotu zesílení viz dále, A/D převodník – převádí analogovou informaci ze snímacího pole do digitální podoby, maximálně umožňuje deseti bitový převod, časovací a řídící blok snímače – obstarává komunikaci s okolím snímače, řídí proces snímání a veškeré časování snímače, včetně digitálního výstupu dat.
Obr. 3 Struktura ADCS-2121 Obraz je snímán fotocitlivým polem s obrazovým rozlišením VGA. Napětí z jednotlivých fotocitlivých buněk jsou zesílena zesilovačem s programovatelným zesílením, kterým je možné zvýšit citlivost snímače. Programovatelný zesilovač umožňuje nastavit zesílení v rozsahu 1 až 40, výrobce však nedoporučuje používat vyšší zesílení než 10 z důvodu zhoršení šumových parametrů a tím zhoršení kvality snímku. Napětí ze zesilovače 3
Bakalářská práce jsou dále digitalizována A/D převodníkem a jdou na výstupní datovou sběrnici. K nastavení parametrů a časování procesu snímání (expozice), zesilovače, A/D převodníku a výstupního datového toku slouží časovací a řídící obvod. Ten obsahuje komunikační sběrnici (lze nastavit synchronní mód – standard I2C nebo asynchronní mód - UART), která umožňuje ovládat snímač obrazu hostitelským zařízením, tedy nastavovat parametry snímače, spouštět jeho vnitřní procesy a zjišťovat vnitřní stavy. Blok časování je taktován externím hodinovým signálem o frekvenci až 25MHz jak je uvedeno v tab. 1. Z téhož bloku vycházejí synchronizační signály přenosu obrazových dat. Tato vnitřní koncepce je společná nejenom pro všechny obrazové snímače firmy Agilent, ale také snímače jiných světových výrobců (např. ST Microelectronics, OmniVision Technologies, National Semiconductor, Micron, Eastman Kodak Company, Hynix Semiconductor, ElecVision, FillFactory). Pro ukázku uvádím na obr. 4 strukturu snímače Micron MT9V011, který rovněž patří do skupiny snímačů s obrazovým rozlišením VGA.
Obr. 4 Struktura snímače Micron MT9V011 Na obr. 4 lze nalézt všechny funkční bloky, které má i snímač Agilent ADCS-2121, tedy fotocitlivé pole, analogové zpracování (např. zesilovače), A/D převodník, blok řízení a časování. Ze snímače vychází datová sběrnice se synchronizačními signály a synchronní sériová řídící sběrnice. Externí taktovací hodinový signál není na obrázku zakreslen.
5 Charakteristika ADCS-2121 5.1 Napájení snímače Snímač vyžaduje pouze jediné napájecí napětí 3,3V. Využívá dvou zdrojů napájení – analogové a digitální – které musí být od sebe odděleny. Šum v analogové časti způsobí zhoršení kvality obrazu. Analogová a digitální zem by měla být připojená do jednoho bodu. Analogové napájení Vdd a analogová zem musí být odděleny od digitálního napájení Vdd a
4
Bakalářská práce digitální země. Zdroje rušení, jiné integrované obvody ani zdroje tepla by neměly být umístěny za snímačem, čímž se redukuje šum v obraze.
5.2 Hodinový signál Snímač vyžaduje externí hodinový signál se střídou 50%. Pro ADCS-2121 je maximální frekvence hodinového signálu fclock = 25MHz. Na frekvenci hodinového signálu jsou závislé všechny pochody ve snímači (rychlost, doba expozice). Při fclock = 25MHz snímač dosáhne patnácti snímků za sekundu.
5.3 Reset Před započetím komunikace se snímačem (po zapnutí) musí být pro jeho správnou funkci proveden reset pomocí vývodu nRST_nSTBY. Signál reset musí být dlouhý nejméně 40 cyklů hodinového signálu snímače, viz obr. 5.
Obr. 5 Časový průběh resetu snímače ADCS-2121
5.4 Řízení snímače hostujícím zařízením ADCS-2121 je ovládán přes sériovou sběrnici, která může být konfigurována jako plně duplexní asynchronní (výchozí přenosová rychlost 9600 baudů), nebo jako synchronní (kompatibilní s I2C). Sériová sběrnice slouží k zapisování a nastavování speciálních registrů snímače, čímž se snímač ovládá. V těchto registrech je možno nastavovat např. souřadnice viditelného okna, expoziční časy, zesílení programovatelného zesilovače (zesiluje analogový signál z fotocitlivých buněk před A/D konverzí), výstupní formát (počet bitů), nastavení jednotlivých synchronizačních signálů atd.
5
Bakalářská práce
5.5 Výstup dat z A/D převodníku snímače Snímač je vybaven paralelním výstupem dat z A/D převodníku. Tento výstup dat může být až 10-bitový. Data jsou na výstupu připravena pokud je vybaven signál DRDY. Při vysílání dat na výstup se snímač chová jako master, tedy přenos řídí sám. Jakmile je nastaven RUN bit (CONTROL registr), hostující zařízení musí být připraveno převzít data. Snímač lze uvést do módu sériového výstupu dat z A/D převodníku. V módu sériového výstupu dat se využívají jen bity D0 a D1, které tvoří synchronní sériovou linku. Přenos dat ze snímače je synchronizován třemi signály (tři výstupní vývody): - DRDY : je vybaven, jsou-li na výstupní sběrnici připravena data - nROW : je vybaven, je-li dosaženo konce řádku - nFRAME_nSYNC : je vybaven, je-li dosaženo posledního řádku snímku
Obr. 6 Časování výstupu obrazových dat Na obr. 6 jsou znázorněny časové průběhy při vysílání dat snímačem při hodnotách registrů ICTRL a ITMG po resetu snímače. CLK je hodinový signál snímače a DRDY je výstupní datový synchronizační signál.
5.6 Schématická značka ADCS-2121
Obr. 7 Schématická značka ADCS-2121
6
Bakalářská práce
5.7 Nejdůležitější vývody snímače V kulatých závorkách je číslo vývodu na pouzdru snímače (názvy totožné se schématickou značkou ve schématech). IMODE0 (8), IMODE1 (7)
- slouží pro nastavení módu řídící sběrnice snímače [00] = synchronní sériová linka (kompatibilní s I2C) SCLK_RxD - hodinový signál (vstup) SD_TxD - sériový výstup a vstup dat [01] = asynchronní sériový kanál (UART) SCLK_RxD - sériový vstup dat SD_TxD - sériový výstup dat
CLK
AN_GND1 (7), AN_GND2 (22) AN_GND3 (15) AN_VDD1 (8), AN_VDD2 (23) AN_VDD3 (16)
- vstup pro hodinový signál snímače, maximální frekvence je 25MHz, střída 50%, z tohoto signálu jsou odvozeny časy všech procesů ve snímači - zemnící vývody analogových částí snímače - napájecí vývody analogových částí snímače (3,3V – 5%/+10%)
DIG_GND1 (6), DIG_GND2 (32) DIG_GND3 (25) - zemnící vývody digitálních částí snímače DIG_VDD1 (5), DIG_VDD2 (31) DIG_VDD3 (24) - napájecí vývody digitálních částí snímače (3,3V – 5%/+10%) SCLK_RxD (17)
SD_TxD (18)
D0 (4), D1 (3), D2 (2), D3 (1), D4 (30), D5 (29), D6 (28), D7 (21), D8 (20), D9 (19) nRST_nSTBY (13)
- řídící sběrnice synchronní režim asynchronní režim
- hodinový signál - sériový vstup dat
- řídící sběrnice synchronní režim asynchronní režim
- sériový výstup a vstup dat - sériový výstup dat
- výstupní paralelní sběrnice D0 – D9, v módu sériového výstupu dat jsou využity jen D0 a D1 - resetovací vývod snímače [1] = normální režim (chod) [0] = reset (minimálně 40 cyklů hodinového signálu snímače) 7
Bakalářská práce
DRDY (26)
- výstupní signál, je-li vybaven jsou platná data na paralelním výstupu
5.8 Registrová sada ADCS-2121 V tab. 2 je uveden seznam všech registrů snímače ADCS-2121 s jejich adresami, na které lze přistupovat přes řídící sběrnici. Těmito registry se řídí a nastavuje veškerá činnost obvodu. Do většiny registrů lze zapisovat i číst, některé bity v určitých registrech jsou rezervovány a nelze je nastavovat viz [1]. K těmto registrům má přístup hostitelské zařízení přes řídící sběrnici (I2C, UART). Z registru IDENT, což je identifikační registr obvodu, lze pouze číst. Většina registrů je vhodně nastavena již po resetu snímače (to se samozřejmě netýká registrů pro řízení expozice, nastavení zesílení zesilovačů a velikosti snímku – ty je nutno nastavit podle snímané scény, osvětlení atd.). Význam důležitých registrů bude popsán později. Tab. 2 Registrová sada ADCS-2121 Název registru Identifications Register Status Register Interrupt Mask Register Pad Control Register Pad Drive Control Register Interface Control Register Interface Timing Register Baud Fraction Register Baud Rate Register ADC Control Register First Window Row Register First Window Column Register Last Window Row Register Last Window Column Register Timing Control Register PGA Gain Register, EREC PGA Gain Register, EROC PGA Gain Register, OREC PGA Gain Register, OROC Row Exposure Low Register Row Exposure High Register Sub-Row Exposure Register Error Control Register Interface Timing 2 Register Interface Control 2 Register Horizontal Blank Register Vertical Blank Register Configuration Register Control Register
Označení IDENT STATUS IMASK PCTRL PDRV ICTRL ITMG BFRAC BRATE ADCCTRL FWROW FWCOL LWROW LWCOL TCTRL ERECPGA EROCPGA ORECPGA OROCPGA ROWEXPL ROWEXPH SROWEXP ERROR ITMG2 ICTRL2 HBLANK VBLANK CONFIG CONTROL
8
Adresa 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C
Bakalářská práce
6 Návrh obvodového zapojení pro mikropočítač řídící snímač obrazu Na obr. 8 je zapojení snímače ADCS-2121 a jeho způsob napojení na řídící obvod (Host system) specifikující výrobcem.
Obr. 8 Způsob zapojení ADCS-2121
Návrh obvodového zapojení pro přenos dat ze snímače pomocí jednočipového mikropočítače (mikrokontrolér) se odvíjí od jeho základních vlastností a požadavků na další distribuci dat. Pro nastavení krátkých expozičních dob je nutné použít co největší hodinový kmitočet snímače, tedy alespoň 10 až 25MHz. Z obr. 6 je patrné, že při hodinovém kmitočtu 25MHz bude výstupní datový tok přibližně 5MB za sekundu. Tato datová rychlost je příliš velká pro přímé zpracování běžným mikrokontrolérem, proto je nutné v obvodu použít paměť pro přechodné uložení obrazových dat. Takový obvod pak může být koncipován jak je naznačeno na obr. 9. Obvod řídí jednočipový mikropočítač (mikrokontrolér), který spustí proces snímání obrazu pomocí řídící sběrnice snímače a čeká na jeho ukončení. Snímač obrazu nahraje všechna obrazová data do paměti bez účasti mikrokontroléru. Poté může mikrokontrolér obrazová data vyčíst z paměti prakticky libovolně malou rychlostí podle požadavku hostitelského zařízení a vyslat je na svou asynchronní sběrnici UART, kterou by systém byl spojen s hostitelským zařízením.
9
Bakalářská práce
Obr. 9 Principiální blokové schéma Dalším krokem je návrh obvodu pomocí kterého může snímač obrazu nahrát samostatně obrazová data do paměti. Vzhledem k datovým rychlostem (až 5MB/s) je vhodné použít statickou paralelní paměť RAM (běžně doba přístupu 70ns). Protože tyto paměti jsou běžně dostupné jen s šířkou datové sběrnice osm bitů, pro jednoduchost se použije jen osmi bitový výstup dat ze snímače. Snímač obrazu ADCS-2121 vysílá data na svou datovou sběrnici od horního obrazového řádku postupně až po spodní řádek po jednotlivých obrazových bodech. Pro uložení obrazových dat tedy stačí jen synchronizační signál DRDY, který dává pokyn k převzetí dat z datové sběrnice snímače. Po vyčtení dat z paměti se mohou znovu uspořádat podle známých rozměrů snímku. Signál DRDY lze tedy použít přímo jako signál pro zápis do paměti SRAM. Dále je potřeba navrhnout vhodné adresní obvody pro adresaci paměti při ukládání dat do paměti snímačem. Přenosová rychlost dat ze snímače je příliš vysoká pro adresování paměti mikrokontrolérem, proto je vhodné použít dostatečně rychlý binární čítač. Tento adresní čítač je na počátku přenosu vynulován a po každém uloženém bytu do obrazové paměti se inkrementuje. Tuto inkrementaci může zajistit rovněž signál DRDY ze snímače, použije se opačná hrana než pro zápis do paměti, viz obr. 10.
Obr. 10 Časování přenosu do paměti Na obr. 10 je naznačen průběh synchronizačního signálu snímače DRDY, který je vybaven při platných datech na datové sběrnici snímače. Při první hraně (vzestupné) signálu DRDY se provede zápis do paměti, při druhé hraně (sestupné) se inkrementuje adresa paměti. Principiální schéma obvodu pro samostatný zápis obrazových dat snímačem do paměti podle těchto návrhů je na obr. 11.
10
Bakalářská práce
Obr. 11 Blokové schéma obvodu pro zápis do paměti Zapisovací vstup /WE pamětí SRAM bývá aktivní na sestupnou hranu, binární čítač na obr. 11 rovněž inkrementuje adresu sestupnou hranou (např. 74HC4040). Jak je patrné z obr.10 kladná hrana signálu DRDY, která je invertorem negována zapíše data z datové sběrnice do paměti. Následující sestupná hrana signálu DRDY inkrementuje čítač adresy.
Obr. 12 Podrobné blokové schéma připojení řídícího mikropočítače Nyní zbývá k obvodu na obr. 11 připojit řídící mikrokontrolér tak, aby mohl číst data z obrazové paměti a ovládat snímač obrazu. Aby mohl mikrokontrolér číst z paměti, musí mít přístup na hodinový vstup adresního čítače. Toho lze dosáhnou zařazením dvouvstupového multiplexeru, kterým může mikrokontrolér přepínat zdroj hodinového signálu pro adresní čítač. Blokové schéma kompletního obvodu je na obr. 12.
11
Bakalářská práce Protože výrobce ADCS-2121 blíže nespecifikuje parametry výstupní datové brány, je datová brána oddělená vhodným oddělovacím obvodem s třístavovým výstupem, který odstraní možnou kolizi výstupní brány snímače s datovou bránou paměti při jejím uvolnění pro čtení. Mikrokontrolér je spojen se snímačem obrazu přes řídící sběrnici I2C, ovládá i resetovací vývod snímače nRST_nSTBY. Dále je mikrokontrolér napojen na datovou sběrnici za účelem přenosu dat z paměti do hostitelského zařízení přes asynchronní sběrnici UART. Sběrnice UART je duplexní a slouží také k řízení obvodu hostitelským zařízením (nastavení požadovaným parametrů snímku). Pro možné spojení s osobním počítačem je vhodné obvod doplnit o převodník úrovní RS-232 pro napojení na sériový port COM. Princip zápisu dat do paměti snímačem odpovídá blokovému schématu na obr. 11, pouze vstup hodinového signálu adresního čítače je oddělen multiplexerem, který jej přepíná mezi signálem DRDY snímače (zápis dat do paměti) a signálem z mikrokontroléru (čtení dat z paměti). Nulování (reset) adresního čítače ovládá mikrokontrolér. Multiplexer je rovněž ovládán miktokontrolérem a stejným signálem je nutné přepínat přístup snímače a výstupu paměti na datovou sběrnici (signály /OE – uvedení výstupu do stavu vysoké impedance). Na obr. 12 není naznačen externí oscilátor pro generování hodinového kmitočtu pro ADCS-2121.
7 Použité integrované obvody, součástky Snímač obrazu ADCS-2121 je navržen pro napájecí napětí 3,3V. Protože je dostupná paměť SRAM také pro napájecí napětí 3,3V, celý obvod může používat toto napájecí napětí, čemuž musí odpovídat i výběr integrovaných obvodů a součástek pro jednotlivé bloky. • • • • • • •
Paměť SRAM Adresní čítač paměti Oddělovací obvod Invertory Multiplexer Mikrokontrolér Převodník úrovní RS-232
7.1 Paměť SRAM K6T4008V1C Snímač obrazu ADCS-2121 umožňuje pořizovat snímky o maximálním rozlišení 640 x 480 obrazových bodů, tedy celkem 307200 obrazových bodů. Byla zvolena paměť K6T4008V1C o kapacitě 512kB, do níž se vejde celý jeden snímek o maximálním rozlišení VGA.
7.1.1 Základní parametry K6T4008V1C: • • • •
Organizace: 512k x 8 Napájecí napětí: 3,0 – 3,6V Maximální proudový odběr: 30mA Klidový odběr: 15µA 12
Bakalářská práce • • •
Třístavový výstup Rychlost: 70ns Pouzdro: 32-TSOP2
7.1.2 Zapojení vývodů K6T4008V1C Paměť má standardní řídící signály: • • • • •
/WE – zapisovací vstup (Write Enable Input) /CS – výběr obvodu (Chip Select Input) /OE – ovládání třístavového výstupu (Output Enable Input) A0-A18 – adresní vstupy I/O1 – I/O8 – datové vstupy/výstupy
Obr. 13 Zapojení vývodů paměti K6T4008V1C
7.1.3 Čtení dat z paměti
Obr. 14 Časové průběhy signálů při čtení dat z paměti, /WE = Log 1
13
Bakalářská práce Protože v návrhu obvodu je použita pouze jediná paměť (není použito paralelní spojení více pamětí), může být trvale aktivována signálem /CS = Log 0 (doba TCO1 je tedy nezajímavá). V tab. 3 jsou uvedeny důležité doby při čtení dat z paměti. Tab. 3 Důležité doby při čtení dat z paměti tRC tAA tOE tCO
Min 70 -
Max 70 35 70
jednotka ns ns ns ns
7.1.4 Zápis dat do paměti Na obr. 15 jsou průběhy signálů při zápisu dat do paměti. V tab. 4 jsou uvedeny nejdůležitější doby, které je nutné dodržet.
Obr. 15 Průběhy signálů při zápisu do paměti Tab. 4 Důležité doby při zápisu dat do paměti tWC tWR tAS tCW tAW tWP tDW tDH
Min 70 0 0 60 60 55 30 0
Max -
14
jednotka ns ns ns ns ns ns ns ns
Bakalářská práce
7.2 Adresní čítač - binární čítač 74HC4040 Jako adresní čítač pro generování adresy pro paměť obrazu podle obr. 12 lze použít binární čítač 74HC4040.
7.2.1 Základní parametry 74HC4040 • • • • • •
Napájecí napětí: 2 – 6V Počet výstupů: 12 Maximální frekvence hodinového signálu: 90MHz Zpoždění z Qn na Qn+1: 8ns (při Vcc = 5V) Zpoždění z /CP na Q0 : 14ns (při Vcc = 5V) Pouzdro: DIP16
7.2.2 Zapojení vývodů a řídící signály 74HC4040 Zapojení vývodů binárního čítače 74HC4040 je na obr. 16. Čítač je řízen dvěma signály: • /CP – vstup hodinového signálu (clock input), čítač mění stav při sestupné hraně signálu • MR – nulování čítače (master reset) – aktivní v Log 1 Funkce řídících signálů je znázorněna v tab. 5.
Obr. 16 Zapojení vývodů čítače 74HC4040 Tab. 5 Funkční tabulka řídících signálů 74HC4040 Vstupy /CP vzestupná hrana sestupná hrana X
MR L L H
15
Výstupy Qn nemění stav inkrementuje L
Bakalářská práce
7.3 Oddělovací obvod – paralelní registr 74HC573 Oddělovací registr slouží v obvodu na obr. 12 k zajištění stavu vysoké impedance na datové sběrnici snímače ADCS-2121. K tomuto účelu lze použít osmi bitový registr 74HC573, který umožňuje průchozí režim.
7.3.1 Základní parametry 74HC573 • • • • •
Napájecí napětí: 2 – 6V Šířka sběrnice: 8 bitů Zpoždění z Dn na Qn : 14ns (při Vcc = 5V) Třístavový výstup Pouzdro: DIP20
7.3.2 Zapojení vývodů a řídící signály 74HC573 Zapojení vývodů je na obr. 17. Obvod je řízen dvěma signály: • •
LE – řízení registru (Latch Enable Input) /OE – ovládání třístavového výstupu (3-State Output Enable)
Obr. 17 Zapojení vývodů 74HC573 Pokud je signál LE trvale v Log 1, registr je průchozí. Tento stav vyhovuje obvodu na obr. 12. Signálem /OE lze pak řídit výstup registru (uvedení do stavu vysoké impedance).
7.4 Invertor a Multiplexer - 4 x 2-vstupový NAND 74HC00 Jako invertor lze zapojit jeden logický člen NAND obvodu 74HC00, přičemž ze zbývajících tří členů v pouzdru obvodu lze sestavit dvouvstupový multiplexer.
16
Bakalářská práce
7.4.1 Základní parametry obvodu 74HC00 • • • •
Napájecí napětí: 2 – 6V Zpoždění z nA, nB na nY : 7ns (při Vcc = 5V) Počet hradel v pouzdru: 4 Pouzdro: DIP14
7.4.2 Zapojení vývodů 74HC00
Obr. 18 Zapojení vývodů 74HC00
7.4.3 Multiplexer Ze tří logických členů NAND lze sestavit dvouvstupový multiplexer se dvěma řídícími signály C1 a C2 podle obr. 19, kterým lze v obvodu na obr. 12 přepínat zdroj hodinového signálu pro adresní binární čítač. Řídící signály musí být vůči sobě negovány.
Obr. 19 Zapojení multiplexeru z členů NAND Tab. 6 Pravdivostní tabulka multiplexeru C1 0 0 1 1
C2 1 1 0 0
Vstup1 X X 0 1
17
Vstup2 0 1 X X
Výstup 0 1 0 1
Bakalářská práce
7.5 Řídící mikrokontrolér Jako řídící mikrokontrolér (jednočipový mikropočítač) jsem zvolil obvod řady 8051, pro jeho dostupnost, snadné programování a vyhovujícím periferiím pro dané zařízení.
7.5.1 Základní rysy a parametry jednočipového mikropočítače AT89LS51 • • • • • • • • •
Plně kompatibilní architektura s rodinou jednočipových mikropočítačů MCS-51 Paměť programu: 4kB Flash, až 1000 programovacích cyklů Napájecí napětí: 2,7 – 4V Taktovací kmitočet: 0 – 16MHz , vnitřní oscilátor 128 x 8 vnitřní datová paměť RAM 32 programovatelných I/O linek Dva 16-bitové časovače/čítače Plně duplexní sériový kanál UART Pouzdro DIP40
Obr. 20 Blokové schéma AT89LS51 18
Bakalářská práce Mikrokontroléry řady 8051 disponují úplnou instrukční sadou se 110 instrukcemi: • • • • •
instrukce pro přenos dat instrukce pro matematické a logické operace instrukce pro práci se zásobníkem instrukce pro větvení programu instrukce pro bitové operace
Při frekvenci hodinového signálu 12MHz dosahuje výkonu 0,7 MIPS, což pro danou aplikaci zcela postačuje. Disponuje čtyřmi nezávislými osmi bitovými vstupně/výstupními porty (bránami), brána P3 má speciální funkce (např. vývody sběrnice UART, vstupy čítačů, externí přerušení, řízení externí datové paměti). Brána P0 a P2 může sloužit pro připojení vnější datové nebo programové paměti o kapacitě až 64kB. Další údaje o architektuře a funkci lze nalézt v [2].
7.5.2 Zapojení vývodů AT89LS51
Obr. 21 Zapojení vývodů AT89LS51
7.6 Převodník napěťových úrovní MAX232 Pro ověření funkce navrhovaného obvodu pro přenos dat ze snímače ADCS-2121 je účelné jej propojit s osobním počítačem, který pomocí vhodného softwaru zobrazí snímek na monitoru. K propojení poslouží sériový port COM. Protože port COM osobního počítače je navržen ve standardu RS-232 je nutné použít převodník napěťových úrovní. Vhodným obvodem je MAX232.
19
Bakalářská práce
7.6.1 Základní parametry MAX232 • • • •
Napájecí napětí: typ. 5V Převádí dvě linky oběma směry Rychlost: typ 200kb/s Pouzdro: DIP16
7.6.2 Zapojení doporučené výrobcem Na obr. 22 je výrobcem doporučené zapojené převodníku úrovní MAX232. Kapacity kondenzátorů C1, C2, C3 a C4 jsou 1µF.
Obr. 22 Doporučené zapojení obvodu MAX232
7.6.3 Zapojení vývodů MAX232
Obr. 23 Zapojení vývodů MAX232 20
Bakalářská práce
8 Modul se snímačem obrazu ADCS-2121 Samostatný modul snímače obrazu je koncipován tak, aby ho bylo možno zasunout do patice konečného zařízení nebo případně do nepájivého kontaktního pole. Obsahuje jen nejnutnější obvody, které jsou však pro jakékoli výsledné řešení shodné, tedy samotný snímač obrazu ADCS-2121 a jeho napájecí obvody, které musí zajistit potřebné stabilizované napětí pro jeho analogové i digitální části. Dále musí být přizpůsoben pro připevnění optické soustavy před snímač obrazu. Snímač obrazu ADCS-2121 je zapouzdřen do pouzdra CLCC-32, jehož kontakty jsou tvořeny pájecími ploškami na spodní straně pouzdra a žlábky z bočních stran. Napájení obvodu je rozděleno na analogovou a digitální část. Analogová část obvodu je tvořena zejména snímacím polem, zesilovači a A/D převodníkem. Digitální obvody jsou tvořeny časovacími obvody (časování procesu snímání obrazu) a řídící částí snímače. Analogové i digitální napájení je rozděleno na tři napájecí vstupy s odpovídajícími zemnícími vývody.
Obr. 24 ADCS-2121, vlevo snímací strana
Snímač je vyroben pro napájecí napětí 3,3V (-5%, +10%). Podle výrobce snímače musí být analogová napájecí část striktně oddělena od digitální části, aby rušení v napájecích obvodech digitální části nepronikaly do analogových obvodů a tím nezpůsobovaly šum a kazy v obraze. Proto má každá část svůj stabilizátor napětí. Zvolil jsem integrovaný stabilizátor LE33CD, který se vyznačuje výbornými stabilizačními vlastnostmi. Je konstruován pro maximální výstupní proud 100mA, což vzhledem k maximálnímu příkonu snímače 150mW plně postačuje. Schéma zapojení modulu je na obr. 25. Zapojení stabilizátorů LE33CD je podle katalogového listu. Vypínací vstupy stabilizátorů INHIBIT jsou nevyužity. Minimální kapacita kondenzátoru na výstupu stabilizátoru pro dobrou stabilizaci je 2,2µF, použil jsem 47µF, ta by měla být dostatečná pro vykrytí proudových špiček snímače. Na společném vstupu stabilizátorů je kapacita cca 100µF. Analogová zem je oddělená od digitální země a jsou spojeny pomocí propojky R1 ve společném bodu připojení napájení a vstupních kondenzátorů modulu, čímž se zamezí průniku rušivého signálu mezi oběma zemnícími větvemi. Ostatní vývody snímače jsou vyvedeny na kolíkové lišty, sloužící pro zastrčení modulu do patice.
21
Bakalářská práce
Obr. 25 Schéma zapojení modulu snímače ADCS-2121
Deska s plošnými spoji je na obr. 26. Modul je řešen jako oboustranná deska plošných spojů s povrchovou montáží součástek. Na výstupech stabilizátorů jsou připojeny tři filtrační kondenzátory o kapacitě 100nF, které jsou umístěny co nejblíže snímače přímo mezi jednotlivé napájecí vstupy a jim odpovídající země.
Obr. 26 Deska s plošnými spoji modulu (29,2 x 50,0) a její osazovací nákresy, vlevo strana součástek, vpravo spodní strana 22
Bakalářská práce Rozvod k jednotlivým napájecím vstupům je veden vždy z jednoho bodu od filtračního kondenzátoru na výstupu stabilizátoru. Země jsou rozlité po horní straně desky. V rozích desky jsou otvory pro případné uchycení modulu a v jedné úhlopříčce snímače jsou umístěny otvory o průměru 2mm symetricky kolem snímací plochy pro uchycení optické soustavy. Na obr. 27 je popis jednotlivých vývodů konektorových lišt modulu.
Obr. 27 Funkce jednotlivých vývodů konektorových lišt
Výsledná realizace modulu snímače ADCS-2121 i s namontovaným objektivem je patrná z obr. 28. Na modul je připevněn duralový držák, ve kterém je zabudován objektiv. Objektiv se nastaví do požadované vzdálenosti od snímače obrazu šroubováním v duralovém držáku.
Obr. 28 Pohledy na hotový modul
23
Bakalářská práce
9 Schéma zapojení obvodu pro přenos dat Na obr. 29 je úplné zapojení obvodu pro přenos dat ze snímače obrazu ADCS-2121. Na místě snímače obrazu je do schématu vložen modul M1, který byl popsán v kap. 8 a jehož schéma je na obr. 25. Výsledné schéma obvodu přímo vychází z blokového schématu na obr.12 a z poznatků o použitých integrovaných obvodech z kap. 7. Externí hodinový signál pro snímač obrazu je generován integrovaným oscilátorem IO7. Signál z oscilátoru IO7 je připojen na vstup binárního čítače IO8 (viz kap. 7.2), který slouží jako dělič kmitočtu. Pro nastavení různé velikosti hodinového signálu slouží přepínač JP1. Použije-li se oscilátor o frekvenci 50MHz, umožní maximální hodinový kmitočet pro snímač obrazu 25MHz. Modul M1 je napájen napětím 5V (obsahuje vlastní stabilizátory napětí pro snímač obrazu ADCS-2121). Vývody IMODE0 a IMODE1 jsou připojeny na Log 0, čímž se přepne jeho komunikační řídící sběrnice do synchronního módu (I2C). Komunikační sběrnice snímače vede do mikrokontroléru IO6 (SCLK_RxD – P3.2, SD_TxD – P3.3). Resetovací vývod modulu nRST_nSTBY vede na vývod P3.4 IO6 – je tedy programově ovladatelný. Datový výstup z modulu M1 (je použit osmibitový výstup D2 –D9) vede do oddělovacího registru IO2 (viz kap. 7.3), z něj pak na datový vstup/výstup paměti IO1 a na port P1 mikrokontroléru IO6. Vstup LE (ve schématu označen C) oddělovacího registru IO2 je napojen na Log 1 – registr je průchozí. Paměť IO1 má vývod /CE (/CS) napojen na Log 0 – paměť je trvale aktivována. K adresaci paměti slouží binární čítače IO3 a IO4 (viz kap. 7.2). Protože adresa má devatenáct bitů, které je potřeba adresovat, jsou spojeny dva čítače do kaskády a napojeny na adresní vstupy paměti IO1. Podle blokového schématu na obr. 12, vede signál DRDY z modulu snímače přes invertor tvořený jedním členem NAND IO5 na zapisovací vstup paměti, což odpovídá průběhům pro zápis do paměti na obr. 15 v kap. 7.1. Signál DRDY je v nečinnosti snímače v Log 0, na vstupu paměti /WE je tedy v klidu Log 1 což je podmínkou pro čtení dat. Podle kap. 7.4.3 je ze zbylých tří členů NAND obvodu IO5 sestaven dvouvstupový multiplexer. Jeden jeho vstup vede na signál DRDY snímače, druhý na vývod P3.5 mikrokontroléru IO6. Výstup vede na hodinový vstup adresního čítače IO3. Tyto signály inkrementují adresu paměti v prvním případě při ukládání dat snímačem do paměti a v druhém případě při jejich čtení mikrokontrolérem. Dva řídící signály multiplexeru jsou vedeny na P2.6 a P2.7 mikrokontroléru, který programově zajistí jejich vzájemnou negaci. Na tyto signály jsou napojeny vývody /OE paměti i oddělovacího registru IO2 (ve schématu je označen OC) a to tak aby byl aktivní výstup vždy jen jednoho z nich, jinak by došlo ke kolizi na datové sběrnici. Pokud bude na P2.7 Log 1, na vývodu /OE paměti IO1 bude rovněž Log 1 a bude mít výstup ve stavu vysoké impedance. Multiplexer propustí signál DRDY na vstup adresního čítače IO3. V tom samém okamžiku mikrokontrolér zajistí Log 0 na druhém řídícím signálu P2.6 čímž zamezí průchod signálu z mikrokontroleru na adresní čítač a zároveň zajistí Log 0 na vývodu /OE (OC) oddělovacího registru, který má nyní výstup v normálním režimu. Při této konfiguraci je obvod připraven pro zápis dat do paměti snímačem obrazu. Negováním řídících signálů na P2.7 a P2.6 se obvod uvede do konfigurace čtení z paměti mikrokontrolérem. Na tyto vývody jsou připojeny signalizační LED D4 a D5. Nulování adresních čítačů je napojeno na P3.6 IO6 (ovládáno programem IO6). Vývody P3.0 a P3.1 tvoří komunikační asynchronní sběrnici UART (periferie mikrokontroléru), která vede na převodník úrovní IO9, zapojený podle doporučení výrobce, viz kap. 7.6. Protože převodník úrovní je napájen napětím 5V a mikrokontrolér napětím 3,3V, je mezi obvody diodový omezovač R3, D1 a R2, D2, který zabrání průniku napětí vyšší než 3,3V na bránu mikrokontroléru. Konektor JP3 slouží pro přímé spojení s jiným 24
Bakalářská práce mikrokontrolérem, který může být napájen vyšším napětím než 3,3V protože je JP3 umístěn před napěťový omezovač.
Obr. 29 Schéma zapojení obvodu
25
Bakalářská práce
Na vývody P2.0 a P2.1 je zapojen konektor JP2 pro nastavení parametrů programu (např. přenosová rychlost na asynchronní sběrnici). Na vývody P2.2 a P2.3 jsou zapojeny signalizační LED D6 a D7 pro libovolné programové využití. Mikropočítač IO6 (AT89LS51) je zapojen běžným způsobem viz [2] – resetovací obvod tvoří R1, C17 a resetovací tlačítko S1, vývodem EA je přepnut na vnitřní paměť programu, krystal Q1 má hodnotu 11,0592MHz pro přesné nastavení standardních přenosových rychlostí sériového asynchronního kanálu pro přenos dat do osobního počítače. Obvod má stabilizované napájecí napětí 5V integrovaným stabilizátorem IO10 pro modul M1 a převodník úrovní IO9 a stabilizované napětí 3,3V integrovaným stabilizátorem IO11 pro zbytek obvodu. Na obr. 30 je realizace obvodu na nepájivém kontaktním poli. V horní části obrázku je zasunut modul snímače, vlevo dole je mikropočítač IO9, vpravo dole paměť SRAM.
Obr. 30 Realizace obvodu na nepájivém kontaktním poli
10 Deska s plošnými spoji Pro obvod na obr. 29 jsem navrhl dle požadavků desku s plošnými spoji. Deska je oboustranná s klasickou i povrchovou montáží součástek s rozměry 83,5 x 105,5 mm.
26
Bakalářská práce Všechny součástky jsou osazeny z horní strany desky. Deska obsahuje všechny prvky ze schématu na obr. 29 a je navržená pro vložení modulu popsaného v kap. 8.
Obr. 31 Deska s plošnými spoji obvodu 1:1 - strana spojů (spodní)
Obr. 32 Deska s plošnými spoji obvodu 1:1 - strana součástek 27
Bakalářská práce
Obr. 33 Osazení součástek na desce s plošnými spoji (1,5 : 1)
28
Bakalářská práce
11 Komunikace s ADCS-2121 – synchronní mód V řešení obvodového zapojení pro přenos dat z obrazového snímače jsem použil synchronní komunikaci se snímačem, proto se asynchronním režimem nebudu zabývat. Pro komunikaci se snímačem v synchronním módu je potřeba uzemnit vývody IMODE0 a IMODE1, čímž se obvod do tohoto módu uvede. Sběrnice je v synchronním režimu kompatibilní se sběrnicí I2C. Sběrnice používá dva vodiče. SCLK (vývod SCLK_RxD) je hodinový signál pro synchronní přenos generovaný vždy řídícím zařízením (např. mikrokontrolér – při komunikaci se chová jako master) a SDATA (vývod SD_TxD) je datový vodič pro oboustranný přenos mezi snímačem (při komunikaci se chová jako slave) a mikrokontrolérem. Protože se předávají data oběma směry po jediném vodiči, nemohou být na portech připojených na tento vodič zdvihací tranzistory, ale nejjednodušeji pouze zdvihací rezistor. To znamená, že při uvolnění vodiče SDATA oběma zařízeními je na něm logická jednička. Sběrnice I2C umožňuje sdílet více zařízení, proto je nutné snímač adresovat jeho specifickou adresou, která je pevně daná výrobcem. Pokud je na sběrnici připojen pouze snímač, lze používání adresy zařízení vypnout. Vypnutí používání adresy zařízení se provede nastavením bitu ICTRL[DAD] = 1. První příkaz ovšem musí vždy použít adresu zařízení, protože po resetu snímače je bit ICTRL[DAD] = 0. Tímto prvním příkazem lze nastavit bit ICTRL[DAD] na 1 a při další komunikaci dále adresu zařízení nepoužívat. Ve svém řešení jsem použil adresování zařízení, proto se následný popis bude zabývat právě tím.
11.1 Časování, zahájení a ukončení přenosu Časování komunikace je na obr. 34. Komunikace se zahájí Start bitem, který je definován přechodem signálu SDATA z jedničky do nuly, když je signál SCLK stále v jedničce. Následuje přenos jednotlivých bitů. Data na vodiči SDATA musí být stabilní po celou dobu, kdy je v jedničce signál SCLK. Při čtení jsou data ze snímače platná, když je SCLK v jedničce. Po sestupné hraně signálu SCLK je možné data na vodiči SDATA vyměnit. Komunikace je ukončena Stop bitem, který je definován přechodem signálu SDATA z nuly do jedničky, když je signál SCLK stále v jedničce. Provedením Start bitu během neukončené komunikace se započne komunikace od začátku počínaje novým Start bitem.
Obr. 34 Časování synchronního přenosu řídící sběrnice snímače
29
Bakalářská práce
11.2 Rychlostní limity sběrnice I2C Pro správnou funkci sériového přenosu je nutné dodržet určité rychlostní omezení. Maximální rychlost přenosu po řídící sběrnici je daná velikostí frekvence hodinového signálu snímače. Závislost je patrná z obr. 35 a tab. 7.
Obr. 35 Časování signálů SCLK a SDATA Tab. 7 Minimální trvání signálu SCLK Parametr SCL-HIGH SCL-LOW
Minimální počet cyklů hodinového signálu 4 4 + (SDA_HOLD * 2) + (SDA_SETUP * 2)
Registr ITMG2
po resetu
7 RSV x
6 1
5 4 SDA_SETUP 0 0
3 1
2
1 0 SDA_HOLD 0 1 1
Parametry SDA_HOLD a SDA_SETUP jsou umístěny v registru ITMG2. SDA_SETUP určuje počet cyklů hodinového signálu snímače, po kterém dojde za sestupnou hranou signálu SCLK k nastavení dat na vodiči SDATA snímačem (SET UP TIME), SDA_HOLD zase k jejich podržení (HOLD TIME) před uvolněním vodiče SDATA snímačem. Vztahy pro počet cyklů hodinového signálu, určující SET UP TIME a HOLD TIME: HOLD_CYCLES = 2 + (SDA_HOLD * 2) SETUP_CYCLES = 2 + (SDA_HOLD * 2) + (SDA_SETUP * 2)
(1) (2)
Hodnota SDA_HOLD po resetu je 3, což je podle předchozího vztahu HOLD_CYCLES = 8 cyklů hodinového signálu snímače, hodnota SDA_SETUP je po resetu nastavena na 9, čemuž odpovídá SETUP_CYCLES = 26 cyklů. Podle frekvence hodinového signálu těmto hodnotám odpovídají doby SET UP TIME (1040ns při 25MHz) a HOLD TIME (320ns při 25MHz).
30
Bakalářská práce
Další podmínkou je, že doby Setup time pro start bit a stop bit na obr. 36 musí být dlouhé minimálně 2 cykly hodinového signálu snímače.
Obr. 36 Časování Start bitu a Stop bitu synchronní komunikace V případě, že komunikace bude probíhat o mnoho pomaleji vůči frekvenci hodinového signálu snímače, není třeba se těmito limity zabývat, tedy při použití značných prodlev mezi jednotlivými stavy při komunikaci. Přesto je vhodné je zkontrolovat, zda jsou všechny dodrženy.
11.3 Organizace přenosu bitů v paketech
Obr. 37 Paket vysílaný z mastera do snímače
Obr. 38 Paket vysílaný ze snímače do mastera
31
Bakalářská práce
Na obr. 37 je časový průběh na řídící sběrnici při přenosu paketu z mastera do snímače. V tomto případě je paket uvozen Start bitem, není to ovšem podmínkou, pokud se nejedná o první paket v relaci. Přenáší se vždy devět bitů, z nichž osm je datových (označených D0 – D7) a devátý je kontrolní (ACK). Při přenosu datových bitů je vodič SDATA řízen zařízením master, při předávání kontrolního bitu ACK musí master SDATA uvolnit, protože bit ACK je generován zařízením slave, tedy v tomto případě snímačem. Bit ACK má nulovou hodnotu, pokud byl přenos paketu úspěšný. Máli ACK hodnotu jedna, v přenosu nastala chyba. Za bitem ACK začíná s dalším hodinovým impulzem na SCLK přenos dalšího paketu nebo může následovat Stop bit pro ukončení komunikace. Předávaný datový byte začíná vždy bitem D7 a končí bitem D0. Na obr. 38 je časový průběh na řídící sběrnici při přenosu paketu ze snímače do zařízení master. Impulz označený Start v signálu SCLK není Start bitem přenosu, ale poslední impulz pro předání bitu ACK při přenosu předchozího paketu. Paket vysílaný ze snímače do mastera nemůže být nikdy uvozen Start bitem, vždy mu předchází minimálně jeden byte. Opět se vysílá osm datových bitů (označených D0 – D7) a devátý bit je kontrolní (ACK). Při přenosu datových bitů je vodič SDATA řízen snímačem generujícím data, při předávání kontrolního bitu ACK snímač vodič SDATA uvolní za dobu HOLD TIME (viz limity přenosu) a master generuje potvrzovací bit ACK = 0. Pokud jde o poslední čtený byte ze snímače v jedné relaci, master generuje hodnotu ACK = 1 a následuje Stop bit pro ukončení komunikace.
11.4 Formáty paketů V tab. 8 jsou znázorněny formáty všech čtyř druhů paketů, které snímač podporuje při synchronní komunikaci. Tab. 8 Formáty paketů MSB Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
LSB ACK
Bit 2
Bit 1
Bit 0
DA6
DA5 DA4 DA3 DA2 DA1 Adresa zařízení = 1010101
DA0
R/nW Směr dat
MC Slave ACK Master Driven ACK Command Packet
RA6
RA5
RA1
RA0
R/nW Směr dat
MA Slave ACK Master Driven ACK Address Packet
D7
D6
D5
D4
D3 Data
D2
D1
D0
MD Slave ACK Master driven ACK Data Packet
D7
D6
D5
D4
D3 Data
D2
D1
D0
SD Master ACK Slave driven ACK Data Packet
RA4 RA3 RA2 Adresa registru
MC je paket, který nese adresu zařízení, a v režimu používáni adresy zařízení představuje vždy první byte kterým zažíná relace. Adresa zařízení snímače ADCS-2121 je ¨1010101¨. Bit R/nW určuje směr dat při přenosu dalšího paketu, tedy bude-li následovat MA
32
Bakalářská práce (nebo MD), a v opačném směru pak SD paket. Poslední přenášený bit je ACK, generovaný snímačem. MA je paket, který nese adresu registru, do kterého se budou zapisovat data nebo ze kterého se data budou číst. Adresa je sedmibitová. Osmý bit opět určuje směr přenosu dat při přenosu dalšího bytu, tedy jestli bude následovat MD nebo SD paket. Posledním bitem je ACK, generovaný snímačem. MD je paket, který nese data směrem ze zařízení master do snímače. Prvních osm bitů představují přenášený datový byte, devátým bitem je ACK, generovaný snímačem. SD je paket, který přenáší data ze snímače do zařízení master. Prvních osm bitů představují opět přenášený datový byte, devátý bit je ACK, generovaný zařízením master. Jeli přenášeno více bytů za sebou v jedné relaci, má ACK generované v tomto případě zařízením master hodnotu 0. Pokud jde ovšem o poslední přenášený byte ze snímače, zařízení master vrací ACK = 1.
11.5 Přenos dat do snímače – zápis do registrů Snímač umožňuje zápis do více registrů v jedné relaci, aniž by bylo nutné nastavovat jejich jednotlivé adresy. To je zaručeno tím, že po resetu snímače je vynulován bit ICTRL[AAD], což je povolení automatického inkrementování adresy zapisovaného nebo čteného registru. Nastavením ICTRL[AAD] = 1 se automatické inkrementování zakáže a před každým jednotlivým zápisem je nutné nastavit adresu registru paketem MA. Tab. 9 Zápis do dvou registrů snímače 1
Číslo paketu Typ paketu
3
4
MC
MA
MD
MD
7564_3210_A
7564_3210_A
7564_3210_A
7564_3210_A
Start bit 1010_1010_x
0001_1110_x
0001_0010_x
0011_0100_x
Stop bit
Bit SDATA (master)
2
SDATA (slave)
x
xxxx_xxxx_0
xxxx_xxxx_0
xxxx_xxxx_0
xxxx_xxxx_0
x
Adresa registru
x
x
x
x0F
x10
x11
- zapíše do registru x0F hodnotu x12, a do registru x10 hodnotu x34 V tab. 9 je znázorněn přenos dat do dvou registrů snímače s použitím adresy zařízení. Přenos začíná Start bitem, za ním následuje paket MC (nesoucí adresu zařízení), pak paket MA (nesoucí adresu registru) a následují pakety MD (nesoucí zapisovaná data). Přenos je ukončen Stop Bitem. V paketech MC a MA je bit určující směr přenosu nastaven na hodnotu 0, tedy přenos směrem do snímače. Každý paket je potvrzen snímačem bitem ACK. Je aktivováno automatické inkrementování adresy registrů (ICTRL[AAD] = 0). Kdyby bylo automatické inkrementování adresy zakázáno, paket 4 by zapsal data opět na adresu x0F. Pro zapsání do jediného registru je tedy zapotřebí minimálně tří paketů, při zápisu do několika registrů najednou lze z výhodou využít automatického inkrementování adresy jak je tomu v tab. 9.
11.6 Přenos dat ze snímače – čtení registrů Stejně jako při zápisu umožňuje snímač číst v jedné relaci obsah více registrů najednou použitím automatického inkrementování adresy zařízení.
33
Bakalářská práce V tab. 10 je znázorněno přečtení jednoho registru snímače s použitím adresy zařízení. Přenos začíná Start bitem, následuje paket MC (nesoucí adresu zařízení), směr dat má nastaven do snímače, tedy bit R/nW = 0. Následuje paket MA nesoucí adresu čteného registru, směr přenosu je rovněž nastaven směrem do snímače (R/nW = 0). Následuje nový Start bit. Touto procedurou se ve snímači nastaví adresa registru, ze kterého se bude číst (v příkladu x0F). Novým Start bitem se započala nová relace od začátku a musí tedy následovat znovu paket MC, ale bit určující směr přenosu následujícího bytu je nastaven na směr ze snímače, tedy R/nW = 1, následkem toho bude následující paket SD. Těmto prvním třem paketům potvrdil snímač ACK. Poslední paket je SD, který předá zařízení master data (v příkladu hodnotu x12). Pokud se přenáší ze snímače pouze jedem byte, tak v paketu SD master vrací ACK = 1. Pokud by se přenášelo více bytů ze snímače najednou, master bude v každém paketu SD vracet ACK = 0, jenom v posledním vrátí opět ACK = 1. Relace je ukončena Stop bitem. Tab. 10 Přečtení jednoho registru snímače Číslo paketu Typ paketu Bit
1
2
3
4
MC
MA
MC
SD
7564_3210_A
7564_3210_A
7564_3210_A
7564_3210_A
0001_1110_x Start b. 1010_1011_x
xxxx_xxxx_1
Stop b.
SDATA (slave)
x
xxxx_xxxx_0
xxxx_xxxx_0
x
xxxx_xxxx_0
0001_0010_x
x
Adresa registru
x
x
x
x0F
x0F
x0F
x10
SDATA (master)
Start b. 1010_1010_x
- přečte z registru x0F hodnotu x12
11.7 Časové průběhy komunikace Na obr. 39 jsou znázorněny teoretické časové průběhy komunikace mezi zařízením master (mikropočítačem) a slave (snímač ADCS-2121). Levé průběhy znázorňují zápis dat do dvou registrů snímače podle tab. 9 a pravé průběhy znázorňují přečtení obsahu jednoho registru snímače podle tab. 10. Jsou vyznačeny významy jednotlivých bitů a také kdy vodič sběrnice SDATA ovládá master a kdy slave. V okamžicích, kdy se ujímá řízení vodiče SDATA slave, musí master vodič SDATA uvolnit (nastavit na log 1).
34
Bakalářská práce
Obr. 39 Časové průběhy komunikace (vlevo zápis, vpravo čtení)
35
Bakalářská práce
12 Programové vybavení pro řídící mikrokontrolér 12.1 Důležité registry snímače obrazu ADCS-2121 Zde jsou uvedeny registry potřebné pro ovládání snímače obrazu řídícím mikrokontrolérem a význam použitých bitů.
12.1.1 STATUS (01H)
po resetu
7 RSV x
6 SSF 0
5 SFS 0
4 EFS 0
3 CC 0
RF – příznak procesu snímání:
2 FC 0
1 RC 0
0 RF 0
0 – neprobíhá proces snímání obrazu 1 – probíhá proces snímání obrazu
12.1.2 CONTROL (1CH) 7
6 RSV
po resetu
x
x
5 4 3 2 PWR LCK ARST RUN 1 0 0 0
1 SLP 0
0 RST 0
RST – reset snímače:
0 – normální stav 1 – reset
RUN – spuštění snímacího procesu:
0 – zastaven proces snímání obrazu 1 – spuštěn proces snímání obrazu
PWR – nízkospotřebový režim:
0 – režim je vypnut 1 – režim je zapnut – vyřadí napájení analogovým obvodům
12.1.3 CONFIG (1BH)
po resetu
7 6 5 RSV SDOE RSS x 0 0
4 CSS 0
SFC – stop, když je dokončen snímek:
3 CFC 1
2 SFC 1
1 0 SEN MODE 0 0
0 – snímání obrazu se zastaví okamžitě po nastavení RUN bitu na 0 1 – při nastavení RUN bitu na 0 se ještě dokončí právě prováděný snímek a teprve poté se nastaví STATUS[RF] na 0
36
Bakalářská práce
12.1.4 FWROW (0AH), FWCOL (0BH), LWROW (0CH), LWCOL (0DH) Tyto čtyři registry nastavují velikost snímané plochy. Určují souřadnice prvních a posledních řádků a sloupců na snímací ploše. FWROW – první řádek po resetu
7 RSV x
6
5
0
0
4
3 2 FRADDR 0 0 0
1
0
1
0
2
1
0
1
1
1
3 2 LRADDR 1 1 0
1
0
0
1
4 3 LCADDR 0 0
2
1
0
1
1
0
FWCOL – první sloupec po resetu
7
6
5
0
0
0
4 3 FCADDR 0 0
6
5
4
1
1
LWROW – poslední řádek po resetu
7 RSV x
LWCOL – poslední sloupec po resetu
7
6
5
1
0
1
Snímací plocha obsahuje ještě okrajové snímací části, které jsou sice adresovatelné, ale nejsou součástí obrazu (640x480 pixelů je efektivní rozlišení snímače, skutečné je o něco vyšší). Šířky této nevyužité plochy jsou následující: 28 pixelů vlevo, 4 pixely vpravo a 8 pixelů nahoře a dole. I tyto ofsety musí být zahrnuty do výsledných souřadnic. Registry FWROW, FWCOL, LWROW a LWCOL jsou osmibitové, což zjevně nestačí pro celý rozsah maximálního rozlišení (640 x 480). Registry totiž neobsahují 2LSB (2 nejnižší bity) z konečného čísla. Snímač přidá k registrům FWROW a FWCOL 2LSB o hodnotě “00“ a k registrům LWROW a LWCOL přidá 2LSB o hodnotě “11“. Např. nastavení registrů pro plné rozlišení 640x480: FWCOL ‘0000_0111’ FWROW ‘0000_0010’ LWCOL ‘1010_0110’ LWROW ‘0111_1001’ Po úpravě snímačem: FWCOL ‘00_0001_1100’ (28) FWROW ‘00_0000_1000’ (8) LWCOL ‘10_1001_1011’ (667) LWROW ‘01_1110_0111’ (487). Protože nelze určovat dva nejnižší bity souřadnic, jde měnit velikost snímku minimálně po čtyř-pixelových skocích. Nejmenší rozlišení jde nastavit 4 x 4 pixely, nejvyšší 640 x 480.
37
Bakalářská práce
12.1.5 ERECPGA (0FH), EROCPGA (10H), ORECPGA (11H), OROCPGA (12H) Tyto registry označované PGA Gain, slouží pro nastavení zesílení programovatelných zesilovačů signálu ze snímacího pole. Každý registr ovládá jeden ze čtyř zesilovačů. Zesílení lze nastavovat od 1 do 40. ERECPGA po resetu
7 EEH 0
6
5
4
0
0
0
3 EREC 0
2
1
0
1
1
0
zesílení A = [1 + (19 ⋅ EREC / 127 )]⋅ [EEH + 1]
(3)
EROCPGA 7 EOH po resetu 0
6
5
4
0
0
0
3 EROC 0
2
1
0
1
1
0
zesílení A = [1 + (19 ⋅ EROC / 127 )]⋅ [EOH + 1]
(4)
ORECPGA 7 OEH po resetu 0
6
5
4
0
0
0
3 OREC 0
2
1
0
1
1
0
zesílení A = [1 + (19 ⋅ OREC / 127 )]⋅ [OEH + 1]
(5)
OROCPGA 7 OOH po resetu 0
6
5
4
0
0
0
3 OROC 0
2
1
0
1
1
0
zesílení A = [1 + (19 ⋅ OROC / 127 )]⋅ [OOH + 1]
(6)
Hodnotám registrů 6 po resetu snímače odpovídá zesílení zesilovačů podle rovnic (3)– (6) A = 1,9.
Obr. 40 Rozdělení snímací plochy Obr. 40 představuje jednotlivé obrazové body snímací plochy pomyslně rozdělených do čtverců 2 x 2 pixelů. Obrazové body označené 1 zesiluje ERECPGA, 2 – EROCPGA, 3 –
38
Bakalářská práce ORECPGA a 4 – OROCPGA. U barevných snímačů z rodiny ADCS představují jednotlivé stejně označené obrazové body různé barvy (červená, modrá a dvě zelené). Tedy lze u barevných snímačů regulovat jas jednotlivých barev. U černobílého snímače ADCS-2121, který má všechny obrazové body stejné, stačí nastavovat všechny zesilovače na stejnou hodnotu zesílení.
12.1.6 ROWEXPL (13H), ROWEXPH (14H), SROWEXP (15H) ROWEXPL 7
6
5
1
1
7 RSV x
po resetu
2
1
0
0
4 3 REXPL 1 1
0
0
1
6
5
4
2
1
0
0
0
0
0
0
0
7
6
5
2
1
0
0
0
0
4 3 SREXP 0 0
0
0
0
ROWEXPH po resetu
3 REXPH 0
SROWEXP po resetu
Registry ROWEXPL a ROWEXPH tvoří jeden 15-ti bitový registr pro nastavení expoziční doby při snímání obrazu. Nulové hodnotě odpovídá nejkratší expoziční doba, maximální hodnotě 32767 odpovídá nejdelší expoziční doba. Registr SROWEXP slouží pro jemné doladění expoziční doby.
12.2 Algoritmus programu řídícího mikrokontroléru Na obr. 41 je požadovaný algoritmus programu pro řídící mikrokontrolér. Jedná se o hlavní smyčku programu, která provádí veškeré požadované operace pro přenos dat ze snímače obrazu na výstupní sběrnici sériovou UART zařízení. Algoritmus předpokládá napojení zařízení na osobní počítač (PC). Nejprve mikrokontrolér připojí SRAM na snímač obrazu. To znamená, že výstup paměti IO1 uvede do stavu vysoké impedance, výstup oddělovacího registru IO2 uvede do normálního režimu a multiplexerem tvořeným hradly IO5 připojí synchronizační signál DRDY snímače na hodinový vstup adresního paměti čítače IO3. Déle program provede reset snímače obrazu jeho vstupem nRST_nSTBY. Poté se provede reset snímače pomocí sběrnice I2C (programový) a nastaví se řídící registry snímače. Pak se program zacyklí a čeká na příchod povelu z hostujícího zařízení (PC) po sběrnici UART pro zahájení snímacího procesu. PC vyšle datový balíček (paket), který obsahuje nastavení parametrů pro pořízení snímku. Načte-li se úspěšně celý balíček o délce 14 bytů, jeho parametry se uloží do snímače obrazu. Mikrokontrolér vynuluje adresní čítač paměti a spustí přes řídící sběrnici proces snímání. Nyní mikrokontrolér neustále vyčítá ze snímače obsah stavového registru STATUS a zjišťuje tak ukončení snímacího procesu.
39
Bakalářská práce START Připojení SRAM na snímač Reset snímače vývodem nRST_nSTBY Softwareový reset snímače Nastavení CONFIG registru
Přišel datový paket z PC ?
Nastavení registrů snímače (expozice, zesílení, rozlišení) Reset čítače adresy pro SRAM Spuštění snímacího procesu
Je snímek hotov ?
Připojení SRAM na µP Reset čítače adresy pro SRAM Zahájení přenosu dat z SRAM do PC
Je přenos do PC dokončen ?
Připojení SRAM na snímač
Obr. 41 Algoritmus programu pro řídící mikrokontrolér 40
Bakalářská práce Po ukončení snímání, jsou všechna obrazová data uložená v paměti SRAM zařízení. Nyní je snímač obrazu v nečinnosti a mikrokontrolér nastaví obvod pro čtení z paměti. To znamená, že výstup oddělovacího registru uvede do stavu vysoké impedance, výstup paměti uvede do normálního režimu. Multiplexerem (tvořeného IO5) odpojí od adresního čítače signál DRDY snímače a napojí jej na svou bránu. Mikrokontrolér vynuluje adresní čítač a zahájí čtení dat z paměti postupně od prvního až po poslední byte obrazové informace a vysílá je na výstupní sběrnici UART zařízení. Po vyslání všech obrazových dat připojí mikrokontrolér opět paměť SRAM na snímač obrazu a program se vrátí do výchozího stavu kdy čeká na pokyn pro pořízení dalšího snímku, čeká na příchod paketu z hostitelského zařízení (PC).
12.3 Detailní popis programu pro řídící mikrokontrolér Zde uvádím přiblížení realizace algoritmu z obr. 41 a dalších potřebných podprogramů pro funkci celého zařízení v pokud možno co nejjednodušší podobě pro mikrokontrolér řady 8051.
12.3.1 Význam a přiřazení názvů registrům a vývodům mikrokontroléru Tyto názvy registrů a bitů mikrokontroléru jsou použity v dalším popisu programu, proto je uvádím nejdříve. sclk sdata nrst clk_c res_c direct1 direct2
bit bit bit bit bit bit bit
p3.2 p3.3 p3.4 p3.5 p3.6 p2.7 p2.6
port: hodinový signál řídící sběrnice I2C port: datový vstup/výstup řídící sběrnice I2C port: reset snímače obrazu nRST_nSTBY port: signál pro inkrementování adresního čítače port: nulování adresního čítače port: přepnutí SRAM pro čtení 1 port: přepnutí SRAM pro čtení 2
receive packet trans
bit bit bit
00h 01h 02h
bit: indikuje probíhající přenos dat z PC (paket) bit: indikuje dokončení přenosu dat z PC bit: indikuje ukončení přenosu dat do PC
pdata sdel1 sdel2 sd_reg sadr
equ equ equ equ equ
90h 21h 22h 23h 24h
port P1 – datová sběrnice paměti registr: pracovní registr pro generování zpoždění registr: pracovní registr pro generování zpoždění registr: vysílaná nebo přijatá data přes řídící sběrnici I2C registr: adresa zapisovaného nebo čteného registru snímače
radr adresa
equ equ
r0 r4
ukazatel na datový buffer paketu z PC pomocný registr pro zápis parametrů z paketu do snímače
V interní paměti RAM je umístěn datový buffer pro uložení datového paketu od hostitelského zařízení. Datový buffer má délku 14 bytů, zabírá adresní prostor 30h až 3dh. Vývody portu P3 P3.0 a P3.1 tvoří vývody asynchronní sběrnice UART. Stavové bity programu 00h – 02h jsou umístěny na začátek bitově adresovatelného prostoru (v registru 20h). Pomocné registry jsou využívány rovněž z bitově adresovatelného prostoru paměti RAM mikrokontroléru (21h – 24h). Z registrové banky je využit registr R0 (radr), který umožňuje nepřímé adresování paměti RAM.
41
Bakalářská práce
12.3.2 Počáteční inicializace Na začátku programu se nastaví skoky na podprogramy pro obsluhu přerušení na příslušné vektory přerušení. Program využívá dva zdroje přerušení. Jeden od sériového kanálu mikrokontroléru pro přenos dat (iscom) a druhý od časovače T0 (itime_out), který slouží jako time-out – ochranný interval pro obnovení funkce kanálu při přerušení přenosu dat z obsluhujícího zařízení.
init:
set57600: settl: set9600:
del:
org 0 sjmp init org 0bh jmp itime_out org 23h jmp iscom
začátek programu na adrese 0000h programové paměti přeskočení vektorů přerušení vektor přerušení od časovače 0 – Time-out skok na podprogram itime_out vektor přerušení od seriového kanálu UART skok na podprogram obsluhy sériového kanálu UART
mov pdata,#0ffh setb sclk setb sdata setb clk_c setb direct1 clr direct2 clr receive clr packet clr trans
uvedení portů do výchozího stavu … … … direct1 na Log 1 – přepnutí SRAM na snímač direct2 na Log 0 – přepnutí SRAM na snímač Log 0 – přenos dat z PC neprobíhá Log 0 – přenos paketu není dokončen Log 0 – přenos dat do PC není dokončen
mov tmod,#21h mov scon,#01010000b mov th1,#0fdh jb p2.0,set57600 sjmp settl jb p2.1,set9600 mov th1,#0ffh mov pcon,#10000000b mov tl1,th1 setb tr1
nastavení časovačů nastavení sériového kanálu 9600 baudů (smod = 0)
mov IE,#10010010b
povolení přerušení
acall hard_reset mov r6,#255 acall sdelay djnz r6,del
volání podprogram pro reset snímače časová prodleva přibližně 15ms … …
acall sinit
volání podprogramu pro inicializaci registrů snímače
19200 baudů (smod = 1) 57600 baudů (smod = 1) nastaví smod = 1 naplnění pracovního registru časovače 1 TL1 spuštění časovače T0
Dále následuje počáteční nastavení bitů portu (přepnutí RAM na snímač signály direct1 a direct2), a vynulování indikačních bitů programu. Program musí zajistit aby signály direct1 a direct2 byly vůči sobě negovány, přičemž je povolený stav, kdy oba mají hodnotu Log 1. Stav kdy direct1 i direct2 mají současně hodnotu Log 0 je nepřípustný, protože by nastala kolize na datové sběrnici (oddělovací registr IO2 a paměť IO1). Časovač T0, který slouží jako time-out pro sériový kanál, je nastaven do režimu 1 (16-ti bitový). Časovač T1 je nastaven do režimu 2 (s automatickým plněním), který potřebuje pro svou činnost sériový kanál mikrokontroléru v použitém režimu. Sériový kanál je nastaven do režimu 1 (asynchronní, 8bitů, bez parity, přenosová rychlost dána časovačem T1) a je povolen sériový příjem (registr SCON). Stavem na konektoru JP2 ve schématu na obr. 29 je v programu 42
Bakalářská práce určena použitá přenosová rychlost asynchronního kanálu mikrokontroléru viz tab. 11 (pro použitý kmitočet oscilátoru 11,0592MHz). Přenosová rychlost je určena hodnotou předvolby časovače T1 (registr TH1) a bitem SMOD, který je v registru PCON (PCON.7). Tab. 11 Nastavení přenosové rychlosti sériového kanálu UART JP2 P2.0 1 0 1
P2.1 1 1 0
Nastavení TH1 SMOD FDH 0 FDH 1 FFH 1
Přenosová rychlost Baud 9600 19200 57600
Po nastavení časovače T1 je spuštěn bitem TR1 = Log 1. Dále se v registru IE povolí použitá přerušení (od časovače T0 a sériového kanálu). Nyní je sériový kanál připraven k provozu. Volá se podprogram hard_reset, který zajistí reset snímače obrazu po dobu přibližně 15ms. Následuje prodleva 15ms, po níž se volá podprogram sinit, který nastaví registry snímače obrazu na požadované hodnoty. V tomto okamžiku byla provedena veškerá nutná inicializace zařízení a čeká se na požadavek pro pořízení snímku.
12.3.3 Hlavní smyčka programu Hlavní smyčka programu odpovídá vývojovému diagramu na obr. 41. Skládá se z volání podprogramů vykonávajících dílčí požadované funkce a jejichž algoritmy budou popsány později. cekej:
jnb packet,$ clr packet
testuje příchod paketu z PC byl přijat paket, vynuluje se indikační bit „paket“
acall set_param acall reset_count acall flash acall wait_photo setb direct2 clr direct1 acall reset_count
podprogram nastaví registry snímače podprogram vynuluje adresní čítač podprogram spustí snímací proces podprogram čeká na ukončení snímacího procesu nastaví obvod do režimu čtení z paměti ... podprogram vynuluje adresní čítač
mov sbuf,pdata jnb trans,$ clr trans setb direct1 clr direct2 sjmp cekej
seriovým kanálem UART se vyšle první byte testuje dokončení datového přenosu do PC přenos do PC byl dokončen, vynuluje se indikační bit nastaví obvod do režimu zápisu do paměti snímačem ... vrátí se zpět na čekání příchodu paketu z PC
Indikační bit paket oznamuje, že bylo přijato všech 14 bytů z ovládajícího zařízení (PC), které jsou potřebné pro nastavení snímacího procesu. Vysláním prvního bytu z paměti na sběrnici UART (uložením do registru sbuf) se započne přenos dat do ovládajícího zařízení. Zbytek přenosu se uskuteční v podprogramu pro obsluhu přerušení od sériového kanálu iscom.
43
Bakalářská práce
12.3.4 Podprogram časového zpoždění - sdelay Podprogram sdelay vytváří smyčku zpoždění přibližně 55µs. Podprogram slouží jako základní jednotka zpoždění pro časování signálu řídící sběrnice I2C, která je vytvořená programově. sdelay: sd00:
mov sdel1,#5 mov sdel2,#6 djnz sdel2,$ djnz sdel1,sd00 ret
sdelay
sdel1 = 5
sdel2 = 6
sdel2=sdel2-1 ne sdel2=0 sdel1=sdel1-1 ne sdel1=0 konec Obr. 42 Vývojový diagram podprogramu sdelay
12.3.5 Podprogram pro reset snímače hard_reset Úkolem podprogramu hard_reset je nastavení signálu nrst na Log 0 po dobu alespoň čtyřiceti cyklů hodinového signálu snímače obrazu. Při frekvenci hodinového signálu snímače obrazu 1MHz je doba potřebná pro reset minimálně 40µs. Hard_reset vytváří dobu pro reset přibližně 15ms (255-krát se volá podprogram sdelay). Princip vytvoření opakovací smyčky je shodný jako v podprogramu sdelay. hard_reset: clr nrst mov r6,#255 ha00: acall sdelay djnz r6,ha00 setb nrst acall sdelay ret
44
Bakalářská práce hard_reset nrst = 0 zpoždění 15ms nrst = 1 konec
Obr. 43 Vývojový diagram podprogramu hard_reset
12.3.6 Podprogram pro nulování adresního čítače reset_count Podprogram vynuluje adresní čítače paměti. Jeho úkolem je nastavit signál res_c na Log 1 čímž dojde k vynulování a po určité době jej vrátit zpět na Log 0. Zpoždění je generováno podprogramem sdelay. reset_count: setb res_c acall sdelay clr res_c ret
res_c = Log 1 volá zpoždění sdelay (55us) res_c = Log 0
12.3.7 Podprogram pro inkrementování adresního čítače inc_c Podprogram slouží pro inkrementování adresního čítače paměti. Signál clk_c je připojen na hodinový vstup adresního čítače. Úkolem podprogramu je nastavit clk_c na Log 0 a po určité době zpět na Log 1. Impulz trvá přibližně 3 µs, zpoždění je vytvořeno vložením prázdných instrukcí nop. inc_c:
clr clk_c nop nop nop setb clk_c ret
clk_c = Log 0
clk_c = Log 1
12.3.8 Podprogram pro nastavení časovače pro time-out sériového kanálu time_out Úkolem podprogramu je vynulovat pracovní registry TL0 a TH0 časovače T0 (zajistit maximální čas) a spustit jej nastavením bitu TR0 = 1. Pokud nebude zastaven, časovač po uplynutí přibližně 65ms přeteče a vyvolá přerušení, které následně zavolá podprogram itime_out.
45
Bakalářská práce time_out:
mov tl0,#0 mov th0,#0 setb tr0 ret
12.3.9 Podprogram pro obsluhu time-outu sériového kanálu itime_out V případě, že nastanou příliš velké prodlevy v přenosu vstupního paketu z PC do řídícího mikrokontroléru, nebo dojde-li k chybnému přenosu nebo přerušení přenosu, vyvolá se přerušení od časovače T0, které zavolá podprogram itime_out. Jeho úkolem je nastavit sériový kanál do výchozího stavu, aby bylo možné přenos zopakovat. Vynuluje indikační bit receive, který signalizuje probíhající příjem dat a zastaví časovač T0, aby nenastalo přerušení znovu. itime_out:
clr receive clr tr0 reti
12.3.10 Podprogramy pro generování hodinového signálu sběrnice I2C, generování Start_bitu a Stop_bitu Podprogramy používají prodlevy generované podprogramem sdelay. Podprogram sclock generuje kladný impulz na signálu sclk o délce 55 µs a z obou stran rovněž ohraničen zpožděními 55µs. sclock:
acall sdelay setb sclk acall sdelay clr sclk acall sdelay ret
Podprogram start_bit generuje na signálech sběrnice I2C sdata a sclk Start bit podle pravidel uvedených na obr. 34. start_bit:
acall sdelay clr sdata acall sdelay clr sclk acall sdelay ret
Podprogram start_bit generuje na signálech sběrnice I2C sdata a sclk Stop bit podle pravidel uvedených na obr. 34. stop_bit:
clr sdata acall sdelay setb sclk acall sdelay setb sdata acall sdelay ret
46
Bakalářská práce
12.3.11
Podprogram pro vyslání jednoho bytu na sběrnici I2C tr_byte
Podprogram vykonává činnost znázorněnou na obr. 37. Vysílaný byte po sběrnici je předem uložen v akumulátoru (a). Činnost spočívá v rotaci akumulátoru přes carry bit, jehož hodnota se vkládá na signál sdata (vložení hodnoty na sdata a následné volání podprogramu sclock). Po konečné osmé rotaci se signál sdata uvolní aby mohl snímač potvrdit signál ACK = 0. Bude-li ACK = 1, nastala chyba v přenosu. Chybu podprogram může pouze indikovat. tr_byte: tr00:
mov r7,#8 rlc a mov sdata,c acall sclock djnz r7,tr00 setb sdata acall sdelay setb sclk acall sdelay jnb sdata,tr01
tr01:
clr sclk setb sdata acall sdelay ret
12.3.12
Podprogram pro přečtení bytu ze snímače po sběrnici I2C rd_byte
zde možno vložit signalizaci chyby přenosu
Podprogram načte do akumulátoru se sběrnice I2C jeden byte podle obr. 38. Funkce je obdobná jako v předchozím případě pomocí rotace akumulátoru přes carry bit (c) mikrokontroléru. Do c se postupně načítají data ze sběrnice a rotují se do akumulátoru. Po osmé rotaci devátý cyklus potvrdí ACK. Protože se dále v programu používá pouze čtení jednoho bytu, podprogram vrací snímači ACK = 1. Přečtený byte je po ukončení podprogramu uložen v akumulátoru. rd_byte: rd00:
mov r7,#8 mov a,#0 setb sdata acall sdelay setb sclk acall sdelay mov c,sdata rlc a clr sclk acall sdelay djnz r7,rd00 acall sclock setb sdata ret
47
Bakalářská práce
12.3.13
Podprogram pro zapsání do jednoho registru snímače swrite
Podprogram swrite uloží data do registru snímače. Adresa zapisovaného registru snímače musí být předem uložena v registru sadr a ukládané data musejí být uloženy v registru sd_reg. Podprogram používá adresu zařízení a provádí činnost znázorněnou v tab. 9. Protože adresa registrů snímače má 7 bitů, musí se posunout o jeden bit doleva instrukcí rl a, viz tab. 8. Procedura posílá postupně pakety podle tab. 9 pomocí podprogramu tr_byte. swrite:
acall start_bit mov a,#10101010b acall tr_byte mov a,sadr rl a acall tr_byte mov a,sd_reg acall tr_byte acall stop_bit ret
MC -> MA -> MD ->
swrite Start bit
Vyšle MC paket s adresou zařízení
Vyšle MA paket s adresou registru
Vyšle MD paket s ukládanými daty Stop bit konec Obr. 44 Vývojový diagram pro uložení dat do registru snímače
48
Bakalářská práce
12.3.14
Podprogram pro přečtení jednoho registru snímače sread
Podprogram sread přečte obsah jednoho registru snímače obrazu přes řídící sběrnici I2C. Adresa čteného registru snímače musí být předem uložena v registru sadr, přečtený obsah registru snímače podprogram uloží do registru sd_reg. Podprogram vysílá pakety podle tab. 10. sread:
acall start_bit mov a,#10101010b acall tr_byte mov a,sadr rl a acall tr_byte setb sclk acall start_bit mov a,#10101011b acall tr_byte acall rd_byte mov sd_reg,a acall stop_bit ret
MC -> MA ->
MC <SD <-
sread Start bit Vyšle MC paket Vyšle MA paket Start bit Vyšle MC paket r/w =1 Přijme SD paket Stop bit konec Obr. 45 Vývojový diagram pro přečtení jednoho registru snímače
49
Bakalářská práce
12.3.15
Podprogram pro počáteční inicializaci registrů snímače sinit
Podprogram sinit vyčítá tabulku tab_reg a ukládá její obsah do registrů snímače. Procedura umožní snadnou změnu parametrů v jednotlivých registrech při vývoji programu. Používá dříve popsaný podprogram pro zápis do registru snímače swrite. V tabulce je vždy první byte adresa registru do něhož se má zapisovat, následující byte je ukládaná hodnota. První dva řádky tabulky zajistí reset snímače nastavením CONTROL(RST) na Log 1 a v dalším cyklu zpět na Log 0. To je nutné provést, jinak do ostatních registrů snímače nejde zapisovat! Tabulka je ukončena znakem 0ffh. Většina registrů je ponechána v poresetových hodnotách. Bit CONFIG(SFC) je nastaven na log 1, aby snímač po jeho zastavení ještě dokončil právě prováděný snímací proces. sinit: si00:
si01:
tab_reg:
mov dptr,#tab_reg mov a,#0 movc a,@a+dptr cjne a,#0ffh,si01 ret mov sadr,a inc dptr mov a,#0 movc a,@a+dptr mov sd_reg,a acall swrite inc dptr acall sdelay sjmp si00 db db db db db db db db db db
1ch, 1ch, 01h, 03h, 04h, 05h, 06h, 07h, 08h, 09h,
00000001b 00000000b 00000000b 11111011b 00000000b 00100000b 00001010b 00000000b 00000000b 00001010b
; ; ; ; ; ; ; ; ; ;
CONTROL CONTROL STATUS PCTRL PDRV ICTRL ITMG BFRAC BRATE ADCCTRL
db db db db
0ah, 0bh, 0ch, 0dh,
00000010b 00000111b 01111001b 10100110b
; ; ; ;
FWROW FWCOL LWROW LWCOL
db 0eh, 00000110b
; TCTRL
db db db db
0fh, 10h, 11h, 12h,
06h 06h 06h 06h
; ; ; ;
ERECPGA EROCPGA ORECPGA OROCPGA
db db db db db db db db
13h, 14h, 15h, 16h, 17h, 18h, 19h, 1ah,
00h 02h 00h 00h 4bh 00h 00h 00h
; ; ; ; ; ; ; ;
ROWEXPL ROWEXPH SROWEXP ERROR ITMG2 ICTRL2 HBLANK VBLANK
50
- RESET ON - RESET OFF
640 x 480
Bakalářská práce db 1bh, 00000100b db 0ffh
12.3.16
; CONFIG
SFC = 1
Podprogram pro obsluhu přerušení od sériového kanálu iscom
Podprogram slouží pro provádění komunikace po sériovém kanálu UART s ovládajícím zařízením (PC). V případě posílání paketu z PC má přijmout 14 bytů informace a uložit je do bufferu, pro který je vyhrazeno místo v paměti na adrese 30h – 3Dh. Po každém přijatém bytu informace volá podprogram time_out pro uvedení kanálu do výchozího stavu v případě přerušení spojení na delší dobu jak přibližně 65ms. iscom:
is00:
is01: is20:
is21:
jbc ti,is20 clr tr0 clr ri jb receive,is00 setb receive mov radr,#2fh inc radr mov @radr,sbuf cjne radr,#3dh,is01 clr receive setb packet reti acall time_out reti djnz 3bh,is21 djnz 3ch,is21 djnz 3dh,is21 setb trans reti acall inc_c mov sbuf,pdata reti
Pořadí všech 14 bytu v řídícím paketu je uvedeno v tab. 12. Prvním byte se uloží na adresu 30h v bufferu atd. 1-4 slouží pro nastavení rozměrů snímku, 5-8 pro nastavení programovatelných zesilovačů snímače, 9-11 pro nastavení doby expozice. Rozsahy hodnot musí odpovídat popisu v kap. 12.1. Byty 12-14 nenastavují snímač ale udávají počet hodnot, kolik má program přečíst z paměti. Jedná se o tří-bytové číslo, nejnižší byte je N1, nejvyšší je N3. Tzn. že pro rozlišení snímku 640 x 480 musí mít číslo N hodnotu 307200, což se rovná počtu obrazových bodů snímku. Další úlohou podprogramu iscom je vyslat obrazová data z paměti IO1 na sběrnici UART. Každé přerušení od vyslaného bytu kanálu se okamžitě vysílá další byte. Počet vysílaných dat určuje přijaté číslo N v řídícím paketu uložené v mikrokontroléru na adresách 3bh, 3ch a 3dh. Podprogram čte data z portu pdata (datová sběrnice paměti) a inkrementuje adresní čítač podprogramem inc_c.
51
Bakalářská práce Tab. 12 Pořadí a význam bytů v řídícím paketu Pořadí
Význam
1
FWROW FWCOL LWROW LWCOL ERECPGA EROCPGA ORECPGA OROCPGA ROWEXPL ROWEXPH SROWEXP N1 N2 N3
2 3 4 5 6 7 8 9 10 11 12 13 14
12.3.17
Podprogram set_param
Podprogram set_param uloží do registrů obrazového snímače prvních 11 bytů řídícího paketu uložených v datovém bufferu na adresách 30h – 3ah. Podprogram se volá z hlavní smyčky programu po příchodu řídícího paketu. set_param: se00:
se01:
12.3.18
mov radr,#30h mov adresa,#0ah acall sdelay mov sadr,adresa mov sd_reg,@radr acall swrite inc radr inc adresa cjne adresa,#0eh,se01 mov adresa,#0fh cjne radr,#3bh,se00 ret
Podprogram pro spuštění snímacího procesu flash
Spuštění snímacího procesu snímače se provede nastavením bitu CONTROL(RUN) = 1. Aby snímač pořídil pouze jeden snímek, musí se neprodleně poté nastavit bit CONTROL(RUN) = 0. Protože je nastavený bit CONFIG(SFC) = 1, snímač dokončí právě prováděný snímací proces a teprve poté oznámí dokončení procesu v registru STATUS a ukončí činnost. flash:
mov sadr,#1ch mov sd_reg,#00000100b acall swrite
52
Bakalářská práce mov sd_reg,#00000000b acall swrite ret
12.3.19
Podprogram wait_photo
Podprogram neustále v cyklu čte obsah registru snímače STATUS a ukončí se až je bit STATUS(RF) = 0. Volá se v hlavním programu po spuštění snímacího procesu a čeká do jeho ukončení, kdy snímač nastaví STATUS(RF) na Log 0 (během snímacího procesu je STATUS(RF) = 1). wait_photo: mov sadr,#01h w00: acall sread mov a,sd_reg jb acc.0,w00 ret
13 Řídící aplikace pro PC Pro ověření funkce zařízení byla napsána pomocné aplikace Downloader ADCS-2121 na obr. 46 pro OS Windows98/2000/XP, pomocí které lze načítat, zobrazovat obrázky a nastavovat potřebné parametry snímacího procesu. Aplikace je napsána ve vývojovém prostředí Delphi 7. Umožňuje nastavit hodnotu expozice (EXP) i hodnotu dolaďovacího registru expozice (SUB), dále zesílení programovatelných zesilovačů (EREC, EROC, OREC a OROC) a to jak dohromady, tak i jednotlivě. Dále lze nastavit pomocí myši libovolné rozlišení snímku a to zmáčknutím tlačítka „Nastavení Myší“ a pak jedním kliknutím do plochy se určí levý horní roh a druhým kliknutím do plochy se určí pravý dolní roh čtvercového výseku snímku. Průběžné souřadnice a rozlišení se zobrazují v daných kolonkách. Pro rychlé nastavení různých velikostí lze použít tlačítka 1/1, ¼, 1/16, 1/64, které nastaví dané plochy obrazu do středu v poměru stran 4:3. Vyfocení snímku se zahájí zmáčknutím tlačítka „Vyfoť“. Do mikrokontroléru zařízení se vyšle čtrnáctibytový paket dle tab. 12 s nastavenými parametry v aplikaci. Poté se čeká na přenos do počítače PC. Počet průběžně přenesených bytů se zobrazuje vedle tlačítka „Vyfoť“. Po přenesení všech dat se snímek zobrazí.
53
Bakalářská práce
Obr. 46 Pomocná aplikace Downloader ADCS-2121
14 Příklad snímku Na obr. 47 je příklad pořízeného snímku popsaným zařízením pomocí aplikace Downloader ADCS-2121. Hodnota expozice je nastavena na 386, zesílení všech zesilovačů A = 1,9. Rozlišení snímku je 640 x 480 pixelů.
54
Bakalářská práce
Obr. 47 Příklad pořízeného snímku
15 Další možnosti zjednodušení obvodu Výše popsané obvodové řešení pro připojení snímače obrazu k řídícímu mikrokontroléru se ukázalo být plně funkční. Dále se práce zabývala možností nahrazení paralelní pamětí SRAM pro uložení snímku běžnou sériovou pamětí FLASH a tím by se obvod značně zjednodušil. Nebyl by potřeba adresní čítač, oddělovací registr ani multiplexer. Takový obvod s použitím sériové paměti flash by mohl vypadat jako na obr. 48.
Obr. 48 Blokové schéma obvodu s použitím sériové paměti
55
Bakalářská práce Data ze snímače obrazu jsou napojena pouze na mikropočítač, na který je připojena sériová paměť flash přes sběrnici I2C. Úspora součástek by byla značná. Princip funkce obvodu je obdobný jako u výše popsaného obvodu v kap. 9. Mikropočítač spustí proces snímání a data postupně uloží do sériové obrazové paměti přes sběrnici I2C. V paměti může snímek setrvávat libovolnou dobu a do hostitelského zařízení může mikropočítač obrazová data přenést v libovolném formátu a rychlostí. Aby bylo možné realizovat obvod na obr. 48, musí se docílit potřebného zpomalení toku dat ze snímače obrazu, aniž by byl ovlivněn rozsah nastavení expoziční doby snímače. Toho je teoreticky možné dosáhnout zpomalením hodinového kmitočtu snímače v okamžiku počátku přenosu dat. Proto byla realizována řada pokusů. Sériové paměti flash používají zapisovací buffery o velikosti cca 255 bytů. Doba zápisu bufferu do paměťového pole flash je různá podle konkrétního typu paměti a pohybuje se od 10ms do 20ms viz [3]. Z toho plyne, že teoreticky maximální datový tok do sériové flash paměti je přibližně 25kB za sekundu, bez zahrnutí doby potřebné pro přenos dat do zapisovacího bufferu paměti. Z toho plyne že je potřeba zpomalit výstupní datový tok ze snímače alespoň 200-krát, ve skutečnosti však ještě více. Protože v době zápisu bufferu do pole flash není kam ukládat data ze snímače, bylo by vhodné snímač obrazu úplně zastavit. Zařízení popsané v kap.9 bylo upraveno tak, že v okamžiku vyslání prvního datového bytu ze snímače se na řádově desítky až stovky milisekund přeruší hodinový signál snímače obrazu. Výsledky byly neuspokojivé, pokaždé došlo ke znehodnocení snímku. Další pokusy tedy směřovaly na zpomalování hodinového kmitočtu. Zařízení bylo znovu upraveno a vybaveno multiplexerem, který v okamžiku vyslání prvního datového bytu ze snímače přepnul zdroj hodinového kmitočtu pro snímač na signál o kmitočtu daném předřadnou děličkou. Při zpomalování kmitočtu se měnila kvalita snímku. Čím bylo zpomalení větší, tím byl snímek světlejší, což šlo částečně korigovat snížením expoziční doby. Nicméně při snížení hodinového kmitočtu snímače na fOSC =1MHz (což je 25-krát nižší než hodnota maximální) je už pořízení uspokojivého snímku prakticky nemožné. Pro použití sériové paměti FLASH je však potřeba zpomalit hodinový kmitočet ještě asi desetkrát. Z pokusů vyplynulo, že se snímač obrazu ADCS-2121 při nízkých hodinových kmitočtech nechová optimálně a tedy v úvaze na obr. 48 nebylo pokračováno.
56
Bakalářská práce
16 Závěr Na základě získaných poznatků o snímači obrazu ADCS-2121 bylo navrženo dle požadavků zadání obvodové zapojení pro řídící mikrokontrolér, kterým je možné ovládat snímač obrazu a přenášet získaná obrazová data do jiných zařízení. Bylo realizováno potřebné programové vybavení pro řídící mikrokontrolér řady 8051, které umožňuje přenos obrazových dat z navrženého zařízení po sériové asynchronní sběrnici. Dále byl realizován vývojový samostatný modul osazený obrazovým snímačem ADCS2121 a byl sestaven na nepájivém kontaktním poli s tímto modulem funkční vzorek navrženého obvodu. Pro ověření funkce navrženého obvodu, tedy získání obrazových dat (snímků) byla naprogramována pomocná aplikace pro operační systém Windows, která umožňuje komunikaci s navrženým zařízením a dokáže načíst obrazová data a následně je zobrazit na monitoru osobního počítače. Navržený obvod je zcela funkční. Poté se práce zabývala možností použití sériové paměti FLASH na místě obrazové paměti SRAM z důvodu značné minimalizace obvodu. Tato úvaha vyžaduje značné zpomalení výstupního toku dat ze snímače, což lze realizovat pouze snížením jeho hodinového kmitočtu. Snímač ADCS-2121 však při pokusech se zpomalováním hodinového kmitočtu nejevil vyhovující funkci a proto v této úvaze nebylo pokračováno. Pro obvod pro přenos dat ze snímače obrazu byla navržena desku plošných spojů. Všechny body zadání byly tímto splněny.
57
Bakalářská práce
17 Použitá literatura [1]
Agilent ADCS-1121, ADCS-2121 CMOS Monochrome Image Sensors. Agilent, January 14, 2003, www.agilent.com
[2]
Atmel Corporation AT89LS51 8-bit Low Voltage Microcontroller with 4K Bytes InSystém Programmable Flash. Atmel Corporation, 2005, www.atmel.com
[3]
Atmel Corporation AT45DB041B 4-megabit 2,5-volt or 2,7-volt DataFlash. Atmel Corporation , 2005, www.atmel.com
[4]
Samsung Electronics K6T4008V1C 512x8 bit Low Power and Low Voltage CMOS Static RAM. Samsung Electronics, 2001, www.samsung.com
[5]
STMicroelectronics LE33CD/CZ Very Low Drop Voltage Regulators With Inhibit. STMicroelectronics, 1998, www.st.com
[6]
Philips 74HC4040 12-stage Binary Ripple Counter. Philips , 1990, www.philips.com
[7]
Philips 74HC573 www.philips.com
[8]
Philips 74HC00 Hex Inverter. Philips , 1990, www.philips.com
[9]
Maxim MAX232 +5V Powered, Multichannel RS-232 Drivers/Receivers. Maxim, 2003, www.maxim-ic.com
Octal
D-type
Transparent
Latch,
3-state.
Philips,
1990,
[10] STMicroelectronics LF50CV Very Low Drop Voltage Regulators With Inhibit. STMicroelectronics, 1999, www.st.com [11] Micron MT9V011 1/4-Inch VGA CMOS Digital Image Sensor. Micron, January 2005, www.micron.com
58