OV7670 Library
ov7670.h@6:8dac6edf2496, 2019-07-30 (annotated)
- Committer:
- kangmingyo
- Date:
- Tue Jul 30 09:04:01 2019 +0000
- Revision:
- 6:8dac6edf2496
- Parent:
- 5:02b9d0e52021
- Child:
- 7:6c66c7f5676d
OV7670
Who changed what in which revision?
User | Revision | Line number | New 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 | 6:8dac6edf2496 | 53 | // char ram_data[640][480]; |
kangmingyo | 6:8dac6edf2496 | 54 | InterruptIn vsync; |
kangmingyo | 6:8dac6edf2496 | 55 | InterruptIn pclk; |
edodm85 | 0:810d59d0b843 | 56 | |
edodm85 | 0:810d59d0b843 | 57 | |
edodm85 | 0:810d59d0b843 | 58 | private: |
kangmingyo | 6:8dac6edf2496 | 59 | int _x,_y; |
kangmingyo | 5:02b9d0e52021 | 60 | // I2C _i2c; |
kangmingyo | 6:8dac6edf2496 | 61 | |
kangmingyo | 5:02b9d0e52021 | 62 | I2C _i2c; |
edodm85 | 0:810d59d0b843 | 63 | DigitalOut wen; |
edodm85 | 0:810d59d0b843 | 64 | PortIn data; |
kangmingyo | 6:8dac6edf2496 | 65 | DigitalOut rrst,oe; |
kangmingyo | 6:8dac6edf2496 | 66 | DigitalIn href; |
edodm85 | 0:810d59d0b843 | 67 | volatile int LineCounter; |
edodm85 | 0:810d59d0b843 | 68 | volatile int LastLines; |
edodm85 | 0:810d59d0b843 | 69 | volatile bool CaptureReq; |
edodm85 | 0:810d59d0b843 | 70 | volatile bool Busy; |
edodm85 | 0:810d59d0b843 | 71 | volatile bool Done; |
kangmingyo | 6:8dac6edf2496 | 72 | long cnt; |
edodm85 | 4:119b4c04a4ed | 73 | char *format_temp; |
edodm85 | 0:810d59d0b843 | 74 | }; |