




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
普:技术:咨 本手册向大家介绍PZ-OV7670头模块及其使用。本手册OV7670OV(OmniVision)1/6CMOSVGA感器。该传感器体积小、工作电压低,提供单片VGA头和影像处理器的所辨率8位影像数据。该产品VGA图像最高达到30帧/秒。用户可以完全控制色度等都可以通过SCCB接口编程。OmmiVision图像传感器应用独有的传感器像质量,得到清晰的稳定的彩像。OV7670SCCBIICRawRGB、RGB(GBR4:2:2,RGB565/RGB555/RGB444),YCbCr(4:2:2)VGACIF,CIF40*30支持自动控制、自动增益控制、自动白平衡、自动消除灯光条纹、OV7670OV7670感光整列(ImageOV7670总共有656*488个像素,其中640*480个有效(时序发生器(Timing内部信号发生器和分布、帧率时序、自动控制、输出外部时序(VSYNC、HREF/HSYNC和PCLK)。模拟信号处理(ogA/D转换(原始的信号经过模拟处理器模块之后,分G和BR进入一个10位的A/D,A/D12M(转换的频率A/D①黑电平校正(②U/V③A/DA/DA/DA/D根据应用调整的亮度测试图案发生器(TestPattern脚移位“1”。数字处理器(RGB①边缘锐化(二维高通滤波器②颜色空间转换(原始信号到RGB或者③RGB缩放功能(Image小到CIF以下的任何尺寸。数字接口(DigitalCOM2[1:0],IOL/IOHSCCB接口(SCCBSCCB《OmniVisionSerilCameraControlBus(SCCB)Specification》LED(LEDandStorbeFlashControlOutput)OV7670有闪光灯模式,可以控制外接闪光灯或闪光LED的工作。OV7670的寄存器通过SCCB时序并设置,SCCB时序和IIC时序十分VGA,640*480QQVGA,即分辨率为160*120的输出格式;PCLK,PCLKVSYNC,HREF/HSYNC,OV7670的图像数据输出(通过D[7:0])就是在PCLK,VSYNC和HSYNCHREFHREF一个PCLKVGARGB565输出,每2个字节组成一个像素的颜色(高字节,低字节在后),这样每行输出总共有640*2个PCLK周期,输出640*2个字节。再来看看帧时序(VGA),方式,我们用到的是HREF。的IO口直接抓取,是非常的,也十分占耗CPU(可以通过降低PCLK输出抓取来自OV7670的数据,而是通过FIFO,PZ-OV7670头模块自带了一个FIFO,用于暂存图像数据,有了这个,我们就可以很方便的获取图像数据了,而不再需要单片机具有高速IOCPU,可以说,只要是个单片机,都可以通过PZ-OV7670头模块实现拍照的功能。接下来我们介绍一下PZ-OV7670头模块。该模块的外观如图所示从上图可以看出,PZ-OV7670头模块自带了有源晶振Y1,用于产生12M时钟作为OV7670的XCLK输入。同时自带了稳压,用于提供OV7670稳定的2.8V工作电压,并带有一个FIFO(AL422B),该FIFO的容384K2QVGA2*9下面我们来看看如何使用PZ-OV7670头模块(以QVGA模式,RGB565PZ-OV7670头模块图像数据的过程为:等待OV7670同步信号→FIFO写指针复位→FIFO写使能→等待第二个OV7670同步信号→FIFO写禁止。通过以上5个步骤,我们就完成了1帧图像数据的。在完一帧图像以后,我们就可以开始图像数据了。过程为:FIFO读指针复位→给FIFO读时钟(FIFO_RCLK)→第一个像素高字节→给FIFO读时钟→第一个像素低字节→给FIFO读时钟→第二个像素可以看出,PZ-OV7670头模块数据的也是十分简单,比如QVGA模式,RGB565格式,我们总共循环320*240*2次,就可以1帧图像数据,把这些数据写入LCD模块,我们就可以看到头捕捉到的画面了。applicationnoteAL422BAL422B了解了OV7670模块的数据和,我们就可以开始设计程序了,本实验我们用一个外部中断来捕捉帧同步信号(VSYNC),然后在中断里面启动OV7670模块的图像数据,等待下一次VSHNC信号到来,我们就关闭数据存来,放到LCD即可显示了,同时开始第二帧数据的,如此循环,实现本实验使用头模块的QVGA输出(320*240),这个在我们使用的TFTLCD模块分辨率范围内。注意:PZ-OV7670头模块自带的FIFO是没VGAVGAFIFO前开始读FIFO数据,保证数据不被覆盖。前四部分电路面章节都介绍过,这里就不多说,下面我们来看下本实验所实现的功能为:开机后,初始化头模块(OV7670),如果初始化成功,则在LCD模块上面显示头模块所拍摄到的内容。我们可以通过键设置亮度,通过K_RIGHT(LCDOV7670的输出帧率)。D1sccb.cOV7670_DCMI.h、sccb.hov7670cfg.h5OV7670_DCMI.cOV7670_Initu8OV7670_Init(void){u8temp;u16GPIO_InitTypeDefGPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_Init(GPIOG,&GPIO_InitStructure);GPIO_Init(GPIOC,GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_Init(GPIOE,&GPIO_InitStructure); //初始化SCCB的IO口if(SCCB_WR_Reg(0x12,0x80))return1; if(temp!=0x73)return2;if(temp!=0x76)return2;{}return0x00;}OV7670IO(SCCB_Init),然后最主要的是完成OV7670的寄存器序列初始化。OV7670的寄存器特别多(上百来个),配置非常麻烦,幸好厂家有提供参考配置序列(OV7670software该数组存放在ov7670cfg.h里面。接下来,我们看看ov7670cfg.h里面ov7670_init_reg_tbl的内容,ov7670cfg.hconstu8ov7670_init_reg_tbl[][2]={/*OV7670QVGARGB565{0x3a,{0x40,{0x12,0x14},//QVGA,RGB{0x32,0x80},//HREFcontrolbit[2:0]HREFstart3LSBbit[5:3]HSTOPHREFend3LSB{0x17,0x16},//HSTARTstarthigh8-bit{0x18,0x04},//5HSTOPendhigh8-{0x19,{0x1a,{0x03,0x06},//0x0a,{0x0c,{0x15,{0x3e,{0x70,{0x71,{0x72,{0x73,{0xa2,{0x11,0x81},//时钟分频设置,0,{0x7a,{0x7b,{0x7c,{0x7d,{0x7e,{0x7f,{0x80,{0x81,{0x82,{0x83,{0x84,{0x85,{0x86,{0x87,{0x88,{0x89,{0x13,{0x00,{0x10,{0x0d,0x00},//[5:4]:01,101/411{0x14,0x28},//0x38,limitthemax{0xa5,{0xab,{0x24,{0x25,{0x26,{0x9f,{0xa0,{0xa1,{0xa6,{0xa7,{0xa8,{0xa9,{0xaa,{0x13,{0x0e,{0x0f,{0x16,{0x1e,0x27},//图像输出镜像控制{0x21,{0x22,{0x29,{0x33,{0x35,{0x37,{0x38,{0x39,{0x3c,{0x4d,{0x4e,{0x69,{0x6b,{0x74,{0x8d,{0x8e,{0x8f,{0x90,{0x91,{0x92,{0x96,{0x9a,{0xb0,{0xb1,{0xb2,{0xb3,{0xb8,{0x43,{0x44,{0x45,{0x46,{0x47,{0x48,{0x59,{0x5a,{0x5b,{0x5c,{0x5d,{0x5e,{0x64,{0x65,{0x66,{0x94,{0x95,{0x6c,{0x6d,{0x4f,{0x50,{0x51,{0x52,{0x53,{0x54,//{0x54,{0x09,0x03},//{0x6e,{0x6f,0x9f},//0x9eforadvance{0x55,0x00},//{0x56,0x40},//对比度{0x57,0x40},//0x40,changeaccordingtoJim's//以下部分代码由开源网友:duanzhang512提//如不想要,可以屏蔽此部分代码.然后//改为:OV7670_Window_Set(12,174,240,320);,{0x6a,{0x01,{0x02,{0x13,{0x15,{0x58,{0x41,{0x3f,{0x75,{0x76,{0x4c,{0x77,{0x3d,{0x4b,{0xc9,{0x41,{0x34,{0x3b,{0xa4,{0x96,{0x97,{0x98,{0x99,{0x9a,{0x9b,{0x9c,{0x9d,{0x9e,{0x78,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0xc8,{0x79,{0x09,地址,写入0X04这个值。通过这么一长串(110)寄存器的配置,我们就完成了OV7670OV7670QVGARGB565成初始化之后,可以开始OV7670的数据了。OV7670因为本实验我们还用到了帧率(LCD显示的帧率)time.ctime.hexti.cexti.htime.cTIM4voidTIM4_Init(u16per,u16{NVIC_InitTypeDefNVIC_InitStructure;使能 TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//分频系数
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//NVIC_InitStructure.NVIC_IRQChannelSubPriority NVIC_InitStructure.NVIC_IRQChannelCmd= TIM_Cmd(TIM4,ENABLE);}u8ov_frame;//统计帧数void{{ }}TIM41印ov_frame的值,ov_frame用于统计LCD帧率。在exti.c里面添加EXTI7_Init和EXTI9_5_IRQHandlerOV7670模块的FIFO写控制,exti.cu8 void{if(EXTI_GetITStatus(EXTI_Line7)==SET)8{ } }7void{EXTI_InitTypeDefNVIC_InitTypeDefEXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Rising;EXTI_InitStructure.EXTI_LineCmd=ENABLE; 定的参数初始化外设EXTI寄存器NVIC_InitStructure.NVIC_IRQChannel= NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=//子优先级0NVIC_InitStructure.NVIC_IRQChannelCmdENABLE; 指定的参数初始化外设NVIC寄存器}置PB7作为中断输入,因为STM32的外部中断5~9(EXTI9_5_IRQHandler),所以在该函数里面,我们需要先判断中断是不是来自中断线7的,然后再做处理。ov_staOV7670FIFO读完FIFO数据的时候被),然后只要OV_VSYNC信号到来,我们就先复位一下写指针,然后ov_sta=1,标志着写指针已经复位,目前正在往FIFO里面写数据。再等下一个OV_VSYNC到来,也就表明一帧数据已经完毕了,此时我们设置OV7670_WREN为0,再往OV7670写入数据,此时ov_sta自增为2。其他程序,只要读到ov_sta2,就表示一帧数据已经准备好了,可以最后我们看下main.c文件,代码如下:externu8ov_sta; //在exit.c里面定义externu8ov_frame;//在time.c里面定void{u32j;u16u16temp;{0)/2,320,240-1);//将显示区域设置到屏幕区域设置到屏幕 {{ color|=OV7670_DATA;//读数据}
{ color
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年仙居县人民医院招聘工作人员考试真题
- 中标后催业主签合同范例
- 2024年新疆昌吉学院(团队)引进笔试真题
- 乡村承包开发合同范本
- 人员反聘合同范本
- 云梯租赁合同范本
- app开发服务合同范本
- 劳务合同范例放牧
- 《五、标明引用内容的出处》教学设计教学反思-2023-2024学年初中信息技术人教版七年级上册
- 农村电器购销合同范本
- (高职)员工培训与开发(第四版)完整版教学课件全套电子教案
- 《跨境电商B2B操作实务》教学大纲
- 河口区自然资源
- 精益改善项目管理制度
- 2012数据结构英文试卷A及答案
- 第四章工具钢
- 服装购销合同最新版
- 机翼结构(课堂PPT)
- 二次回路施工验收
- 危险废物利用和处置方式代码表
- 井下使用切割机安全技术措施
评论
0/150
提交评论