OV7670 no FIFO Nucleo F411

Dependencies:   mbed OV7670 FastPWM

Committer:
rulla
Date:
Mon Nov 21 10:04:43 2016 +0000
Revision:
1:b5475be96383
Parent:
0:d69a19a5c0ff
Child:
2:9c5089ac2596
;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mio 0:d69a19a5c0ff 1 //
mio 0:d69a19a5c0ff 2 // OV7670 + FIFO AL422B camera board test
mio 0:d69a19a5c0ff 3 //
mio 0:d69a19a5c0ff 4 #include "mbed.h"
rulla 1:b5475be96383 5 #include "OV6620.h"
mio 0:d69a19a5c0ff 6
rulla 1:b5475be96383 7 OV6620 camera(
mio 0:d69a19a5c0ff 8 p28,p27, // SDA,SCL(I2C / SCCB)
mio 0:d69a19a5c0ff 9 p21,p22,p20, // VSYNC,HREF,WEN(FIFO)
rulla 1:b5475be96383 10 Port0,0x07878000, // D7-D0
rulla 1:b5475be96383 11 p23) ; // RRST,OE,RCLK
mio 0:d69a19a5c0ff 12
rulla 1:b5475be96383 13 Serial pc(USBTX,USBRX);
mio 0:d69a19a5c0ff 14
mio 0:d69a19a5c0ff 15 #define SIZEX (160)
mio 0:d69a19a5c0ff 16 #define SIZEY (120)
rulla 1:b5475be96383 17 #define SIZE SIZEX*SIZEY
rulla 1:b5475be96383 18
rulla 1:b5475be96383 19 //uint8_t rgb[SIZE];
rulla 1:b5475be96383 20 //unsigned char *bank1 = (unsigned char *)(0x2007C000);
rulla 1:b5475be96383 21 uint16_t bank0,bank1,bank2,bank3;
mio 0:d69a19a5c0ff 22
mio 0:d69a19a5c0ff 23 int main() {
mio 0:d69a19a5c0ff 24
rulla 1:b5475be96383 25 pc.baud(115200);
mio 0:d69a19a5c0ff 26
rulla 1:b5475be96383 27 TFT.set_orientation(3);
rulla 1:b5475be96383 28
rulla 1:b5475be96383 29 camera.Reset() ;
rulla 1:b5475be96383 30 int i;
rulla 1:b5475be96383 31 char data1[OV7670_REGMAX],data2[OV7670_REGMAX];
rulla 1:b5475be96383 32 for (i=0;i<OV7670_REGMAX;i++)
rulla 1:b5475be96383 33 {
rulla 1:b5475be96383 34 data1[i]=cam.ReadReg(i); // READ REG
rulla 1:b5475be96383 35 //if ((i & 0x0F) == 0) pc.printf("\r\n%02X : ",i);
rulla 1:b5475be96383 36 //pc.printf("Add %02X = %02X ,",i,data);
rulla 1:b5475be96383 37 }
mio 0:d69a19a5c0ff 38 camera.InitQQVGA() ;
rulla 1:b5475be96383 39 pc.printf("\r\nDefault\r\n");
rulla 1:b5475be96383 40 for (i=0;i<OV7670_REGMAX;i++)
rulla 1:b5475be96383 41 {
rulla 1:b5475be96383 42 data2[i]=cam.ReadReg(i); // READ REG
rulla 1:b5475be96383 43 // if ((i & 0x0F) == 0) pc.printf("\r\n%02X : ",i);
rulla 1:b5475be96383 44 if(data1[i]!=data2[i]) pc.printf("Add %02X = %02X/%02X ,",i,data1[i],data2[i]);
rulla 1:b5475be96383 45 }
rulla 1:b5475be96383 46
mio 0:d69a19a5c0ff 47 while(1)
mio 0:d69a19a5c0ff 48 {
mio 0:d69a19a5c0ff 49 pc.printf("Hit Any Key to send RGBx160x120 Capture Data.\r\n") ;
mio 0:d69a19a5c0ff 50 while(!pc.readable()) ;
mio 0:d69a19a5c0ff 51 pc.getc() ;
mio 0:d69a19a5c0ff 52 camera.CaptureNext() ;
mio 0:d69a19a5c0ff 53 while(camera.CaptureDone() == false) ;
mio 0:d69a19a5c0ff 54 pc.printf("*\r\n") ;
mio 0:d69a19a5c0ff 55 camera.ReadStart() ;
mio 0:d69a19a5c0ff 56 i = 0 ;
mio 0:d69a19a5c0ff 57 for (int y = 0;y < SIZEY;y++) {
mio 0:d69a19a5c0ff 58 int r,g,b,d1,d2 ;
mio 0:d69a19a5c0ff 59 for (int x = 0;x < SIZEX;x++) {
mio 0:d69a19a5c0ff 60 d1 = camera.ReadOneByte() ; // upper nibble is XXX , lower nibble is B
mio 0:d69a19a5c0ff 61 d2 = camera.ReadOneByte() ; // upper nibble is G , lower nibble is R
mio 0:d69a19a5c0ff 62 b = (d1 & 0x0F) ;
mio 0:d69a19a5c0ff 63 g = (d2 & 0xF0) >> 4 ;
mio 0:d69a19a5c0ff 64 r = (d2 & 0x0F) ;
mio 0:d69a19a5c0ff 65 pc.printf ("%1X%1X%1X",r,g,b) ;
mio 0:d69a19a5c0ff 66 }
mio 0:d69a19a5c0ff 67 pc.printf("\r\n") ;
mio 0:d69a19a5c0ff 68 }
mio 0:d69a19a5c0ff 69 camera.ReadStop() ;
mio 0:d69a19a5c0ff 70 }
mio 0:d69a19a5c0ff 71 }