capstone_finish

Dependencies:   BufferedSerial motor_sn7544

Files at this revision

API Documentation at this revision

Comitter:
kangmingyo
Date:
Tue Aug 13 06:01:16 2019 +0000
Parent:
3:2a3664dc6634
Child:
5:53dd2abce6b3
Commit message:
revised 190813

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
ov7670.h Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Tue Aug 13 05:53:22 2019 +0000
+++ b/main.cpp	Tue Aug 13 06:01:16 2019 +0000
@@ -14,7 +14,7 @@
 
 OV7670 camera(
     D14,D15,       // SDA,SCL(I2C / SCCB)
-    D9,D14,D11,   // VSYNC,HREF,WEN(FIFO)
+    D9,D8,D11,   // VSYNC,HREF,WEN(FIFO)
     //p18,p17,p16,p15,p11,p12,p14,p13, // D7-D0
     PortB,0xFF,
     D13,D12,D6) ; // RRST,OE,RCLK
--- a/ov7670.h	Tue Aug 13 05:53:22 2019 +0000
+++ b/ov7670.h	Tue Aug 13 06:01:16 2019 +0000
@@ -6,7 +6,7 @@
 #define OV7670_WRITEWAIT (20)
 #define OV7670_NOACK (0)
 #define OV7670_REGMAX (201)
-#define OV7670_I2CFREQ (50000)
+#define OV7670_I2CFREQ (40000)
 
 //
 // OV7670 + FIFO AL422B camera board test
@@ -14,7 +14,7 @@
 class OV7670
 {
 public:
-    I2C camera ;
+    I2C _i2c ;
     InterruptIn vsync,href;
     DigitalOut wen ;
     PortIn data ;
@@ -36,10 +36,10 @@
         PinName rt, // /RRST
         PinName o,  // /OE
         PinName rc  // RCLK
-    ) : camera(sda,scl),vsync(vs),href(hr),wen(we),data(port,mask),rrst(rt),oe(o),rclk(rc)
+    ) : _i2c(sda,scl),vsync(vs),href(hr),wen(we),data(port,mask),rrst(rt),oe(o),rclk(rc)
     {
-        camera.stop() ;
-        camera.frequency(OV7670_I2CFREQ) ;
+        _i2c.stop() ;
+        _i2c.frequency(OV7670_I2CFREQ) ;
         vsync.fall(this,&OV7670::VsyncHandler) ;
         href.rise(this,&OV7670::HrefHandler) ;
         CaptureReq = false ;
@@ -75,36 +75,32 @@
     // write to camera
     void WriteReg(int addr,int data)
     {
-        // WRITE 0x42,ADDR,DATA
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(data) ;
-        camera.stop() ;
+     int status;
+     char data_write[2];
+    data_write[0]= addr;
+    data_write[1]= data;
+    status = _i2c.write(OV7670_WRITE,data_write,2,0);
+    if(status!=0){
+//        printf("I2C configuration error(adr: %x)!\r\n",addr);
+        while(1){
+        }
+    }
     }
 
     // read from camera
     int ReadReg(int addr)
     {
-        int data ;
-
-        // WRITE 0x42,ADDR
-        camera.start() ;
-        camera.write(OV7670_WRITE) ;
-        wait_us(OV7670_WRITEWAIT);
-        camera.write(addr) ;
-        camera.stop() ;
-        wait_us(OV7670_WRITEWAIT);
-
-        // WRITE 0x43,READ
-        camera.start() ;
-        camera.write(OV7670_READ) ;
-        wait_us(OV7670_WRITEWAIT);
-        data = camera.read(OV7670_NOACK) ;
-        camera.stop() ;
-
+       char data_write[2];
+    char data_read[2];
+    int data;
+    int status;
+   
+    data_write[0]=addr;
+    _i2c.write(OV7670_WRITE, data_write, 1, 0);
+    status =_i2c.read(OV7670_READ, data_read, 1, 0);
+    data = (int)data_read[0];
+ //   printf("Data is %x\r\n",data);
+//    printf("Status is %d\r\n",status);
         return data ;
     }
 
@@ -211,6 +207,13 @@
     }
     void  InitQVGAYUV(bool flipv,bool fliph)
     { 
+        if (ReadReg(REG_PID) != 0x76)           // check id camera
+         {
+            printf("ERROR\r\n");
+        }else{
+
+            printf("SUCCESS\r\n");
+            }
         WriteReg(REG_COM7, 0x00);           // YUV
         WriteReg(REG_COM17, 0x00);          // color bar disable
         WriteReg(REG_COM3, 0x0C);
@@ -433,7 +436,7 @@
     }
 
     // Data Read (PortIn)
-    int ReadOneWord(void) //2byte
+    int ReadOneWord(void)
     {
         //  int r,r1,r2,r3,r4 ;
 //        rclk = 1 ;