OV7670分辨率设置

合集下载

OV7670调试的问题

OV7670调试的问题

2012-03-24 20:42OV7670调试的问题拿出来请大家共同解决硬件:STM32+OV7670+AL422B (电路参照zidong404的)软件思路也是参考zidong404的,现在图像显示基本出来了,但是效果很不好,最关键的是不知道从哪修改。

液晶ssd1289显示的图片如下:输出格式:QVGA RGB565 320*240出现的问题:1、图像分块,而且三块显示的是同一幅图片,不知道是缓存指针读写复位不正常的是不,程序和zidong404的一样的?2、图像重叠,一次显示不是全屏,只是半屏?好像写入的数据不够?我现在很模糊的几个问题是:1、配置QVGA RGB565格式写入缓存AL422的数据是不是320*240*2个字节?如果是,那为何一次显示只有半屏呢?2、还有窗口设置我不是太懂OV7660_config_window(272,16,320,240);// set 240*320 ,谁能帮忙解释一下,272和16这几个数据是怎么得到的?3、还有__nop();这条指令的运用,是直接用吗?需要包含什么文件吗? 51里面用它不是包含一个文件才能使用它吗?弄了半天终于弄出来了!在这里要感谢zidong404的指点。

现在分享一下我的调试结果:1、上面第一和第二个问题出现的原因很简单,摄像头配置出来的图片数据是横屏格式240行,每行320个点,每个像素2个字节,而我的液晶屏配置是竖屏显示的,所以图像分块。

这一点虽然没问题了,但我感觉这样的话图像分块应该是不规则的,而结果是三块一样的图像。

2、还有读写指针复位,如果写指针复位延时不够也会图像分块。

3、还有XCLK时钟我的是8M,这个我试了36M的影响不大,但是不能超过50M,STM32系统时钟72M直接加上也能显示图像,但是有一层绿色的背景色。

4、还有PLL倍频选择旁路PLL图像也会分块,图像发生畸变,大于输入时钟*4就OK了。

5、显示的时候有时液晶背景颜色会是淡黄的不知为何?图像显示正常。

关于【野火】OV7725例程移植【OV7670】总结

关于【野火】OV7725例程移植【OV7670】总结

关于OV7725程序移植OV7670总结用了三天的时间,终于搞定了程序的移植。

也是第一次移植stm32程序。

最终的移植成功版本,改了SCCB通信、FIFO读写时序、寄存器配置、引脚修改的一些地方。

一、移植过程中SCCB通信遇到的问题1.由于野火的OV7725摄像头内置上拉电阻,所以在配置时SDA和SDL都被设置成了Mode_OD (开漏模式),但是战舰带的OV7670摄像头并没有内置上拉电阻,所以不能用开漏模式,否则不能正常输出高电平,SDA线也不会被主机拉高。

于是参考了战舰的例程。

战舰对SCL线设置为了PP(推挽输出模式),SDA线的输出则需要切换。

如下:在战舰的例程上进行修改时,由于需要修改一些IO口,所以需要把这句改掉。

我尝试用这样的手法修改:发现并不可行。

查询网络,原因可能是在运行中途修改管脚模式时,由于32的LCKK:锁密钥,并不能直接修改管脚工作模式。

我们选择对底层寄存器进行操作。

于是乎这样改:*注:SDA为PC7口。

2. 还有需要修改的地方就是:在需要读取SDA电平状态的时候,要用SCCB_SDA_IN 这个语句把替换掉SDA_H,而不是先SDA_H 然后再SCCB_SDA_IN 。

否则不能正确读取到SDA线的电平。

3.最后一步,器件ID:在这一段代码用到:二、FIFO读数据时序的修改1.由于每个人选择的数据口可能不同,有的是0-7位,有的是8-15位,所以我这里给出了两种不同的读取时序。

H_MY_READ_FIFO_PIXEL(YUV)是当数据位选择的是8-15位时候用的;L_MY_READ_FIFO_PIXEL(YUV)是当数据位选择的是0-7位时候用的。

*注:因为我要的二值化的图像,所以只读取了YUV 分量中的Y分量。

下面这段代码是读取RGB565的:三、寄存器的配置1. 我用的YUV,没有给每位寄存器重定义。

所以要结合Datasheet自行查看。

/*以下为 YUV参数设置*/{0x12, 0x10},{0x3a, 0x14},{0x3d, 0x80},//0 0 : Y U Y V (3a:14 3d:80)//0 1 : Y V Y U (3a:14 3d:81)//1 0 : U Y V Y (3a:18 3d:80)//1 1 : V Y U Y (3a:18 3d:81){0x67, 0x11}, //手工设置 U{0x68, 0xFF}, //手工设置 V{0x40, 0xC0}, //YUV输出//输出窗口设置{0x32, 0x80}, //HREF{0x17, 0x16}, //HSTART{0x18, 0x04},//HSTOP{0x19, 0x02},//VSTRT{0x1a, 0x7a},//0x7a, VSTOP{0x03, 0x0a},//0x0a, VREF{0x0c, 0x0c},{0x15, 0x00},{0x3e, 0x00},//10{0x70, 0x00},{0x71, 0x01},{0x72, 0x11},{0x73, 0x09},//{0xa2, 0x02},//15{0x11, 0x00},//时钟分频设置,0,不分频.{0x7a, 0x20},{0x7b, 0x1c},{0x7c, 0x28},{0x7d, 0x3c},//20{0x7e, 0x55},{0x7f, 0x68},{0x80, 0x76},{0x81, 0x80},{0x82, 0x88},{0x83, 0x8f},{0x84, 0x96},{0x85, 0xa3},{0x86, 0xaf},{0x87, 0xc4},//30{0x88, 0xd7},{0x89, 0xe8},{0x13, 0xe0},{0x00, 0x00},//AGC{0x10, 0x00},{0x0d, 0x00},{0x14, 0x20},//0x38, limit the max gain {0xa5, 0x05},{0xab, 0x07},{0x24, 0x75},//40{0x25, 0x63},{0x26, 0xA5},{0x9f, 0x78},{0xa0, 0x68},{0xa1, 0x03},//0x0b,{0xa6, 0xdf},//0xd8,{0xa7, 0xdf},//0xd8,{0xa8, 0xf0},{0xa9, 0x90},{0xaa, 0x94},//50{0x13, 0xe5},{0x0e, 0x61},{0x0f, 0x4b},{0x16, 0x02},{0x1e, 0x27},//图像输出镜像控制.0x07, {0x21, 0x02},{0x22, 0x91},{0x29, 0x07},{0x33, 0x0b},{0x35, 0x0b},//60{0x37, 0x1d},{0x38, 0x71},{0x39, 0x2a},{0x3c, 0x78},{0x4d, 0x40},{0x4e, 0x20},{0x69, 0x5d},{0x6b, 0x40},//PLL*4=48Mhz{0x74, 0x19},{0x8d, 0x4f},{0x8e, 0x00},//70{0x8f, 0x00},{0x90, 0x00},{0x91, 0x00},{0x92, 0x00},//0x19,//0x66{0x96, 0x00},{0x9a, 0x80},{0xb0, 0x84},{0xb1, 0x0c},{0xb2, 0x0e},{0xb3, 0x82},//80{0xb8, 0x0a},{0x43, 0x14},{0x44, 0xf0},{0x45, 0x34},{0x46, 0x58},{0x47, 0x28},{0x48, 0x3a},{0x59, 0x88},{0x5a, 0x88},{0x5b, 0x44},//90{0x5c, 0x67},{0x5d, 0x49},{0x5e, 0x0e},{0x64, 0x04},{0x65, 0x20},{0x66, 0x05},{0x94, 0x04},{0x95, 0x08},{0x6c, 0x0a},{0x6d, 0x55},{0x4f, 0x80},{0x50, 0x80},{0x51, 0x00},{0x52, 0x22},{0x53, 0x5e},{0x54, 0x80},//{0x54, 0x40},//110{0x09, 0x03},//驱动能力最大{0x6e, 0x11},//100{0x6f, 0x9f},//0x9e for advance AWB {0x55, 0x00},//亮度{0x56, 0x40},//对比度{0x57, 0x80},//0x402.RGB565的配置:/*以下为OV7670 QVGA RGB565参数 */ {0x3a, 0x04},//{0x40, 0x10},{0x12, 0x14},{0x32, 0x80},{0x17, 0x16},{0x18, 0x04},//5{0x19, 0x02},{0x1a, 0x7b},//0x7a,{0x03, 0x06},//0x0a,{0x0c, 0x0c},{0x15, 0x02},{0x3e, 0x00},//10{0x70, 0x00},{0x71, 0x01},{0x72, 0x11},{0x73, 0x09},//{0xa2, 0x02},//15{0x11, 0x00},{0x7a, 0x20},{0x7b, 0x1c},{0x7c, 0x28},{0x7d, 0x3c},//20{0x7e, 0x55},{0x7f, 0x68},{0x80, 0x76},{0x81, 0x80},{0x82, 0x88},{0x83, 0x8f},{0x84, 0x96},{0x85, 0xa3},{0x86, 0xaf},{0x87, 0xc4},//30{0x88, 0xd7},{0x89, 0xe8},{0x13, 0xe0},{0x00, 0x00},//AGC{0x10, 0x00},{0x0d, 0x00},{0x14, 0x30},//0x38, limit the max gain {0xa5, 0x05},{0xab, 0x07},{0x24, 0x75},//40{0x25, 0x63},{0x26, 0xA5},{0x9f, 0x78},{0xa0, 0x68},{0xa1, 0x03},//0x0b,{0xa6, 0xdf},//0xd8,{0xa7, 0xdf},//0xd8,{0xa8, 0xf0},{0xa9, 0x90},{0xaa, 0x94},//50{0x13, 0xf5},{0x0e, 0x61},{0x0f, 0x4b},{0x16, 0x02},{0x1e, 0x07},//0x07,{0x21, 0x02},{0x22, 0x91},{0x29, 0x07},{0x33, 0x0b},{0x35, 0x0b},//60{0x37, 0x1d},{0x38, 0x71},{0x39, 0x2a},{0x3c, 0x78},{0x4d, 0x40},{0x4e, 0x20},{0x69, 0x5d},{0x6b, 0x40},//PLL{0x74, 0x19},{0x8d, 0x4f},{0x8e, 0x00},//70{0x8f, 0x00},{0x90, 0x00},{0x91, 0x00},{0x92, 0x00},//0x19,//0x66{0x96, 0x00},{0x9a, 0x80},{0xb0, 0x84},{0xb1, 0x0c},{0xb2, 0x0e},{0xb3, 0x82},//80{0xb8, 0x0a},{0x43, 0x14},{0x44, 0xf0},{0x45, 0x34},{0x46, 0x58},{0x47, 0x28},{0x48, 0x3a},{0x59, 0x88},{0x5a, 0x88},{0x5b, 0x44},//90{0x5c, 0x67},{0x5d, 0x49},{0x5e, 0x0e},{0x64, 0x04},{0x65, 0x20},{0x66, 0x05},{0x94, 0x04},{0x95, 0x08},{0x6c, 0x0a},{0x6d, 0x55},{0x4f, 0x80},{0x50, 0x80},{0x51, 0x00},{0x52, 0x22},{0x53, 0x5e},{0x54, 0x80},//{0x54, 0x40},//110{0x6e, 0x11},//100{0x6f, 0x9f},//0x9e for advance AWB {0x55, 0x00},//亮度{0x56, 0x45},//对比度{0x57, 0x80},//0x40四、移植过程中引脚的修改1.外部中断的修改我需要修改的引脚有FIFO-OE / FIFO-RCLK / FIIFO-RRST / SCL / SDA / VSYNC / WRST其他的不用多说,VSYNC需要修改的地方还是蛮多的~(我用的外部中断口是PB13)其中需要注意的是:macOV7670_VSYNC_EXTI_IRQ这个,Pin13口需要用这个,具体用哪个要查书。

PC104对OV7670寄存器的读写

PC104对OV7670寄存器的读写

PC104对OV7670寄存器的读写摘要:Ominisrision 公司的新型摄像头模组OV7670,具有体积小、输出图像格式多、接口方便、寄存器可读写等特点,是嵌入式系统中图像采集的理想选择。

通过设置OV7670 的寄存器的值,可以更好地实现对摄像头的控制,得到更加理想的图像。

本文介绍了PC104 系统对OV7670 摄像头模组寄存器读写的过程及编程方法。

关键词:OV7670;图像采集;PC104;SCCB 嵌入式系统中的图像采集是进行图像处理的基础,只有在采集时就进行前端的处理和控制,才能减少图像中的噪声,为后续的图像处理提供良好的数据。

OV7670 开放了控制寄存器,用户可以通过SCCB 总线来实现读写操作,可以设置图像输出格式、控制曝光等,为具体的应用场景提供了更底层的支持。

正确的读写寄存器就成为获得图像的第一步。

1 OV7670 摄像头模组简介OV7670 CAMERACHIPTM 图像传感器,体积小、工作电压低,提供单片VGA 摄像头和影像处理器的所有功能。

通过SCCB 总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8 位影响数据。

该产品VGA 图像最高达到30 帧/秒。

用户可以完全控制图像质量、数据格式和传输方式。

所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB 接口编程。

OmmiVision 图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高图像质量,得到清晰的稳定的彩色图像。

功能框图如图1 所示。

为了保证图像采集的连续性和完整性,外加一个384K,8 位的FIFO,AL422 为图像采集和处理作缓冲。

OV7670 与AL422 的连接如图2 所示。

2 两线SCCB SCCB(Serial Camera Control Bus),即串行摄像机控制总线,是。

高通CAMIF和Ov_sensor_调试总结

高通CAMIF和Ov_sensor_调试总结

高通 CAMIF 和 OV sensor 调试总结手机事业部 CDMA 二部 时慧钦 2008 年 2 月 【摘要】 要借用某高通平台的 camera 接口,联合 OV(OmniVision)公司的 sensor,实现手机摄像头的拍照及 录像功能,需要处理两芯片、显示屏和需求配合的问题,在这个过程中遇到并解决了许多问题。

【关键词】 拍照 预览 CAMIF一、问题的提出新手上路,第一次见到 ov sensor,第一次认识 Qualcomm 的 CAMIF,没有任何经验,调试中遇到 诸多劫难,如没有预览不到任何象素点、图像色彩不对、拍照无效区域、dispsize 设置不合适预览全屏 问题、黑白模式上层设不成、预览和拍照范围不一致的问题、软件转 90 度压扁问题等等。

二、解决思路先做基础理论的储备。

VGA :640x480; QVGA :320x240; YUV 格式:4:2:2 曝光控制/伽玛增益/白平衡等都是效果方面的调整。

对于象素数较大的 sensor,如 1280x1024,由于数据量较大,通常预览分辨率 640x512 拍照分辨率 是 1280x1024,且拍照时的 PCLK 是预览时的 2 倍,这样可以对 VFE(video front end)来说是同样的 帧速率。

Ov7670 的寄存器 0x15 的 bit6 可以切换 sensor 输出 HREF 或 HSYNC,我们用 HREF。

Camera_process_config_vfe 初始化 VFE 寄存器; Qcamraw_set_header 设置 sensor 帧头; 代码分层: 层 代码位置 Drivers camsensor services camera Oem 层 Oemcamera.c App 层 Qcamera.c/Qcamcorder.cTrace32命令:data.image addr. 640. 480. /GS8, 可方便的看某buffer地址中的图片, 判断取到的预览图 片内容和最终显示的屏上的差异。

摄像机的录像分辨率设置

摄像机的录像分辨率设置

摄像机的录像分辨率设置在摄像机的应用中,录像分辨率设置是一个重要的参数,它直接影响到所录制视频的质量和文件大小。

合理的分辨率选择可以在保证画面清晰度的同时,有效控制存储空间的占用。

本文将探讨摄像机录像分辨率设置的相关问题,以帮助读者正确选择合适的录像分辨率。

一、什么是录像分辨率录像分辨率是指录制视频时所采集的图像的细节程度,通常用水平像素和垂直像素表示。

例如,一种常见的分辨率为1920x1080,即水平像素为1920,垂直像素为1080。

分辨率越高,图像的细节表现能力越好,但同时也会占用更多的存储空间。

二、常见的录像分辨率1. 1080p(1920x1080)1080p是目前最为常见的高清分辨率,它提供了相对较高的图像质量,在大多数情况下都能满足普通用户的需求。

1080p分辨率的视频在播放时具有较好的清晰度和细节表现,适合于大屏幕播放和高质量演示。

2. 720p(1280x720)720p分辨率相对于1080p来说,图像的细节表现能力稍逊一筹,但在很多应用场景下仍然足够。

由于720p分辨率的视频文件较1080p分辨率小,存储空间占用更低,适合于存储和传输速度有限的环境。

3. VGA(640x480)和QVGA(320x240)VGA和QVGA是常见的低分辨率选项,通常用于特殊应用场景或者要求较低的监控环境。

虽然相对于高分辨率来说,图像质量较差,但存储空间占用较小,适合于存储需求和带宽限制较高的场景。

三、如何选择合适的录像分辨率在选择合适的录像分辨率时,需要综合考虑以下几个因素:1. 应用场景根据摄像机的具体应用场景来选择合适的录像分辨率。

如果是用于普通家庭监控或者个人使用,1080p或720p分辨率已经足够满足需求;而如果是用于安全监控或其他专业领域,可能需要更高的分辨率。

2. 存储空间高分辨率的视频文件通常占用更多的存储空间,因此在存储资源有限的情况下,需要根据实际情况进行选择。

如果存储空间有限,可以考虑降低分辨率以节省空间。

微雪电子OV7670 Camera Board(B) 使用手册

微雪电子OV7670 Camera Board(B) 使用手册

OV7670 Camera Board (B)使 用 说 明 V1.2微雪电子w ww.w a v e s目录1.OV7670一般摄像头模块1.1简介1.2管脚定义1.3控制方式说明 1.4采集图像的基本方法2.OV7670带FIFO 摄像头模块2.1简介 2.2管脚定义2.3控制方式说明 2.4图像采集的基本方法3.问题解答3.1图像采集难吗3.2学习图像方面的知识需要哪些基础 3.3初学者遇到问题该怎么解决 3.4模块提供那些资料3.5单片机能够真正的采集图像吗3.6带FIFO 和不带FIFO 的模块到底哪个好,有什么区别 3.7模块上有晶振好,还是没晶振好 3.8摄像头寄存器该怎么设置3.9 微雪电子模块提供的Demo 输出的数据是什么格式的w ww.w a ve s3.10如果想真正实现图像的采集并且能够处理图像数据该如何做 3.11 微雪电子的那个模块能够适合飞思卡尔小车的比赛 3.12 微雪电子的模块输出到底是模拟的还是数字的3.13 微雪电子模块的质量如何3.14 微雪电子几种驱动板的功能,区别是什么 3.15如何检测微雪电子摄像头模块是否损坏 3.16 微雪电子摄像头模块和模组的区别是什么w ww.w a ve s1.OV7670一般摄像头模块1.简介:OV7670一般模块指微雪电子推出的低成本数字输出CMOS 摄像头,其摄像头包含30w 像素的CMOS 图像感光芯片,3.6mm 焦距的镜头和镜头座,板载CMOS 芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。

图1.OV7670一般模块2.管脚定义:如图,控制传感器所需的管脚定义如下:3V3-----输入电源电压(推荐使用3.3,5V 也可,但不推荐使用) GDN-----接地点SIO_C---SCCB 接口的控制时钟(注意:部分低级单片机需要上拉控制,和I2C 接口类似)w ww.w a ve sSIO_D---SCCB 接口的串行数据输入(出)端(注意:部分低级单片机需要上拉控制,和I2C 接口类似)VSYNC---帧同步信号(输出信号) HREF----行同步信号(输出信号)PCLK----像素时钟(输出信号) XCLCK---时钟信号(输入信号) D0-D7---数据端口(输出信号) RESTE---复位端口(正常使用拉高)PWDN----功耗选择模式(正常使用拉低)图2.微雪摄像头接口定义3.控制方式说明采集图像数据需要严格按照OV 公司的芯片时序进行,这些时序包括:(1) S CCB 通讯时序,其作用是设置芯片内部寄存器,以控制图像的各种所w ww.w a ve s需功能。

OV7670带FIFO的CMOS摄像头使用说明

OV7670带FIFO的CMOS摄像头使用说明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 的控制以及时序关系,就能够实现图像的采集。

OV7670摄像头彻底解读

(COM1=0x04;AECHH=0x07;AECH=0x10,COM8=0x13) 5) 外部时序输出(VSYNC,HREF/HSYNC,和 PCLK)
4 / 23
2013‐2‐21
[艾曼电子技术文档 HTTP:// ]
二、 OV7670 摄像头怎么用
1. 摄像头硬件电路
数据传输的终止
图 8 SCCB 终止信号 tPSC 是 SCCB——E 上升沿,SIO_D 保持逻辑高电平的时间,最小为 15ns; tPSA 是 SIO_D 上升沿,SCCB_E 必须保持低电平的时间,最小为 0ns。
2.3 SCCB 写时序
写时序由 3 相构成。先写设备地址,再写寄存器地址,最后写寄存器的值,即 ID‐Address + SUB‐Address + W‐Data。OV7670 的设备地址为 0x42,最后一位用来判断读写,即读的时候为 0x43。
2 / 23
2013‐2‐21
[艾曼电子技术文档 HTTP:// ]
15
DVDD
Power
Power supply (VDD-C= 1.8 VDC + 10%) for digital output drive
16
HREF
Output
HREF output
Power Down Mode Selection - active high, internal
U1
A1 A2 A3 A4 A5 B1 B2 B3 B4 B5 C1 C2 D1 D2 E1 E2 E3 E4 E5 F1 F2 F3 F4 F5
AVDD SIO_D SIO_C D1 D3 PWDN VREF2 AGND D0 D2 DVDD VREF1 VSYNC HREF PCLK STROBE XCLK D7 D5 DOVDD RESET# DOGND D6 D4

OV7670摄像头 入门基础知识

颜色空间指不同波长的电磁波谱与不同物质相互作用所构成的色谱空间。

颜色空间也称色彩模型(又称彩色空间或彩色系统),它的用途是在某些标准下用通常可接受的方式对彩色加以说明。

色彩模型是描述使用一组值(通常使用三个、四个值或者颜色成分)表示颜色方法的抽象数学模型。

本质上,色彩模型是坐标系统和子空间的阐述。

通俗地说,自然界的多彩空间是复杂变换的,在不同的应用领域人们在这个复杂的色彩空间中采用的色彩范围或者说是选取的色彩范围有所不同或者是表述方法不同。

因此就出现了多种多样的空间色彩描述方法,即不同的颜色空间。

颜色空间有许多种,常用有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来进行插值和特效处理。

ov7670寄存器配置调试总结

废话后面说,先直接上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多个寄存器,但用户手册对寄存器的介绍却草草的一笔带过,自己无从下手啊,只能看开发板给的例程和上网找一些大虾的帖子了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

0x18 HSTOP 输出格式-行频结束高八位(低三位在HREF[5:3])
0x19 VSTRT 输出格式-场频开始高八位(低二位在VREF[1:0])
0x1A VSTOP 输出格式-场频结束高八位(低二位在 VREF[3:2])
0x03 VREF 位[3:2]VREF 结束的低两位(高八位见VSTOP[7:0]
关于 OV7670 摄像头 的分辨率设置
最近一直在纠结如何把 OV7670 输出的 图片分辨率缩小,以减少数据量来适应数据的传输, 在网上看了好多也没有关于寄存器的具体设置,最终又读了几遍数据手册,加上网友们写的
帖子的启发,总结出如下结论,希望大家批评指正。
Ov7670 的寄存器中跟分辨率有关的寄存器主要是一下几个: 0x17 HSTART 输出格式-行频开始高八位(低三位在HREF[2:0])
u16 endx=(startx+width*2)%784; u16 endy=(starty+height*2); u8 x_reg, y_reg; u8 state,temp;
state = rdOV7670Reg(0x32, &; state = rdOV7670Reg(0x03, &y_reg ); y_reg &= 0xF0;
位[1:0]VREF 开始的低两位(高八位见 VSTOP[7:0]
0x32 HREF 读写HREF控制
位[5:3]:HREF结束的低3位(高8位在HSTOP)
位[2:0]:HREF 结束的低 3 位(高 8 位在 HSTOP)
网上给的一般的设置方式是这样的:QVGA RGB565 320*240
{0x32, 0x80},
再看 VGA 和 QVGA 的区别:
通过这几幅图可以看出来 VSTART VSTOP 这两个寄存器决定了采集的行数也就是高度 VSTART = HEIGHT*2 + VSTOP; 通过比较 QVGA 和 VGA 时序的区别可以看出 乘以二的 原因
这样我们就可以写一个简单的函数来设置 OV7670 的分辨率了 输入图像的行起始点,场起始点, 宽度 ,高度计算得到相应寄存器的值 编译环境:keil mdk void OV7670_config_window(u16 startx,u16 starty,u16 width, u16 height) {
计算 PCLK 的参数,如下: VSYNC: 510* Line = 3*tLine + 15*tLine +480*tLine HREF: 784*tP = 640*tP + 144*tP HSYNC: 784*tP = 80*tP + 45*tP + 640*tP + 19*tP VGA RGB565, YUV 30fps: PCLK = 784 * 510 * 30 * 2(byte) = 23990400 = 24MHz
我们设置 OV7670_config_window(184,10,320,240)的图片如下:
我们设置 OV7670_config_window(184,10,160,120)的图片为: 同理设置 OV7670_config_window(184+160*2,10+120*2,160,120)的图片为: 微笑 smile 2012/08/16
//设置 HREF temp = x_reg|((endx&0x7)<<3)|(startx&0x7); state = wrOV7670Reg(0x32, temp ); temp = (startx&0x7F8)>>3; state = wrOV7670Reg(0x17, temp ); temp = (endx&0x7F8)>>3; state = wrOV7670Reg(0x18, temp );
//设置 VREF temp = y_reg|((endy&0x3)<<2)|(starty&0x3); state = wrOV7670Reg(0x03, temp ); temp = (starty&0x3FC)>>2; state = wrOV7670Reg(0x19, temp ); temp = (endy&0x3FC)>>2; state = wrOV7670Reg(0x1A, temp ); }
{0x17, 0x17},
{0x18, 0x05},
{0x19, 0x02},
{0x1a, 0x7b},
{0x03, 0x0a},
先把这几个寄存器的值计算一下可以发现设置是这样的 :
HSTART HSTOP VSTART VSTOP
184
40
10
490
先看一下 HREF 的意义:
可以看出 HREF 的高电平宽度等于我们所要显示的一行像素的数据的个数: HREF = WEIGHT*2; 乘以二是因为每个像素点是有两个数据 HSTOP=START + HREF; 184 + 320*2 = 824; 可是 HSTOP 是 40; 这里的 40 是 824%784 得到的 为什么对 784 取余数可以看下数据手册中的这个图:
相关文档
最新文档