fuyuno sakura
/
OV7670_with_AL422B_QQVGA_test
OV7670 with FIFO AL422B (TORAGI Camera TYPE B) test program
main.cpp@0:d69a19a5c0ff, 2012-02-14 (annotated)
- Committer:
- mio
- Date:
- Tue Feb 14 13:25:25 2012 +0000
- Revision:
- 0:d69a19a5c0ff
First Version
Who changed what in which revision?
User | Revision | Line number | New 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" |
mio | 0:d69a19a5c0ff | 5 | #include "ov7670.h" |
mio | 0:d69a19a5c0ff | 6 | |
mio | 0:d69a19a5c0ff | 7 | OV7670 camera( |
mio | 0:d69a19a5c0ff | 8 | p28,p27, // SDA,SCL(I2C / SCCB) |
mio | 0:d69a19a5c0ff | 9 | p21,p22,p20, // VSYNC,HREF,WEN(FIFO) |
mio | 0:d69a19a5c0ff | 10 | p19,p18,p17,p16,p15,p14,p13,p12, // D7-D0 |
mio | 0:d69a19a5c0ff | 11 | p23,p24,p25) ; // RRST,OE,RCLK |
mio | 0:d69a19a5c0ff | 12 | |
mio | 0:d69a19a5c0ff | 13 | Serial pc(USBTX,USBRX) ; |
mio | 0:d69a19a5c0ff | 14 | |
mio | 0:d69a19a5c0ff | 15 | #define SIZEX (160) |
mio | 0:d69a19a5c0ff | 16 | #define SIZEY (120) |
mio | 0:d69a19a5c0ff | 17 | |
mio | 0:d69a19a5c0ff | 18 | int main() { |
mio | 0:d69a19a5c0ff | 19 | int i ; |
mio | 0:d69a19a5c0ff | 20 | pc.baud(115200) ; |
mio | 0:d69a19a5c0ff | 21 | pc.printf("Camera resetting..\r\n") ; |
mio | 0:d69a19a5c0ff | 22 | |
mio | 0:d69a19a5c0ff | 23 | camera.Reset() ; |
mio | 0:d69a19a5c0ff | 24 | |
mio | 0:d69a19a5c0ff | 25 | pc.printf("Before Init...\r\n") ; |
mio | 0:d69a19a5c0ff | 26 | pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ; |
mio | 0:d69a19a5c0ff | 27 | for (i=0;i<OV7670_REGMAX;i++) { |
mio | 0:d69a19a5c0ff | 28 | int data ; |
mio | 0:d69a19a5c0ff | 29 | data = camera.ReadReg(i) ; // READ REG |
mio | 0:d69a19a5c0ff | 30 | if ((i & 0x0F) == 0) { |
mio | 0:d69a19a5c0ff | 31 | pc.printf("\r\n%02X : ",i) ; |
mio | 0:d69a19a5c0ff | 32 | } |
mio | 0:d69a19a5c0ff | 33 | pc.printf("%02X ",data) ; |
mio | 0:d69a19a5c0ff | 34 | } |
mio | 0:d69a19a5c0ff | 35 | pc.printf("\r\n") ; |
mio | 0:d69a19a5c0ff | 36 | |
mio | 0:d69a19a5c0ff | 37 | camera.InitQQVGA() ; |
mio | 0:d69a19a5c0ff | 38 | |
mio | 0:d69a19a5c0ff | 39 | pc.printf("After Init...\r\n") ; |
mio | 0:d69a19a5c0ff | 40 | pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ; |
mio | 0:d69a19a5c0ff | 41 | for (i=0;i<OV7670_REGMAX;i++) { |
mio | 0:d69a19a5c0ff | 42 | int data ; |
mio | 0:d69a19a5c0ff | 43 | data = camera.ReadReg(i) ; // READ REG |
mio | 0:d69a19a5c0ff | 44 | if ((i & 0x0F) == 0) { |
mio | 0:d69a19a5c0ff | 45 | pc.printf("\r\n%02X : ",i) ; |
mio | 0:d69a19a5c0ff | 46 | } |
mio | 0:d69a19a5c0ff | 47 | pc.printf("%02X ",data) ; |
mio | 0:d69a19a5c0ff | 48 | } |
mio | 0:d69a19a5c0ff | 49 | pc.printf("\r\n") ; |
mio | 0:d69a19a5c0ff | 50 | |
mio | 0:d69a19a5c0ff | 51 | // CAPTURE and SEND LOOP |
mio | 0:d69a19a5c0ff | 52 | while(1) |
mio | 0:d69a19a5c0ff | 53 | { |
mio | 0:d69a19a5c0ff | 54 | pc.printf("Hit Any Key to send RGBx160x120 Capture Data.\r\n") ; |
mio | 0:d69a19a5c0ff | 55 | while(!pc.readable()) ; |
mio | 0:d69a19a5c0ff | 56 | pc.getc() ; |
mio | 0:d69a19a5c0ff | 57 | camera.CaptureNext() ; |
mio | 0:d69a19a5c0ff | 58 | while(camera.CaptureDone() == false) ; |
mio | 0:d69a19a5c0ff | 59 | pc.printf("*\r\n") ; |
mio | 0:d69a19a5c0ff | 60 | camera.ReadStart() ; |
mio | 0:d69a19a5c0ff | 61 | i = 0 ; |
mio | 0:d69a19a5c0ff | 62 | for (int y = 0;y < SIZEY;y++) { |
mio | 0:d69a19a5c0ff | 63 | int r,g,b,d1,d2 ; |
mio | 0:d69a19a5c0ff | 64 | for (int x = 0;x < SIZEX;x++) { |
mio | 0:d69a19a5c0ff | 65 | d1 = camera.ReadOneByte() ; // upper nibble is XXX , lower nibble is B |
mio | 0:d69a19a5c0ff | 66 | d2 = camera.ReadOneByte() ; // upper nibble is G , lower nibble is R |
mio | 0:d69a19a5c0ff | 67 | b = (d1 & 0x0F) ; |
mio | 0:d69a19a5c0ff | 68 | g = (d2 & 0xF0) >> 4 ; |
mio | 0:d69a19a5c0ff | 69 | r = (d2 & 0x0F) ; |
mio | 0:d69a19a5c0ff | 70 | pc.printf ("%1X%1X%1X",r,g,b) ; |
mio | 0:d69a19a5c0ff | 71 | } |
mio | 0:d69a19a5c0ff | 72 | pc.printf("\r\n") ; |
mio | 0:d69a19a5c0ff | 73 | } |
mio | 0:d69a19a5c0ff | 74 | camera.ReadStop() ; |
mio | 0:d69a19a5c0ff | 75 | } |
mio | 0:d69a19a5c0ff | 76 | } |