一、简介:
OV7670一般模块指低成本数字输出CMOS摄像头,其摄像头包含30w像素的CMOS图像感光芯片,3.6mm焦距的镜头和镜头座,板载CMOS芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。
二、管脚定义
3V3-----输入电源电压(推荐使用3.3,5V也可,但不推荐)
GDN-----接地点
SIO_C---SCCB接口的控制时钟(注意:部分低级单片机需要上拉控制,和I2C接口类似) SIO_D---SCCB接口的串行数据输入(出)端(注意:部分低级单片机需要上拉控制,和I2C接口类似)
VSYNC---帧同步信号(输出信号)
HREF----行同步信号(输出信号)
PCLK----像素时钟(输出信号)
XCLCK---时钟信号(输入信号,时钟速度可以高达24M)
D0-D7---数据端口(输出信号)
RESTE---复位端口(正常使用拉高)
PWDN----功耗选择模式(正常使用拉低)
三、SCCB通讯时序
其作用是设置芯片内部寄存器,以控制图像的各种所需功能。其时序和一般的I2C时序相似,部分低级单片机要接上拉电阻。
行输出时序
行输出时序可用来控制一行像素的输出情况,HREF即一行输出的开始和结束信号,同时在像素时钟的同步下,输出8位的像素信号行输出时序图:
全帧输出下的时序情况:
该图显示的是一副图像输出的情况下,各控制信号和数据信号的输出。图中,VGA=640X480大小情况下,帧同步信号,行同步信号(HREF或 者HSYNC,注:HSYNC在其它场合下使用,CMOS可以设置,更多时候用HREF即可)如图:
//ov7670.c
void CLK_init_ON(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_MCOConfig(RCC_MCO_HSE );//hsi
}
void CLK_init_OFF(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
void OV7670_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2Perip