OV7670 + 23LC1024 + Bluetooth

Dependencies:   FastPWM MODSERIAL mbed

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?

UserRevisionLine numberNew 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 };