📄 ov7670.c
字号:
#include "ssd192X.h"#include "i2c.h"#include "ov7670.h"#if (OV7670_MODE==OV7670_QVGA)int CAM_WIDTH=320;int CAM_HEIGHT=240;#elseint CAM_WIDTH=640;int CAM_HEIGHT=480;#endifint CAM_FRAME_RATE=30;void cam_hw_init(void){ I2C i2c; SSD_REGWB(REG_VCLK_CONFIG_0,0x03); // Cam running rate// SSD_REGWB(REG_VCLK_CONFIG_1,0x07); SSD_REGWB(REG_VCLK_CONFIG_1,0x17); // Reset HV7131 SSD_REGWB(REG_DV_ENB,0x01); // ENB_DV = 1)= RESET_DV = 1 SSD_REGWB(REG_DV_ENB,0x00); // ENB_DV = 1)= RESET_DV = 0 SSD_REGWB(REG_DV_ENB,0x01); // ENB_DV = 1)= RESET_DV = 1 i2c.deviceID=I2C_DEVICE_ID; i2c.bitRate=1; ssd192X_i2c_init(&i2c); mdelay(100); printk("VER: %x\n",ssd192X_i2c_readb_without_ACK(&i2c,0x0b)); mdelay(100); printk("PID: %x\n",ssd192X_i2c_readb_without_ACK(&i2c,0x0a)); //Mode ssd192X_i2c_writeb(&i2c, 0x12, OV7670_MODE);// ssd192X_i2c_writeb(&i2c, 0x12,0x11);// ssd192X_i2c_writeb(&i2c, 0x12,0x12);// ssd192X_i2c_writeb(&i2c, 0x12,0x05);// ssd192X_i2c_writeb(&i2c, 0x3b,0x80);// ssd192X_i2c_writeb(&i2c, 0x04,0x40);// ssd192X_i2c_writeb(&i2c, 0x70,0xca);// mdelay(100);// ssd192X_i2c_writeb(&i2c, 0x3a,0x10);// mdelay(100);// ssd192X_i2c_writeb(&i2c, 0x67,0xf0);// mdelay(100);// ssd192X_i2c_writeb(&i2c, 0x68,0xf0);// mdelay(100);// ssd192X_i2c_writeb(&i2c, 0x3d,0xa9);// mdelay(100);// ssd192X_i2c_writeb(&i2c, 0xc9,0x80); //YUV 11// ssd192X_i2c_writeb(&i2c, 0x3a,0x0c);// ssd192X_i2c_writeb(&i2c, 0x3d,0x9b); //YUV 10 mdelay(100); ssd192X_i2c_writeb(&i2c, 0x3a,0x0c); mdelay(100); ssd192X_i2c_writeb(&i2c, 0x3d,0x99); //YUV 01// ssd192X_i2c_writeb(&i2c, 0x3a,0x04);// ssd192X_i2c_writeb(&i2c, 0x3d,0x9b); //YUV 00// ssd192X_i2c_writeb(&i2c, 0x3a,0x04);// ssd192X_i2c_writeb(&i2c, 0x3d,0x99); //Scale mdelay(100); ssd192X_i2c_writeb(&i2c, 0x0c, 0x08); //Set YUV format// ssd192X_i2c_writeb(&i2c, 0x3a, 0x08);}void cam_hw_still(void){#if 0 I2C i2c; i2c.deviceID=I2C_DEVICE_ID; i2c.bitRate=1; ssd192X_i2c_init(&i2c); ssd192X_i2c_writew(&i2c, 0x0e, CAM_WIDTH); ssd192X_i2c_writew(&i2c, 0x0c, CAM_HEIGHT); //set window start position and size ssd192X_i2c_writew(&i2c, 0x08, 240); ssd192X_i2c_writew(&i2c, 0x0a, 180);#endif // bt656 / field stuff select#if 0 printk("BT656 *********\n"); SSD_REGWB(REG_DV_TV_0,0x02); SSD_REGWB(REG_DV_TV_1,0x0d); SSD_REGWB(REG_DV_TV_2,0x01);#else printk("BT601 *********\n"); SSD_REGWB(REG_DV_TV_0,0x12); SSD_REGWB(REG_DV_TV_1,0x00); SSD_REGWB(REG_DV_TV_2,0x04);#endif SSD_REGWW(REG_DV_NFRAME_POS_0, 0x0002); SSD_REGWW(REG_DV_HORI_PERIOD_0, CAM_WIDTH); SSD_REGWB(REG_DV_FRAME_PULSE_WIDTH, 0x08);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -