OV7670使用说明和程序讲解
- 格式:pdf
- 大小:1.11 MB
- 文档页数:27
OV7670带FIFO的CMOS摄像头使用说明OV7670是一款带有FIFO的CMOS摄像头芯片,广泛应用于各种嵌入式系统中。
它具有低功耗、高灵敏度和高图像质量等特点,适合于图像采集和处理应用。
以下是OV7670带FIFO的CMOS摄像头的使用说明。
一、硬件连接1.连接供电:将模块的VCC引脚连接到3.3V的电源,GND引脚连接到地。
2.数据传输:-使用I2C协议进行配置:将模块的SDA引脚连接到主控芯片的SDA 引脚,SCL引脚连接到主控芯片的SCL引脚。
-使用FIFO模式进行数据传输:将模块的FIFO_WR引脚连接到主控芯片的写使能引脚,FIFO_RD引脚连接到主控芯片的读使能引脚,FIFO_WE 引脚连接到主控芯片的写时钟引脚,FIFO_OE引脚连接到主控芯片的读时钟引脚,FIFO_RST引脚连接到主控芯片的复位引脚,DATA引脚连接到主控芯片的数据引脚。
二、软件配置1.I2C配置:通过I2C协议对OV7670进行配置。
首先初始化I2C总线,然后发送配置指令给OV7670的I2C地址,通过写入特定的寄存器来配置图像参数,如分辨率、亮度、对比度等。
2.FIFO配置:通过FIFO模式进行数据传输。
首先对OV7670进行FIFO模式的配置,设置FIFO的像素格式、帧率等参数。
然后初始化主控芯片的访问FIFO的接口,设置读写使能信号并根据需要配置写时钟和读时钟。
最后,在读取FIFO数据之前,先进行FIFO的复位以确保数据的正确读取。
三、数据采集和处理1.数据采集:通过FIFO模式进行数据采集,将摄像头拍摄到的图像数据存储到FIFO缓存中。
2. 数据处理:从FIFO缓存中读取图像数据,并进行相关的图像处理操作,如图像解码、颜色空间转换、图像滤波等。
可以使用各种图像处理算法和库来实现不同的功能,如OpenCV等。
四、常见问题和解决方案1.图像质量问题:如果发现图像质量差,可以尝试调整摄像头的参数,如增加亮度、对比度等,或者使用图像后处理算法进行图像增强。
OV7670 的SCCB (I2C)调试1.几个基本概念A)在数据传输阶段,SDA的变化只能在SCK为低电平的时候,如果在SCK高电平的时候有SDA的变化,则可能表示的是I2C的Start或者StopB)Start:当SCK为高时,SDA从高跳变到低表示I2C总线的StartC)Stop:当SCK为高时,SDA从低跳变到高表示总线的StopD)ACK:每次传输8个bit以后,接收方都会有一个回应,如果为低表示ACK,表示OK,如果为高表示NACK,但不表示就有问题,比如Master接收Slave的数据的过程中不想接收了,就可以发送NACKE)地址 Address:在寻址段,在7位格式的地址中,发送的8位数据前七位为地址,如下图中的0x42, 最后一位表示此次发起的是读还是写,读为高电平,写为低电平。
F)子地址 SubAddress:这个东东在I2C的规范里面其实是没有的,不过很多厂家都喜欢整这个,其实就是地址段后面的一个或者两个自己的数据(一般使用写入R/W=0)。
比如俺们以前的BB没有这个概率,现在新的BB有了这个概念,还支持8位和16位。
1.一个写时序下面是一个写的地址段,加两个数据段的波形,先发送芯片ID,0x42和R/W=0, 然后发送两个写入的数据:0x32,0xb6。
1.一个写加一个读先写一个地址段,0x42,然后写入(RW=0)subaddress 0x0B。
然后重新启动一次传输,发送地址段,0x42, 读取之前写入的subaddress里面的值,读出的值为0x76,因为Master此时为receiver,要终止传输了,所以Master给Salve的回应为NACK。
也就是SCCB规范里面的一个2-phase write加一个2-phase read.4.最后来一个总线上没有设备的波形,上拉很弱。
OV7670
OV7670图像传感器:OV7670是美国OmniVision 公司的彩色/黑白CMOS 图像传感器。
这是一种自带图像敏感阵列和A/D 转换元件、能直接提供8位RGB/YUV等格式视频数字信号的彩色/黑白图像传感器,图像输出最高速度可达30帧/s,最大图像分辨率为640×480,3.3V 供电;它具有自动增益、自动白平衡、边缘增强、伽玛校正等控制功能;可以通过SCCB(兼容I2C总线)总线进行设置;同时OV7670 具有图像开窗输出的功能,即允许用户可根据实际使用需要设置其内部寄存器,使其只输出完整图像中的任意一个矩形区域内的信号,支持VGA,CIF和从CIF到40×30的各种尺寸。
基于FPGA的OV7670摄像头和液晶显示产品简介
一、总体介绍
该产品以ALTERA公司Cyclone II系列FPGA的EP2C8Q208C8N芯片为主控核心,通过在FPGA 外围扩展1片SDRAM、1片SRAM、1片Nor FLASH、1个SD卡座、一个OV7670摄像头模块、一块2.8寸TFT液晶显示屏等外围设备构成的图像采集、分析和存储系统。
在此硬件基础上,产品配套有以上外设的Verilog HDL或者NIOSII的驱动程序。
用户可以在此基础上开发设计基于FPGA硬件编码或者NIOSII的图像处理程序。
图1整体图片
二、产品硬件结构介绍
1.FPGA底板
图2FPGA底板正面
图2中,1为K4S641632,64M bit,2为EP2C8Q208C8N FPGA芯片,3为IS61LV25616A-10TI 512Kbyte的SRAM芯片,4为AM29LV320DB32Mbit芯片。
5为FPGA的AS模式编程接口,6为FPGA的JTAG模式编程接口。
图3FPGA底板反面
钟。
2.中间层扩展板
该板主要起转接作用,板子下面跟FPGA底板连接,上面跟液晶扩展板和摄像头模块连接。
3.液晶扩展板
该板带一块2.8寸TFT触摸液晶屏,带触摸屏AD转换芯片。
OV7670-CMOS摄像头使用说 明2014.2.10 参赛平台1.OV7670带FIFO 模块1.简介:OV7670带FIFO 模块,是针对慢速的MCU 能够实现图像采集控制推出的带有缓冲存储空间的一种模块。
这种模块增加了一个FIFO (先进先出)存储芯片,同样包含30w 像素的CMOS 图像感光芯片,3.6mm 焦距的镜头和镜头座,板载CMOS 芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。
图1.OV7670带FIFO模块 2.管脚定义:参赛平台如图,控制传感器所需的管脚定义如下:3V3-----输入电源电压(推荐使用3.3,5V 也可,但不推荐)GDN-----接地点SIO_C---SCCB 接口的控制时钟(注意:部分低级单片机需要上拉控制,和I2C 接口类似)SIO_D---SCCB 接口的串行数据输入(出)端(注意:部分低级单片机需要上拉控制,和I2C 接口类似) VSYNC---帧同步信号(输出信号)HREF----行同步信号(输出信号)PCLK----像素时钟(输出信号)XCLCK---时钟信号(输入信号)D0-D7---数据端口(输出信号)RESTE---复位端口(正常使用拉高)PWDN----功耗选择模式(正常使用拉低)STROBE—拍照闪光控制端口(正常使用可以不需要)FIFO_RCK---FIFO 内存读取时钟控制端FIFO_WR_CTR----FIFO 写控制端(1为允许CMOS 写入到FIFO,0为禁止) FIFO_OE----FIFO 关断控制FIFO_WRST—FIFO 写指针服务端FIFO_RRST—FIFO 读指针复位端 参赛平台图7.FIFO摄像头接口定义3.控制方式说明由于采用了FIFO 做为数据缓冲,数据采集大大简便,用户只需要关心是如何读取即可,不需要关心具体数据是如何采集到的,这样可减小甚至不用关心CMOS 的控制以及时序关系,就能够实现图像的采集。
用STM32F207 的DCMI接口驱动OV7670摄像头,目前我已经获取了摄像头图像,速度也很不错,图像也清晰,但是不知道为什么我的图像会一直走动,如图(原文件名:Catch(09-09-14-49-12).jpg)整个屏幕的图像会一直往下走,如此循环反复。
但是图像又是动态的,比如手在摄像头前晃动,图像里面的手也会动的,只是图像没有固定住,一直走动,请问下高手,这是什么原因啊?LCD驱动是ST官方的ili9320,摄像头的是在官方的9655驱动上改动初始化代码的。
DCMI 接口代码如下:/******************************************************************************** @函数名称DCMI_Config* @函数说明DCMI接口配置* @输入参数无* @输出参数无* @返回参数无*******************************************************************************/ void DCMI_Config(void){DCMI_InitTypeDef DCMI_InitStructure;GPIO_InitTypeDef GPIO_InitStructure;DMA_InitTypeDef DMA_InitStructure;//使能DAMI 的GPIO时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC, ENABLE);//使能DCMI时钟RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI, ENABLE);//连接DCMI管脚到AF13功能GPIO_PinAFConfig(GPIOA, GPIO_PinSource4, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_DCMI);GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_DCMI);// DCMI GPIO 配置// D0..D4(PC6/7/8/9/11)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 |GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;GPIO_Init(GPIOC, &GPIO_InitStructure);// D5..D7(PB6/8/9), VSYNC(PB7)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;GPIO_Init(GPIOB, &GPIO_InitStructure);// PCLK(PA6) HSYNC(PA4)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_6;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);// DCMI 配置DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous; DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame; DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;DCMI_Init(&DCMI_InitStructure);// 配置DMA2 传输数据从DCMI 到LCD// 使能DMA2 时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//DMA2 Stream1 配置DMA_DeInit(DMA2_Stream1);DMA_InitStructure.DMA_Channel = DMA_Channel_1;DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;DMA_InitStructure.DMA_BufferSize = 1;DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word; DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;DMA_InitStructure.DMA_Priority = DMA_Priority_High;DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;DMA_Init(DMA2_Stream1, &DMA_InitStructure);}摄像头的初始化数组,移植的是网友的,稍微动了以下。
颜色空间指不同波长的电磁波谱与不同物质相互作用所构成的色谱空间。
颜色空间也称色彩模型(又称彩色空间或彩色系统),它的用途是在某些标准下用通常可接受的方式对彩色加以说明。
色彩模型是描述使用一组值(通常使用三个、四个值或者颜色成分)表示颜色方法的抽象数学模型。
本质上,色彩模型是坐标系统和子空间的阐述。
通俗地说,自然界的多彩空间是复杂变换的,在不同的应用领域人们在这个复杂的色彩空间中采用的色彩范围或者说是选取的色彩范围有所不同或者是表述方法不同。
因此就出现了多种多样的空间色彩描述方法,即不同的颜色空间。
颜色空间有许多种,常用有RGB,CMY,YUV,HSV,HSI等。
RGB颜色空间根据三基色原理,用基色光单位来表示光的量,则在RGB颜色空间,任意色光F都可以用R、G、B三色不同分量的相加混合而成:F=r [ R ] + g [ G ] + b [ B ]RGB颜色空间还可以用一个三维的立方体来描述,如下图。
这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
实际应用中RGB存在系列标准。
RAW RGBSensor的感光原理是通过一个一个的感光点对光进行采样和量化,但,在Sensor中,每一个感光点只能感光RGB中的一种颜色。
所以,通常所说的30万像素或130万像素等,指的是有30万或130万个感光点。
每一个感光点只能感光一种颜色。
但是,要还原一个真正图像,需要每一个点都有RGB三种颜色,所以,对于CCIR601或656的格式,在Sensor模组的内部会有一个ISP 模块,会将Sensor采集到的数据进行插值和特效处理,例如:如果一个感光点感应的颜色是R,那么,ISP模块就会根据这个感光点周围的G、B感光点的数值来计算出此点的G、B值,那么,这一点的RGB值就被还原了,然后在编码成601或656的格式传送给Host。
而RAW RGB格式的Sensor则是将没个感光点感应到的RGB数值直接传送给Host,由Host来进行插值和特效处理。
OV7690 照相模组软件应用指南修改日期:2008-9-2版本: 1.03OmniVision Technologies, Inc. 保留对文件的修改权,为提高产品的可靠性、功能、设计,对文档进行修改,可不给出过多注释.这个文件包含版权信息. 文件只能给那些获得OmniVision Technologies, Inc. 批准的员工、组织、团体使用。
Table of ContentsOV7690 照相模组 (1)1.1 有完整ISP的后端 (4)1.2 后端有YCbCr ISP (5)1.3 后端没有ISP (5)1.4 从一种输出格式到另一种输出格式的转换关系式 (5)2. 选择输出方案 (6)2.1 后端有ISP (6)2.2 后端没有ISP (6)3. 帧率调整 (6)3.1 24Mhz 输入时钟,帧率的调整 (6)30 fps, PCLK = 24Mhz (6)15 fps, PCLK = 12Mhz (7)25fps, PCLK = 24Mhz (7)12.5fps, PCLK = 12Mhz (7)3.2 26Mhz 输入时钟帧率的调整 (7)30 fps, PCLK = 26Mhz (7)15 fps, PCLK = 13Mhz (8)25fps, PCLK = 26Mhz (8)12.5fps, PCLK = 13Mhz (8)3.3 13Mhz 输入时钟,帧率的调整 (8)30 fps, PCLK = 26Mhz (8)15 fps, PCLK = 13Mhz (9)25fps, PCLK = 26Mhz (9)12.5fps, PCLK = 13Mhz (9)4. 夜间模式 (10)For 24Mhz/26Mhz Clock Input (10)For 13Mhz Clock Input (10)4.2 帧率自动调整夜间模式 (11)For 24Mhz/26Mhz Clock Input (11)For 13Mhz Clock Input (11)5. 消除Light Band(灯光条纹) (13)5.1 Light Band (13)5.2 消除 Light band(灯光条纹) (13)5.3 根据实际条件选择 Banding Filter (14)24Mhz时钟,Banding Filter 设置 (14)13Mhz/26Mhz时钟,Banding Filter 设置 (14)5.4 通过自动灯光频率检测,选择Banding Filter值 (15)13Mhz/26Mhz 输入时钟,Banding Filter设置 (16)5.5 Light Band 不能消除时 (16)6.白平衡 (16)6.1 简单白平衡 (16)6.2 高级白平衡 (17)7. 死伤点的校正 (17)8. BLC(暗电流补偿) (18)9. 录像模式 (18)10. 数字缩放 (18)11. OV7690 功能 (18)11.1 环境模式 (18)11.2 色饱和度 (19)11.3 曝光补偿 (21)11.4 对比度 (23)11.5 特效 (25)12. 镜头处理 (27)12.1 镜头失光 (27)12.2 暗角 (27)12.3 分辨率 (27)12.4 光学对比度 (27)12.5 保护玻璃 (28)12.6 镜头补偿 (28)13. 初始化参数 (29)13.1 YCbCr (29)13.2 RGB raw (32)13.3 RGB565 (32)13.4 输出分辨率 (32)1. 选择输出格式OV7690 支持的输出格式: YCbCr, RGB565, CCIR656 and RAW RGB. 在手机设计或其它应用中如何选择输出格式,首先看看以下backend (后端)芯片框图:常见后端芯片框图如下:LCD 接收的数据格式是RGB. 如, RGB444, RGB565, RGB555, RGB888 等数据格式,存儲器接口总是压缩格式. 压缩的数据是从 YCbCr 数据压缩而来. 因此RGB 和 YCbCr 数据都要放在芯片中. 不同的后端芯片“X” 块是不同的.1.1 有完整ISP的后端这是有完整ISP的后端.它可接收raw RGB 数据, 做插补得到RGB24数据,再做转换得到YCbCr数据. 这种后端芯片可接收Bayer raw RGB或 processed raw RGB数据.processed raw RGB是在Bayer raw RGB基础上经过处理的输出数据. Sensor的一些功能如:死伤点校正、镜头补偿、gamma校正、去噪点、锐度、暗电流补偿等都可做。
STM32 OV7670开发套件Zidong404一、OV7670模块(V2)1.1 概要OV7670模块板载了有源晶振和视频FIFO,FIFO最大容量为384KB (3M位),可以存放一帧640*480(30万像素)RGB RAW格式的图片,演示代码将摄像头配置为了320*240 RGB565格式输出,这样像素大小和数据格式刚好对应2.8寸TFT 彩屏,数据不用经过转换便能直接使用。
另外OV7670还支持YVU422和RGB RAW的输出格式,详细寄存器配置请参考相关的数据手册。
V2版本有P1和P2两个接口,两个接口引脚功能是相同的,P1是2.54mm间距,方便在没有STM32主板的情况下通过跳线与其他单片机系统连接调试,P2是2.0mm间距的,可以直接插在STM32主板上的P2插槽(注意摄像头应该面向屏的一方)。
其中有两个引脚XCLK和PWDN是扩展功能,由于模块上已经有有源晶振给摄像头提供时钟,所以XCLK不用再提供时钟;PWDN用来配置摄像头进入低功耗模式,默认情况下不进入该模式。
通常情况下,只有这两个引脚悬空,其他的引脚都是需要使用的。
1.2 LDO电路V2版本增加了一个LDO(U4)电路提供摄像头内核电压,由于OV7670内部具有LDO功能,所以默认情况下该LDO没有焊接。
提供一个LDO电路是为了能兼容其他内部不带LDO电路的摄像头。
1.3 模块工作原理OV7670与FIFO的组合要需要注意一定的时序。
一个简单而有效的组合是这样的:OV 的场同步接入MCU的外部中断(上升沿触发),这样当一个场同步的到来时(在较窄的高电平到来后,接着就是有效的场同步了【低电平】)开启FIFO的写时使能,这样数据就在行同步与MCU的控制下按照像素时钟依次写入FIFO。
当一场图像数据已经进入了FIFO以后,也标志着下一场数据将要来到,也即下一个场同步的上升沿即将到来,当下一个上升沿触发并进入中断后,MCU应该关掉FIFO的写使能,然后开始读FIFO的数据,知道数据读完以后再开始下一次的数据采集。
废话后面说,先直接上OV7670寄存器的配置部分const uint8_t OV7670_Reg[][2]={//Frame Rate Adjustment for 24Mhz input clock//30fps PCLK=24MHz{0x11, 0x80},//软件应用手册上设置的是0x80,例程设置的是0x00{0x6b, 0x0a},//PLL控制,软件应用手册上设置的是0x0a,例程设置的是0x40,将PLL调高的话就会产生花屏{0x2a, 0x00},{0x2b, 0x00},{0x92, 0x00},{0x93, 0x00},{0x3b, 0x0a},//Output format{0x12, 0x14},//QVGA(320*240)、RGB//RGB555/565 option(must set COM7[2] = 1 and COM7[0] = 0){0x40, 0x10},//RGB565,effective only when RGB444[1] is low{0x8c, 0x00},//Special effects - 特效//normal{0x3a, 0x04},{0x67, 0xc0},{0x68, 0x80},//Mirror/VFlip Enable - 水平镜像/竖直翻转使能{0x1e, 0x37},//修改配置值将产生图像显示上下或左右颠倒//Banding Filter Setting for 24Mhz Input Clock - 条纹滤波器//30fps for 60Hz light frequency//{0x13, 0xe7},//banding filer enable//{0x9d, 0x98},//50Hz banding filer//{0x9e, 0x7f},//60Hz banding filer//{0xa5, 0x02},//3 step for 50Hz//{0xab, 0x03},//4 step for 60Hz//{0x3b, 0x02},//select 60Hz banding filer//Simple White Balance - 白平衡//{0x13, 0xe7},//AWB、AGC、AGC Enable and ...//{0x6f, 0x9f},//simple AWB//AWBC - 自动白平衡控制(Automatic white balance control)//{0x43, 0x14},//用户手册里这些寄存器的值都是保留(Reserved),不用设置的呀?//{0x44, 0xf0},//{0x45, 0x34},//{0x46, 0x58},//{0x47, 0x28},//{0x48, 0x3a},//AWB Control//{0x59, 0x88},//用户手册连寄存器都是保留,初始值都没提供//{0x5a, 0x88},//{0x5b, 0x44},//{0x5c, 0x67},//{0x5d, 0x49},//{0x5e, 0x0e},//AWB Control//{0x6c, 0x0a},//{0x6d, 0x55},//{0x6e, 0x11},//{0x6f, 0x9f},//AGC/AEC - Automatic Gain Control自动增益补偿/Automatic exposure Control自动曝光控制//{0x00, 0x00},//{0x14, 0x20},//{0x24, 0x75},//{0x25, 0x63},//{0x26, 0xA5},//AEC algorithm selection - AEC公式选择//{0xaa, 0x94},//基于平均值的AEC算法Average-based AEC algorithm/基于直方图的AEC算法Histogram-based AEC algorithm//基于直方图的AGC/AEC的控制//{0x9f, 0x78},//{0xa0, 0x68},//{0xa6, 0xdf},//{0xa7, 0xdf},//{0xa8, 0xf0},//{0xa9, 0x90},//Fix Gain Control - 固定增益控制//{0x69, 0x5d},//Fix gain for Gr channel/for Gb channel/for R channel/for B channel//Color saturation 颜色饱和度+ 0//{0x4f, 0x80},//{0x50, 0x80},//{0x51, 0x00},//{0x52, 0x22},//{0x53, 0x5e},//{0x54, 0x80},//{0x58, 0x9e},//Brightness - 亮度+ 0//{0x55, 0x00},//Contrast - 对比度+ 0//{0x56, 0x40},//Gamma Curve - 伽马曲线//{0x7a, 0x20},//{0x7b, 0x1c},//{0x7c, 0x28},//{0x7d, 0x3c},//{0x7e, 0x55},//{0x7f, 0x68},//{0x80, 0x76},//{0x81, 0x80},//{0x82, 0x88},//{0x83, 0x8f},//{0x84, 0x96},//{0x85, 0xa3},//{0x86, 0xaf},//{0x87, 0xc4},//{0x88, 0xd7},//{0x89, 0xe8},//Matrix Coefficient - 色彩矩阵系数//{0x4f, 0x80},//{0x50, 0x80},//{0x51, 0x00},//{0x52, 0x22},//{0x53, 0x5e},//{0x54, 0x80},//Lens Correction Option - 镜头补偿选项 //{0x62, 0x00},//{0x63, 0x00},//{0x64, 0x04},//{0x65, 0x20},//{0x66, 0x05},//{0x94, 0x04},//effective only when LCC5[2] is high//{0x95, 0x08},//effective only when LCC5[2] is high//注释这些配置的话,就倾斜显示,并显示多块,这到底是控制什么的?跟时序图有关?{0x17, 0x16},//行频Horizontal Frame开始高八位(低三位在HREF[2:0]){0x18, 0x04},//行频Horizontal Frame结束高八位(低三位在HREF[5:3]){0x19, 0x02},//场频Vertical Frame开始高八位(低二位在VREF[1:0]){0x1a, 0x7b},//场频Vertical Frame结束高八位(低二位在VREF[3:2]){0x32, 0x80},//HREF{0x03, 0x06},//VREF//注释这个配置的话,就显示花屏了{0x15, 0x02},//配置PCLK、HREF、VSYNC相关//Automatic black Level Compensation - 自动黑电平校正{0xb0, 0x84},//调试时注释这项配置时,颜色显示不正常了,红色练绿色,绿色变红色,但用户手册对这寄存器是保留RSVD//{0xb1, 0x0c},//{0xb2, 0x0e},//{0xb3, 0x82},//{0xb8, 0x0a},//SCALING_xx寄存器//{0x70, 0x00},//{0x71, 0x00},//{0x72, 0x11},//{0x73, 0x08},//{0x3e, 0x00},//ADC//{0x37, 0x1d},//ADC控制ADC Control//{0x38, 0x71},//ADC和模拟共模控制ADC and Analog Common Mode Control//{0x39, 0x2a},//ADC偏移控制ADC Offset Control//零杂的寄存器//{0x92, 0x00},//空行低八位Dummy Line low 8 bits//{0xa2, 0x02},//像素时钟延时//{0x0c, 0x0c},//{0x10, 0x00},//{0x0d, 0x01},//{0x0f, 0x4b},//{0x3c, 0x78},//{0x74, 0x19},//用户手册里这几个寄存器都是保留RSVD//{0x0e, 0x61},//{0x16, 0x02},//{0x21, 0x02},//{0x22, 0x91},//{0x29, 0x07},//{0x33, 0x0b},//{0x35, 0x0b},//{0x4d, 0x40},//{0x4e, 0x20},//{0x8d, 0x4f},//{0x8e, 0x00},//{0x8f, 0x00},//{0x90, 0x00},//{0x91, 0x00},//{0x96, 0x00},//{0x9a, 0x80},};刚开始学OV7670摄像头,我想大家跟我一样心里很毛躁吧,一个模块需要你配置100多个寄存器,但用户手册对寄存器的介绍却草草的一笔带过,自己无从下手啊,只能看开发板给的例程和上网找一些大虾的帖子了。
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==0v7670资料篇一:ov7670寄存器note废话后面说,先直接上OV7670寄存器的配置部分const uint8_t OV7670_Reg[][2]={//Frame Rate Adjustment for 24Mhz input clock//30fps PCLK=24MHz{0x11, 0x80},//软件应用手册上设置的是0x80,例程设置的是0x00{0x6b, 0x0a},//PLL控制,软件应用手册上设置的是0x0a,例程设置的是0x40,将PLL调高的话就会产生花屏{0x2a, 0x00},{0x2b, 0x00},{0x92, 0x00},{0x93, 0x00},{0x3b, 0x0a}//Output format{0x12, 0x14},//QVGA(320*240)、RGB//RGB555/565 option(must set COM7[2] = 1 and COM7[0] = 0) {0x40, 0x10},//RGB565,effective only when RGB444[1] is low {0x8c, 0x00},//Special effects -特效//normal{0x3a, 0x04},{0x67, 0xc0},{0x68, 0x80},//Mirror/VFlip Enable -水平镜像/竖直翻转使能{0x1e, 0x37},//修改配置值将产生图像显示上下或左右颠倒//Banding Filter Setting for 24Mhz Input Clock -条纹滤波器//30fps for 60Hz light frequency//{0x13, 0xe7},//banding filer enable//{0x9d, 0x98},//50Hz banding filer//{0x9e, 0x7f},//60Hz banding filer//{0xa5, 0x02},//3 step for 50Hz//{0xab, 0x03},//4 step for 60Hz//{0x3b, 0x02},//select 60Hz banding filer //Simple White Balance -白平衡//{0x13, 0xe7},//AWB、AGC、AGC Enable and ...//{0x6f, 0x9f},//simple AWB//AWBC -自动白平衡控制(Automatic white balance control)//{0x43, 0x14},//用户手册里这些寄存器的值都是保留(Reserved),不用设置的呀?//{0x44, 0xf0},//{0x45, 0x34},//{0x46, 0x58},//{0x47, 0x28},//{0x48, 0x3a},//AWB Control//{0x59, 0x88},//用户手册连寄存器都是保留,初始值都没提供//{0x5a, 0x88},//{0x5b, 0x44},//{0x5c, 0x67},//{0x5d, 0x49},//{0x5e, 0x0e},//AWB Control//{0x6c, 0x0a},//{0x6d, 0x55},//{0x6e, 0x11},//{0x6f, 0x9f},//AGC/AEC - Automatic Gain Control自动增益补偿/Automatic exposure Control自动曝光控制//{0x00, 0x00},//{0x14, 0x20},//{0x24, 0x75},//{0x25, 0x63},//{0x26, 0xA5},//AEC algorithm selection - AEC公式选择//{0xaa,0x94},//基于平均值的AEC。
OV7670/OV7171CM OS VGA(O m niPixel®)CAMERAC 简介功能●●●●●●●●●●●●●●●1 OV7670/OV7171管脚图(俯视OV7670/OV7171 CMOS VGA 图像传感器数据手册数据手册. OmniPixel,VarioPixel,OmniVision图标已注册为功能简介图2 描述的是OV7670/OV7171图像传感器的功能模块,包括:●感光阵列(共有656x488个像素,其中在YUV的模式中,有效像素为640x480个)●模拟信号处理●A/D转换●测试图案发生器●数字信号处理器●图像缩放●时序发生器●数字视频端口●SCCB接口●LED和闪光灯输出控制图 2 功能框Note1: DSP*(镜头校正、去噪声、黑白点补偿、自动白平衡等) 7670CSP_DS_002测试图案发生器测试图案发生器有如下功能:●八色彩色条图案●渐变至黑白彩色条图案●输出脚移位“1”数字处理器(DSP)这个模块控制由原始信号插值到RGB 信号的过程,并控制一些图像质量:●边缘锐化(二维高通滤波器)●颜色空间转换(原始信号到RGB 或者YUV/YCbYCr)●RGB 色彩矩阵以消除串扰●色相和饱和度的控制●黑/白点补偿●降噪●镜头补偿●可编程的伽玛●十位到八位数据转换缩放功能这个模块按照预先设置的要求输出数据格式,能将YUV/RGB 信号从VGA 缩小到CIF 以下的任何尺寸。
数字视频接口寄存器COM2[1:0]调节IOL/IOH 的驱动电流,以适应用户的负载。
SCCB 接口SCCB 接口控制图像传感器芯片的运行,详细使用方法参照OmniVision Te ch nolo g ies Seril Camera Control B u s(SCCB) Spe c ifi c ation LED 和闪光灯的输出控制OV7670/OV7171有闪光灯模式,控制外接闪光灯或闪光LED 的工作。