ov7670 FIFO from Edoardo De Marchi
Dependents: 3D_Scanner_OV7670_
Fork of OV7670 with FIFO by
OV7670.h@1:f5f5d7c979cf, 2017-10-03 (annotated)
- Committer:
- rulla
- Date:
- Tue Oct 03 16:39:42 2017 +0000
- Revision:
- 1:f5f5d7c979cf
- Parent:
- 0:101fbacf126f
ok
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rulla | 1:f5f5d7c979cf | 1 | #pragma once |
rulla | 0:101fbacf126f | 2 | #include "mbed.h" |
rulla | 0:101fbacf126f | 3 | #include "ov7670reg.h" |
rulla | 0:101fbacf126f | 4 | |
rulla | 0:101fbacf126f | 5 | #define OV7670_WRITE (0x42) |
rulla | 0:101fbacf126f | 6 | #define OV7670_READ (0x43) |
rulla | 0:101fbacf126f | 7 | #define OV7670_WRITEWAIT (20) |
rulla | 0:101fbacf126f | 8 | #define OV7670_NOACK (0) |
rulla | 0:101fbacf126f | 9 | #define OV7670_REGMAX (201) |
rulla | 1:f5f5d7c979cf | 10 | #define OV7670_I2CFREQ (100000) |
rulla | 0:101fbacf126f | 11 | |
rulla | 0:101fbacf126f | 12 | |
rulla | 0:101fbacf126f | 13 | // |
rulla | 0:101fbacf126f | 14 | // OV7670 + FIFO AL422B camera board test |
rulla | 0:101fbacf126f | 15 | // |
rulla | 0:101fbacf126f | 16 | class OV7670 |
rulla | 0:101fbacf126f | 17 | { |
rulla | 0:101fbacf126f | 18 | |
rulla | 0:101fbacf126f | 19 | public: |
rulla | 1:f5f5d7c979cf | 20 | OV7670( |
rulla | 0:101fbacf126f | 21 | PinName sda,// Camera I2C port |
rulla | 0:101fbacf126f | 22 | PinName scl,// Camera I2C port |
rulla | 0:101fbacf126f | 23 | PinName vs, // VSYNC |
rulla | 0:101fbacf126f | 24 | PinName hr, // HREF |
rulla | 0:101fbacf126f | 25 | PinName we, // WEN |
rulla | 0:101fbacf126f | 26 | PortName port, // 8bit bus port |
rulla | 0:101fbacf126f | 27 | int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000 |
rulla | 0:101fbacf126f | 28 | PinName rt, // /RRST |
rulla | 0:101fbacf126f | 29 | PinName o, // /OE |
rulla | 0:101fbacf126f | 30 | PinName rc // RCLK |
rulla | 1:f5f5d7c979cf | 31 | ) ; |
rulla | 1:f5f5d7c979cf | 32 | |
rulla | 1:f5f5d7c979cf | 33 | ~OV7670(); |
rulla | 0:101fbacf126f | 34 | |
rulla | 1:f5f5d7c979cf | 35 | void CaptureNext(void); |
rulla | 1:f5f5d7c979cf | 36 | bool CaptureDone(void); |
rulla | 1:f5f5d7c979cf | 37 | void WriteReg(int addr,char data); |
rulla | 1:f5f5d7c979cf | 38 | void Reset(void); |
rulla | 1:f5f5d7c979cf | 39 | void test(void); |
rulla | 1:f5f5d7c979cf | 40 | void InitQQVGA(int SIZEX); |
rulla | 1:f5f5d7c979cf | 41 | char ReadReg(int addr); |
rulla | 1:f5f5d7c979cf | 42 | int ReadOneByte(void); |
rulla | 1:f5f5d7c979cf | 43 | int ReadOneWord(void); |
rulla | 1:f5f5d7c979cf | 44 | void ReadStart(void); |
rulla | 1:f5f5d7c979cf | 45 | void ReadStop(void); |
rulla | 1:f5f5d7c979cf | 46 | void VsyncHandler(void); |
rulla | 1:f5f5d7c979cf | 47 | |
rulla | 1:f5f5d7c979cf | 48 | |
rulla | 1:f5f5d7c979cf | 49 | private: |
rulla | 0:101fbacf126f | 50 | I2C camera ; |
rulla | 1:f5f5d7c979cf | 51 | InterruptIn vsync; |
rulla | 0:101fbacf126f | 52 | DigitalIn href; |
rulla | 0:101fbacf126f | 53 | DigitalOut wen ; |
rulla | 0:101fbacf126f | 54 | PortIn dataP; |
rulla | 0:101fbacf126f | 55 | DigitalOut rrst,oe,rclk ; |
rulla | 1:f5f5d7c979cf | 56 | volatile int LineCounter; |
rulla | 1:f5f5d7c979cf | 57 | volatile int LastLines; |
rulla | 1:f5f5d7c979cf | 58 | volatile bool CaptureReq; |
rulla | 1:f5f5d7c979cf | 59 | volatile bool Busy; |
rulla | 1:f5f5d7c979cf | 60 | volatile bool Done; |
rulla | 1:f5f5d7c979cf | 61 | char *format_temp; |
rulla | 0:101fbacf126f | 62 | }; |