ov7670分辨率设置
- 格式:pdf
- 大小:457.57 KB
- 文档页数:4


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总结用了三天的时间,终于搞定了程序的移植。
也是第一次移植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口需要用这个,具体用哪个要查书。
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需功能。