OV7670 without FIFO, SCCB protocol rewritten.

Dependents:   mycame wd_camera

Committer:
sylvainkritter
Date:
Tue Feb 16 14:27:19 2016 +0000
Revision:
0:2530e24fafa1
initial release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sylvainkritter 0:2530e24fafa1 1 #pragma once
sylvainkritter 0:2530e24fafa1 2 #include "mbed.h"
sylvainkritter 0:2530e24fafa1 3 #include "global.h"
sylvainkritter 0:2530e24fafa1 4 #include "ov7670sreg.h"
sylvainkritter 0:2530e24fafa1 5 #include "SDFileSystem.h"
sylvainkritter 0:2530e24fafa1 6 #include "SPI_TFT_ILI9341.h"
sylvainkritter 0:2530e24fafa1 7 #include "FastPWM.h"
sylvainkritter 0:2530e24fafa1 8
sylvainkritter 0:2530e24fafa1 9
sylvainkritter 0:2530e24fafa1 10 #define OV7670_WRITE (0x42)
sylvainkritter 0:2530e24fafa1 11 #define OV7670_READ (0x43)
sylvainkritter 0:2530e24fafa1 12 #define OV7670_REGMAX (201)
sylvainkritter 0:2530e24fafa1 13 #define OV7670_I2CFREQ (100) //us half period
sylvainkritter 0:2530e24fafa1 14 #define CAMERA_CLK_PERIOD 0.35//micro second 0.35
sylvainkritter 0:2530e24fafa1 15
sylvainkritter 0:2530e24fafa1 16 extern const int tmarray ;
sylvainkritter 0:2530e24fafa1 17 extern char desfile[25];
sylvainkritter 0:2530e24fafa1 18 extern Serial pc;
sylvainkritter 0:2530e24fafa1 19 extern Timer Time;
sylvainkritter 0:2530e24fafa1 20 extern bool Done;
sylvainkritter 0:2530e24fafa1 21 extern bool Doneaff;
sylvainkritter 0:2530e24fafa1 22 extern bool volatile captur;
sylvainkritter 0:2530e24fafa1 23 extern unsigned char bank[];
sylvainkritter 0:2530e24fafa1 24 extern unsigned char bankf[];
sylvainkritter 0:2530e24fafa1 25 extern SPI_TFT_ILI9341 TFT;
sylvainkritter 0:2530e24fafa1 26 extern FILE *fp;
sylvainkritter 0:2530e24fafa1 27
sylvainkritter 0:2530e24fafa1 28
sylvainkritter 0:2530e24fafa1 29
sylvainkritter 0:2530e24fafa1 30 class OV7670
sylvainkritter 0:2530e24fafa1 31 {
sylvainkritter 0:2530e24fafa1 32 public:
sylvainkritter 0:2530e24fafa1 33
sylvainkritter 0:2530e24fafa1 34 OV7670(
sylvainkritter 0:2530e24fafa1 35 PinName siod, // Camera I2C port data
sylvainkritter 0:2530e24fafa1 36 PinName sioc, // Camera I2C port clock
sylvainkritter 0:2530e24fafa1 37 PinName xclk, // XCLK
sylvainkritter 0:2530e24fafa1 38 //PinName vs, // VSYNC
sylvainkritter 0:2530e24fafa1 39 //PinName hr, // HREF
sylvainkritter 0:2530e24fafa1 40 // PinName pclk, // Pixelclock
sylvainkritter 0:2530e24fafa1 41 PortName port,
sylvainkritter 0:2530e24fafa1 42 int mask,
sylvainkritter 0:2530e24fafa1 43 /*
sylvainkritter 0:2530e24fafa1 44 VSYNC
sylvainkritter 0:2530e24fafa1 45 HREF
sylvainkritter 0:2530e24fafa1 46 Pixelclock
sylvainkritter 0:2530e24fafa1 47 PinName d7, // D7
sylvainkritter 0:2530e24fafa1 48 PinName d6, // D6
sylvainkritter 0:2530e24fafa1 49 PinName d5, // D5
sylvainkritter 0:2530e24fafa1 50 PinName d4, // D4
sylvainkritter 0:2530e24fafa1 51 PinName d3, // D3
sylvainkritter 0:2530e24fafa1 52 PinName d2, // D2
sylvainkritter 0:2530e24fafa1 53 PinName d1, // D1
sylvainkritter 0:2530e24fafa1 54 PinName d0, // D0 */
sylvainkritter 0:2530e24fafa1 55 PinName rst // /RESET
sylvainkritter 0:2530e24fafa1 56 );
sylvainkritter 0:2530e24fafa1 57
sylvainkritter 0:2530e24fafa1 58 void InitQQVGA() ;
sylvainkritter 0:2530e24fafa1 59 void WriteBy(int addr); // write to camera
sylvainkritter 0:2530e24fafa1 60 void WriteReg2(int data); // write to camera
sylvainkritter 0:2530e24fafa1 61 void WriteReg(int subad,int data); // write to camera
sylvainkritter 0:2530e24fafa1 62 int ReadReg(int subad); // read from camera
sylvainkritter 0:2530e24fafa1 63 int ReadBy(void);
sylvainkritter 0:2530e24fafa1 64 void Reset(void); // reset reg camera
sylvainkritter 0:2530e24fafa1 65 void Start(void);
sylvainkritter 0:2530e24fafa1 66 void End (void);
sylvainkritter 0:2530e24fafa1 67 void CaptureNext(void);
sylvainkritter 0:2530e24fafa1 68 void capture(void);
sylvainkritter 0:2530e24fafa1 69 unsigned char reverse(unsigned char b);
sylvainkritter 0:2530e24fafa1 70 void exrgbf(int j);
sylvainkritter 0:2530e24fafa1 71 int ar(float a);
sylvainkritter 0:2530e24fafa1 72 int Init(char *format, int n);
sylvainkritter 0:2530e24fafa1 73 int PixelCounter ;
sylvainkritter 0:2530e24fafa1 74
sylvainkritter 0:2530e24fafa1 75
sylvainkritter 0:2530e24fafa1 76
sylvainkritter 0:2530e24fafa1 77 private:
sylvainkritter 0:2530e24fafa1 78 DigitalInOut _siod;
sylvainkritter 0:2530e24fafa1 79 DigitalOut _sioc;
sylvainkritter 0:2530e24fafa1 80 FastPWM _xclk;
sylvainkritter 0:2530e24fafa1 81 // DigitalIn _pclk;
sylvainkritter 0:2530e24fafa1 82 //DigitalIn _vs;
sylvainkritter 0:2530e24fafa1 83 //DigitalIn _hr;
sylvainkritter 0:2530e24fafa1 84 PortIn data;
sylvainkritter 0:2530e24fafa1 85 /*
sylvainkritter 0:2530e24fafa1 86 DigitalIn _vs;
sylvainkritter 0:2530e24fafa1 87 DigitalIn _hr;
sylvainkritter 0:2530e24fafa1 88 DigitalIn _pclk;
sylvainkritter 0:2530e24fafa1 89 DigitalIn d7;
sylvainkritter 0:2530e24fafa1 90 DigitalIn d6;
sylvainkritter 0:2530e24fafa1 91 DigitalIn d5;
sylvainkritter 0:2530e24fafa1 92 DigitalIn d4;
sylvainkritter 0:2530e24fafa1 93 DigitalIn d3;
sylvainkritter 0:2530e24fafa1 94 DigitalIn d2;
sylvainkritter 0:2530e24fafa1 95 DigitalIn d1;
sylvainkritter 0:2530e24fafa1 96 DigitalIn d0;
sylvainkritter 0:2530e24fafa1 97 */
sylvainkritter 0:2530e24fafa1 98 DigitalOut _rst;
sylvainkritter 0:2530e24fafa1 99 };