Toto je starší verze dokumentu!
Vytvořil: Martin Kráčala, 17.1.2015
Tento projekt se zabývá využitím CMOS kamerového modulu OV7670 firmy OmniVision s FIFO bufferem AL422 ve spojení s mikrokontroléry s architekturou ARM. Projekt byl realizován na platformě FRDM-KL25Z od firmy Freescale s mikroprocesorem ARM Cortex-M0+ ve vývojovém prostředí mbed. Obrazová data jsou KL25Z postupně vyčítána z FIFO bufferu a posílána sériovou komunikací do PC. V rámci tohoto projektu byla dále vytvořena aplikace v prostředí MATLAB, která umožňuje připojení k sériovému portu a zpracování přijímaných obrazových dat.
Projekt je založen na „ultra-low-cost“ vývojové desce FRDM-KL25Z firmy Freescale s mikroprocesorem ARM® Cortex™-M0+. Základní charakteristiky desky KL25Z jsou následující:
Použitou periferií pro snímání obrazu je modul kamery OV7670 firmy OmniVision s integrovaným FIFO bufferem AL422, konkrétně se jedná o verzi CF76700-V3. Tato kamera je vybavena CMOS senzorem schopným zaznamenávat snímky s rozlišením VGA (640×480, 0.3 Mpx) při obnovovací frekvenci až 30 fps společně a dalšími periferiemi zajišťujícími obrazové předzpracování a externí konektivitu. Kamera je ovládána prostřednictvím SCCB sběrnice. Jedná se o I2C rozhraní s maximální hodinovou frekvencí 400 kHz, v projektu je použito 100 kHz..
The sensor can output the following formats on the 8 bit interface:
YUV/YCbCr 4:2:2 RGB565/555/444 GRB 4:2:2 Raw RGB In addition to the 8 data lines, the following handshaking signals exist:
VSYNC – Vertical sync output – Low during frame HREF – Horizontal reference – High during active pixels of row PCLK – Pixel clock output – Free running clock. Data is valid on rising edge. The OV7670 is clocked from a 24MHz oscillator. This provides a pixel clock (PCLK) output of 24MHz.
The Averlogic AL422B provides 3Mbits of video frame buffer memory configured as a 393,216 byte x 8 bit FIFO.
The internal memory of the AL422B is DRAM and requires continuous refreshing. The fastest clock applied to either the write clock (WCK) or the read clock (RCK) is used as the DRAM refresh timing clock. The datasheet recommends that the WCK and RCK are kept free running at least 1MHz at all times.
While the OV7670’s pixel clock (PCLK) can be turned off during horizontal blanking COM10 bit 5, the PCLK is feed directly into the write clock (WCK) pin of the AL422B for DRAM refreshing. To prevent clocking the horizontal blanking data into the FIFO, a NAND gate (U1) is used to invert the HREF output and feed this signal into the write enable (WE) pin of the AL422. The second input of the NAND gate is provided as a user controllable active high write enable (WEN).
Version 1.0 / Version 2.0 It appears two versions of the OV7970 Camera Module with AL422 FIFO exist. Apart from the addition of resistors on the SCCB, pin 6 on the version 1 module is designated as write reset (WRST) and pin 6 on the version 2 module is designated as HREF.
On the version 2 module, VSYNC from the OV7670 image sensor is connected directly to the AL422’s write reset (WRST). The concept is a low on the VSYNC (start of frame) can reset the write counter of the FIFO automatically. For this to occur, the VSYNC signal needs to be inverted. This can be done by setting COM10, bit 1 (VSYNC negative).
Tato kamera standardně disponuje kvalitním CMOS senzorem schopným zaznamenávat rozlišení až 640×480 px (VGA neboli 0.3 Mpx)
při obnovovací frekvenci až 30 fps společně s dalšími periferiemi zajišťující obrazové předzpracování a externí konektivitu. Kamera obecně
vždy zaznamenává obraz ve výše zmíněném rozlišení a obnovovací frekvenci, který je poté na základě nastavení kamery předzpracováván digitálním signálovým procesorem (DSP) a poté teprve odesílán pomocí DCMI sběrnice do koncového zařízení. Tato konfigurace je prováděna právě pomocí zmíněné SCCB sběrnice. Kamera tedy na základě nastavení podporuje rozlišení jako zmíněné VGA nebo CIF a jejich alternativy, datové formáty jako RGB565/555 nebo YUV/YCbCr(4:2:2) atd.
Následující video dokazuje funkčnost projektu. Je spuštěna aplikace v MATLABu, provedeno připojení k sériovému portu, zachycení a přenesení několika snímků s různým nastavením.