OV7670 + 23LC1024 + Bluetooth
Dependencies: FastPWM MODSERIAL mbed
OV7670.h@0:f309a2b2f27b, 2013-07-22 (annotated)
- Committer:
- sampullman
- Date:
- Mon Jul 22 23:55:34 2013 +0000
- Revision:
- 0:f309a2b2f27b
- Child:
- 1:6e4d2cff76e8
Successful OV7670 camera test with QQVGA resolution and no peripherals.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sampullman | 0:f309a2b2f27b | 1 | #include "mbed.h" |
sampullman | 0:f309a2b2f27b | 2 | #include "OV7670reg.h" |
sampullman | 0:f309a2b2f27b | 3 | #include "FastPWM.h" |
sampullman | 0:f309a2b2f27b | 4 | |
sampullman | 0:f309a2b2f27b | 5 | #define OV7670_WRITE (0x42) |
sampullman | 0:f309a2b2f27b | 6 | #define OV7670_READ (0x43) |
sampullman | 0:f309a2b2f27b | 7 | #define OV7670_WRITEWAIT (20) |
sampullman | 0:f309a2b2f27b | 8 | #define OV7670_NOACK (0) |
sampullman | 0:f309a2b2f27b | 9 | #define OV7670_REGMAX (201) |
sampullman | 0:f309a2b2f27b | 10 | #define OV7670_I2CFREQ (50000) |
sampullman | 0:f309a2b2f27b | 11 | |
sampullman | 0:f309a2b2f27b | 12 | // |
sampullman | 0:f309a2b2f27b | 13 | // OV7670 Camera board test (no FIFO) |
sampullman | 0:f309a2b2f27b | 14 | // |
sampullman | 0:f309a2b2f27b | 15 | class OV7670 { |
sampullman | 0:f309a2b2f27b | 16 | public: |
sampullman | 0:f309a2b2f27b | 17 | I2C camera; |
sampullman | 0:f309a2b2f27b | 18 | PinName xclkPin; |
sampullman | 0:f309a2b2f27b | 19 | PortIn data, inPort; |
sampullman | 0:f309a2b2f27b | 20 | volatile int LineCounter; |
sampullman | 0:f309a2b2f27b | 21 | volatile int LastLines; |
sampullman | 0:f309a2b2f27b | 22 | volatile bool CaptureReq; |
sampullman | 0:f309a2b2f27b | 23 | volatile bool Busy; |
sampullman | 0:f309a2b2f27b | 24 | volatile bool Done; |
sampullman | 0:f309a2b2f27b | 25 | |
sampullman | 0:f309a2b2f27b | 26 | OV7670( |
sampullman | 0:f309a2b2f27b | 27 | PinName sda, // Camera I2C port |
sampullman | 0:f309a2b2f27b | 28 | PinName scl, // Camera I2C port |
sampullman | 0:f309a2b2f27b | 29 | PinName xclk,// Camera XCLK |
sampullman | 0:f309a2b2f27b | 30 | PinName pclkPin,// PCLK |
sampullman | 0:f309a2b2f27b | 31 | PinName vs, // VSYNC |
sampullman | 0:f309a2b2f27b | 32 | PinName hr, // HREF |
sampullman | 0:f309a2b2f27b | 33 | |
sampullman | 0:f309a2b2f27b | 34 | PortName port, // 8bit bus port |
sampullman | 0:f309a2b2f27b | 35 | int mask // 0000 0111 4000 0111 1000 0000 0000 0000 = 0x07878000 |
sampullman | 0:f309a2b2f27b | 36 | ); |
sampullman | 0:f309a2b2f27b | 37 | |
sampullman | 0:f309a2b2f27b | 38 | void Init(); |
sampullman | 0:f309a2b2f27b | 39 | |
sampullman | 0:f309a2b2f27b | 40 | // write to camera |
sampullman | 0:f309a2b2f27b | 41 | void WriteReg(int addr, int data); |
sampullman | 0:f309a2b2f27b | 42 | |
sampullman | 0:f309a2b2f27b | 43 | // read from camera |
sampullman | 0:f309a2b2f27b | 44 | int ReadReg(int addr); |
sampullman | 0:f309a2b2f27b | 45 | |
sampullman | 0:f309a2b2f27b | 46 | void Reset(void); |
sampullman | 0:f309a2b2f27b | 47 | |
sampullman | 0:f309a2b2f27b | 48 | void InitQQVGA(); |
sampullman | 0:f309a2b2f27b | 49 | |
sampullman | 0:f309a2b2f27b | 50 | void scopeTest(Serial *host); |
sampullman | 0:f309a2b2f27b | 51 | |
sampullman | 0:f309a2b2f27b | 52 | // Capture image in two arrays. Returns number of bytes received |
sampullman | 0:f309a2b2f27b | 53 | int captureImage(unsigned char *arr1, unsigned char* arr2); |
sampullman | 0:f309a2b2f27b | 54 | |
sampullman | 0:f309a2b2f27b | 55 | }; |