OV7670 Library

Dependents:   OV7670_make

Committer:
kangmingyo
Date:
Wed Jul 31 13:09:52 2019 +0000
Revision:
7:6c66c7f5676d
Parent:
6:8dac6edf2496
190731

Who changed what in which revision?

UserRevisionLine numberNew contents of line
edodm85 0:810d59d0b843 1 //
edodm85 0:810d59d0b843 2 // OV7670 library
edodm85 0:810d59d0b843 3 //
edodm85 0:810d59d0b843 4
edodm85 0:810d59d0b843 5 #pragma once
edodm85 0:810d59d0b843 6 #include "mbed.h"
edodm85 0:810d59d0b843 7 #include "ov7670reg.h"
edodm85 0:810d59d0b843 8
edodm85 0:810d59d0b843 9 #define OV7670_WRITE (0x42)
edodm85 0:810d59d0b843 10 #define OV7670_READ (0x43)
edodm85 0:810d59d0b843 11 #define OV7670_WRITEWAIT (20)
edodm85 0:810d59d0b843 12 #define OV7670_NOACK (0)
edodm85 0:810d59d0b843 13 #define OV7670_REGMAX (201)
edodm85 0:810d59d0b843 14 #define OV7670_I2CFREQ (100000)
edodm85 0:810d59d0b843 15
edodm85 0:810d59d0b843 16
edodm85 0:810d59d0b843 17 class OV7670
edodm85 0:810d59d0b843 18 {
edodm85 0:810d59d0b843 19 public:
edodm85 0:810d59d0b843 20
edodm85 0:810d59d0b843 21 OV7670(
edodm85 0:810d59d0b843 22 PinName sda, // Camera I2C port
edodm85 0:810d59d0b843 23 PinName scl, // Camera I2C port
edodm85 0:810d59d0b843 24 PinName vs, // VSYNC
edodm85 0:810d59d0b843 25 PinName hr, // HREF
edodm85 0:810d59d0b843 26 PinName we, // WEN
edodm85 0:810d59d0b843 27
edodm85 0:810d59d0b843 28 PortName port, // 8bit bus port
edodm85 0:810d59d0b843 29 int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000
edodm85 0:810d59d0b843 30
edodm85 0:810d59d0b843 31 PinName rt, // /RRST
edodm85 0:810d59d0b843 32 PinName o, // /OE
kangmingyo 6:8dac6edf2496 33 PinName pck // PCLK
edodm85 0:810d59d0b843 34 );
edodm85 0:810d59d0b843 35
edodm85 0:810d59d0b843 36 ~OV7670();
edodm85 0:810d59d0b843 37
kangmingyo 5:02b9d0e52021 38
kangmingyo 5:02b9d0e52021 39
edodm85 0:810d59d0b843 40 void CaptureNext(void); // capture request
edodm85 0:810d59d0b843 41 bool CaptureDone(void); // capture done? (with clear)
edodm85 0:810d59d0b843 42 void WriteReg(int addr,int data); // write to camera
edodm85 0:810d59d0b843 43 int ReadReg(int addr); // read from camera
edodm85 0:810d59d0b843 44 void Reset(void); // reset reg camera
edodm85 4:119b4c04a4ed 45 int Init(char c, int n); // Old init reg
edodm85 4:119b4c04a4ed 46 int Init(char *format, int n); // init reg
edodm85 4:119b4c04a4ed 47 void VsyncHandler(void); // New vsync handler
kangmingyo 6:8dac6edf2496 48 void VsyncHandler2(void);
kangmingyo 6:8dac6edf2496 49 void pclkHandler(void); // href handler
edodm85 0:810d59d0b843 50 int ReadOnebyte(void); // Data Read
edodm85 0:810d59d0b843 51 void ReadStart(void); // Data Start
edodm85 0:810d59d0b843 52 void ReadStop(void); // Data Stop
kangmingyo 7:6c66c7f5676d 53 // char ram_data[640][480];
kangmingyo 7:6c66c7f5676d 54 InterruptIn vsync,pclk;
kangmingyo 7:6c66c7f5676d 55 // uint8_t data_message[76800 ];
edodm85 0:810d59d0b843 56
edodm85 0:810d59d0b843 57 private:
kangmingyo 6:8dac6edf2496 58 int _x,_y;
kangmingyo 5:02b9d0e52021 59 // I2C _i2c;
kangmingyo 6:8dac6edf2496 60
kangmingyo 5:02b9d0e52021 61 I2C _i2c;
edodm85 0:810d59d0b843 62 DigitalOut wen;
edodm85 0:810d59d0b843 63 PortIn data;
kangmingyo 6:8dac6edf2496 64 DigitalOut rrst,oe;
kangmingyo 6:8dac6edf2496 65 DigitalIn href;
edodm85 0:810d59d0b843 66 volatile int LineCounter;
edodm85 0:810d59d0b843 67 volatile int LastLines;
edodm85 0:810d59d0b843 68 volatile bool CaptureReq;
edodm85 0:810d59d0b843 69 volatile bool Busy;
edodm85 0:810d59d0b843 70 volatile bool Done;
kangmingyo 6:8dac6edf2496 71 long cnt;
edodm85 4:119b4c04a4ed 72 char *format_temp;
kangmingyo 7:6c66c7f5676d 73 volatile int flag;
edodm85 0:810d59d0b843 74 };