OV9665 CMOS-SXGA-kleurensensor#

Camera-interfacing#

De cameramodule heeft 24 pinnen op zijn flat pack-connector (FPC). Hieronder is de pinout voor de cameramodule weergegeven. Pin 1 is de meest rechtse pin op de FPC met de cameramodule met de goede kant naar boven.

Pin

Signaal

Pin

Signaal

1

NC

13

XCLK

2

AGND

14

Y8

3

SIO_D

15

DGND

4

AVDD

16

Y7

5

SIO_C

17

PCLK

6

RESET

18

Y6

7

VSYNC

19

Y2

8

PWDN

20

Y5

9

HREF

21

Y3

10

NC

22

Y4

11

DVDD

23

Y1

12

Y9

24

Y0

Voedingsregeling#

Je moet 2,8V tot 3,0V aan de AVDD-pin leveren en 1,8V tot 3,0V aan de DVDD-pin. Je moet de AVDD- en DVDD-pinnen voeden met afzonderlijke ruisarme voedingen. Bovendien moeten de AGND- en DGND-pinnen zo lang mogelijk in je opstelling gescheiden zijn voor een goede beeldkwaliteit.

Trek de RESET-pin laag om de cameramodule te resetten.

Trek de PWDN-pin hoog om de cameramodule uit te schakelen in de power-down-modus.

Besturingsbus#

De SIO_D- en SIO_C-pinnen worden gebruikt om de cameramodule te besturen. De SIO_D-pin is de datapin van de besturingsbus en de SIO_C-pin is de klokpin van de besturingsbus. Zie de initialization-sectie voor meer details.

Databus#

De Y0- tot en met Y9-pinnen op de cameramodule vormen een 10-bits databus. Voor de RGB565- en YUV422-modus worden Y0 en Y1 niet gebruikt. Y2 tot en met Y9 worden gebruikt om een 8-bits byte te verzenden, waarbij Y2 de LSB is en Y9 de MSB.

Terwijl de HREF-pin hoog is, zijn Y2 tot en met Y9 geldig. Op de stijgende flank van de PCLK-pin moeten Y2 tot en met Y9 worden gesampled. Elke pixel wordt overgedragen in 2 PCLK-pulsen. In de SXGA-modus gaat de PCLK-pin 2.560 keer hoog terwijl de HREF-pin hoog is en gaat de HREF-pin 1024 keer hoog. In de VGA-modus gaat de PCLK-pin 1.280 keer hoog terwijl de HREF-pin hoog is en gaat de HREF-pin 480 keer hoog. De SXGA-resolutie is 1280x1024 pixels en de VGA-resolutie is 640x480 pixels.

De VSYNC-pin gaat hoog en vervolgens laag om het begin van elk frame te markeren.

In de RGB565-modus stuurt de cameramodule [MSB {R4, R3, R2, R1, R0, G5, G4, G3} LSB] bij elke oneven klok en [MSB {G2, G1, G0, B4, B3, B2, B1, B0} LSB] bij elke even klok voor elke pixel.

In de YUV422-modus stuurt de cameramodule 8-bits YUV-gegevens waarbij U en V op de halve bandbreedte worden verzonden. De cameramodule stuurt Y0 op de eerste klok, gevolgd door U op de tweede klok, gevolgd door Y1 op de derde klok, gevolgd door V op de vierde klok en herhaalt vervolgens het patroon. Y0, U en V vormen pixel0 en Y1, U en V vormen pixel1. Er worden elke vier klokken twee pixels verzonden.

Camera-initialisatie#

Om de OV9665-cameramodule te besturen moet je ermee communiceren via het SCCB-protocol – dat precies hetzelfde is als het I2C-protocol. De slave-adressen van het apparaat zijn 0x60 voor schrijven en 0x61 voor lezen. Om de camera te initialiseren moet je 0x80 naar register 0x12 schrijven om de camera te resetten en vervolgens een seconde wachten. Daarna moet je initialisatieregisterinstellingen verzenden. Merk op dat de cameramodule een klokinvoer van 10 MHz tot 24 MHz (meestal 24 MHz) op zijn XCLK-pin vereist om te werken.

SXGA-initialisatie#

Om de camera voor de SXGA-modus te initialiseren, stuur je de volgende registerinstellingen. Om de framesnelheid in de SXGA-modus in te stellen, schrijf je de volgende waarden naar registeradres 0x11: 0x80 voor 15 FPS, 0x81 voor 7,5 FPS, 0x82 voor 5 FPS, 0x83 voor 3,75 FPS, 0x84 voor 3 FPS enzovoort wanneer XCLK op 24 MHz wordt aangestuurd. LET OP: De FPS-waarde kan niet te laag zijn, anders zal de camera niet correct werken.

\[\text{FPS} = \frac{15 \cdot (\text{XCLK}_\text{MHz} / 24)}{(\text{value} - \text{0x80}) + 1}\]
\[\text{PCLK Frequency} = \frac{\text{XCLK}_\text{MHz}}{(\text{value} - \text{0x80}) + 1}\]

VGA-initialisatie#

Om de camera voor de VGA-modus te initialiseren, stuur je de volgende registerinstellingen. Om de framesnelheid in de VGA-modus in te stellen, schrijf je de volgende waarden naar registeradres 0x11: 0x80 voor 30 FPS, 0x81 voor 15 FPS, 0x82 voor 10 FPS, 0x83 voor 7,5 FPS, 0x84 voor 6 FPS enzovoort wanneer XCLK op 24 MHz wordt aangestuurd. LET OP: De FPS-waarde kan niet te laag zijn, anders zal de camera niet correct werken.

\[\text{FPS} = \frac{30 \cdot (\text{XCLK}_\text{MHz} / 24)}{(\text{value} - \text{0x80}) + 1}\]
\[\text{PCLK Frequency} = \frac{\text{XCLK}_\text{MHz}}{(\text{value} - \text{0x80}) + 1}\]

Kleurmodus#

Zodra de camera is geïnitialiseerd op ofwel SXGA- of VGA-modus, bij een bepaalde framesnelheid, moet je vervolgens het kleuruitvoerformaat van de camera instellen. Je kunt ofwel RGB565 of YUV422 gebruiken. Stuur deze registerinstellingen om de RGB565-modus binnen te gaan en deze registerinstellingen om de YUV422-modus binnen te gaan.