怎么提取ov7670摄像头模块的像素

1,OV7670 有一大堆寄存器需要配置,这些配置可以参考别人已经做好的代码。
2,OV7670 设置为640*480 16的分辨率,30帧每秒,就是30FPS,每一个RGB的数据是16位的,这16位的数据分成两次从8BIT的总线传输过来。
3,计算时钟是多少: 640*480个点,每秒传递30帧(也就是刷屏30次每秒),这样就是640*480*30,而每个点是16位的需要在0OV7670位的传输总线上传输2次。因此显示的存储带宽应该是 640*480*30*2 &(字节每秒)。
4,而实际的给OV7670的时钟XCLK应该考虑到消隐和同步的开销,这点计算和VGA的时钟计算相似,计算数值约为25M。采用25M的XCLK 就可以。
5,XCLK是嫁给OV7670的时钟信号,PCLK 是OV7670输出同步信号(而非时钟)。
6,从OV7670获取图像再存在一个缓冲区,之后VGA显示控制器从这个缓冲区获取数据,现在在VGA屏幕上。
7,上面提到的缓冲区,在ZYNQ7 新片有丰富的BRAM,我们直接用BRAM 开辟出深度为0*480),宽度为12位(因为VGA显示是12位的)的BRAM块。采用准双口模式,OV7670的数据每采集两个连续的8位转换并从BRAM的A口写入这个BRAM;VGA控制器直接从B口读出数据进行显示。
8,OV7670采用了类似I2C的串行接口,实现对多个寄存器的配置,SIOD相当于I2C的SDA,是双向的,只我们一般忽略了从OV7670的应答(正确的时序了链接必然得到正确应答,另外如果不应答,程序也似乎没有别的招应对处理)。
9,图像色彩还有点问题,还有继续调试,应该是寄存器配置问题,或者RGB信号线对应。
11,下面是PMOD A B口约束文件的对应。
NET OV7670_PWDN LOC = &Y11 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA1
NET OV7670_D&0& &LOC = &AA11 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA2
NET OV7670_D&2& LOC = &Y10 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA3
NET OV7670_D&4& LOC = &AA9 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA4
NET OV7670_RESET LOC = AB11 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA7
NET OV7670_D&1& LOC = &AB10 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA8
NET OV7670_D&3& LOC = &AB9 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA9
NET OV7670_D&5& LOC = &AA8 & | IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JA10
NET OV7670_D&6& LOC = &W12 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB1
NET OV7670_XCLK LOC = &W11 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB2
NET OV7670_HREF LOC = &V10 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB3
NET OV7670_SIOD LOC = &W8 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB4
NET OV7670_D&7& LOC = &V12 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB7
NET OV7670_PCLK LOC = &W10 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB8
NET OV7670_VSYNC LOC = &V9 &| IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB9
NET OV7670_SIOC LOC = &V8 & | IOSTANDARD=LVCMOS33 | SLEW=SLOW; # JB10
本文已收录于以下专栏:
相关文章推荐
一、OV7670模块:
简单介绍一下OV7670传感器吧:CMOS器件;标准的SCCB接口,兼容IIC接口;内置感光阵列,时序发生器,AD转换器,模拟信号处理,数字信号处理器.....
对于自带FIFO的OV7670
器件地址 0x42
三相写寄存器(下面省略器件地址,为寄存器地址,写入数据)
//复位SCCB
读寄存器(2相写+...
因为项目使用了下面这款ov7670摄像头,480*320的彩色摄像头,图像和帧率都挺理想的,用于简单的图像处理和网络图像监控开发的没压力。具体参数自行百度。
我是用这款摄像头来进行人民币面额...
{0x3a, 0x04},
// TSLB 行缓冲测试选项
// [7~6] 保留
转自:/tojobic?gid=3511118&from=post&checked=true
对OV7725中...
他的最新文章
讲师:李江龙
讲师:司徒正美
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)OV7670摄像头彻底解读_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
OV7670摄像头彻底解读
&&艾曼FPGA板子中带的解说,非常不错,对嵌入式的摄像头开发非常有帮助
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩20页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢查看: 1305|回复: 10
OV7670摄像头定位算法
分享一套摄像头算法程序
13:15 上传
点击文件名下载附件
下载积分: 黑币 -5
4.68 MB, 下载次数: 108, 下载积分: 黑币 -5
盗取别人资料来卖,骗子!!!
孙子!!!!!!骗子!!!!
无效楼层,该帖已经被删除
楼上说是骗子?我都不敢下了
????敢问楼上的,到底发生了什么
孙子!!!!!!骗子!!!!
你有病吧,我又没说是我自己写的,睁大你的狗眼看清楚了,我写的明明白白:分享一套程序。程序是我自己用过才分享出来的。我哪里骗你了?脑残啊,上来就骂,你这就狗东西还有脸来上网啊
楼上说是骗子?我都不敢下了
程序没问题,就因为这个程序不是我自己写的,我从网上找的资料分享出来就莫名被他骂了一顿
用的什么芯片
无效楼层,该帖已经被删除
真的可以不,用的什么处理芯片。
看是用什么芯片了,应该可以
Powered by君,已阅读到文档的结尾了呢~~
ov7670摄像头 ov7670摄像头模块 ov7670 ov7670 stm32 ov7670 fifo ov7670电路图 ov7670寄存器配置 ov7670程序 ov7670 寄存器 mini2440 ov7670
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
OV7670摄像头彻底解读
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口OV7670 摄像头使用说明
OV7670 摄像头使用说明
目录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.10 如果想真正实现图像的采集并且能够处理图像数据该如何做3.11 骑飞电子的那个模块能够适合飞思卡尔小车的比赛3.12 模块输出到底是模拟的还是数字的3.15 如何检测摄像头模块是否损坏3.16 摄像头模块和模组的区别是什么1.OV7670 一般摄像头模块1.简介:OV7670 一般模块指低成本数字输出 CMOS 摄像头,其摄像头包含 30w 像素的 CMOS 图像感光芯片,3.6mm 焦距的镜头和镜头座,板载CMOS 芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。图 1.OV7670 一般模块2.管脚定义:控制传感器所需的管脚定义如下:3V3-----输入电源电压(推荐使用 3.3,5V 也可,但不推荐使用)GDN-----接地点SIO_C---SCCB 接口的控制时钟(注意:部分低级单片机需要上拉控制,和SIO_D---SCCB 接口的串行数据输入(出)端(注意:部分低级单片机需要上拉控制,和 I2C 接口类似)VSYNC---帧同步信号(输出信号)HREF----行同步信号(输出信号)PCLK----像素时钟(输出信号)XCLCK---时钟信号(输入信号)D0-D7---数据端口(输出信号)RESTE---复位端口(正常使用拉高)PWDN----功耗选择模式(正常使用拉低)3.控制方式说明采集图像数据需要严格按照 OV 公司的芯片时序进行,这些时序包括:(1) SCCB 通讯时序,其作用是设置芯片内部寄存器,以控制图像的各种所需功能。其时序和一般的 I2C 时序相似,部分低级单片机要接上拉电阻。(2) 行输出时序行输出时序可用来控制一行像素的输出情况,HREF 即一行输出的开始和结束信号,同时在像素时钟的同步下,输出 8 位的像素信号(3) 全帧输出下的时序情况:(VGA 为例)该图显示的是一副图像输出的情况下,各控制信号和数据信号的输出。图中,VGA=640X480 大小情况下,帧同步信号,行同步信号(HREF 或者 HSYNC,注:HSYNC 在其它场合下使用,CMOS 可以设置,更多时候用HREF 即可)如图:4.采集图像的基本方法(1)单片机直接采集:这种方法是最简单,最直接,但也是最不好实现的方法,原因是多数的 CMOS 芯片(如 ov7670)的时钟速度可高达 24M,一般单片机的 IO 端口速度根本不可能达到,所以需要高速 MCU。这对多数用户来讲有些不现实。但也不是完全没有办法在低速上实现采集,方法也很简单,那么就是降低 CMOS 的输出速度,不过这需要靠外部的晶振和内部的 PLL 电路以及像素时钟速度,帧速等多个寄存器共同设置,并且要和 MCU 的 IO 速度匹配才可实现。但不建议这么做,原因是:这种寄存器设置将带来更多的学习困难和理解困难,并导致硬件图像的采集速度可能下降到0.5帧以下,同时带来图像失真的可能。注:部分 CMOS 时钟速度不快,可以单片机直接采集,如 OV7660,但该芯片已经停产。(2)高级 32 位芯片直接使用某些 32 位的 ARM 核,MIPS 核,x86 核直接带有 camera 接口,可以直接使用,典型的如三星的 arm9,sc2440 等。该采集方法请参考具体的芯片器件数据手册。(3)DMA 方式的采集方法这种方法一般需要具有 DMA 功能的 16 位以上的高级单片机来实现,通过DMA 方式,直接从总线或者 IO 口采集数据送入内存,内存中的数据可以存储,计算,保留,或者供显示使用。(4) 间接采集并显示的方法(推荐使用)这种方法是最容易实现,能够直接看到采集的图像内容。实现采集就显示的功能,这种方法具有较高帧速,一般 QVGA 可保证在 30 帧左右的速度。实际上,这种间接的办法其实就是将CMOS输出的数据直接送到显示屏(如TFT 显示器的内存中)进行显示的,数据并不经过 MCU(所以对 MCU 而言是间接采集),也无法经过 MCU,因此可以达到较高的帧速。2.OV7670 带 FIFO 模块1.简介:OV7670 带 FIFO 模块,是针对慢速的 MCU 能够实现图像采集控制推出的带有缓冲存储空间的一种模块。这种模块增加了一个 FIFO(先进先出)存储芯片,同样包含 30w 像素的 CMOS 图像感光芯片,3.6mm 焦距的镜头和镜头座,板载 CMOS 芯片所需要的各种不同电源(电源要求详见芯片的数据文件),板子同时引出控制管脚和数据管脚,方便操作和使用。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 读指针复位端3.控制方式说明由于采用了 FIFO 做为数据缓冲,数据采集大大简便,用户只需要关心是如何读取即可,不需要关心具体数据是如何采集到的,这样可减小甚至不用关心 CMOS 的控制以及时序关系,就能够实现图像的采集。控制时序如下:4.采集图像的基本方法(1)单片机直接采集:用户只需要按时序图控制相关的几个控制引脚即可,可以很方便的使用在低速单片机上,另外一个好处是,可以直接 IO 口读取数据,读出的数据可以直接送屏,也可以经过 MCU 简单处理;当然也可以不经过MCU,直接送到屏等外围器件使用。3.问题解答很多用户在使用本公司的模块时,遇到不少问题,这些问题既有技术问题,也和用户本身知识结构相关,针对这些集中的问题,对此进行问题汇总,并一一解答,希望用户在使用时能够了解。1. 图像采集难吗?答:这个问题对初次接触的用户来讲经常会遇到。难和容易都是相对的,它和许多相关的基础知识紧密相联系。从涉及到的学科和内容上来讲,图像采集或者图像处理(硬件)可以讲是数字电子学中最难的,因为它涉及到光学,如颜色,白平衡,色空间,镜头(这些概念在设置传感器寄存器的时候会大量出现)等;涉及到传感器基本原理,如 CMOS 和 CCD的原理和区别;涉及到电子学中的难题,如:海量数据量的传输、存储,涉及到主控制芯片的选择问题,如速度,和处理能力;涉及到电路板的高速布板问题;涉及到图像的编码和解码等算法问题。特别是当像素不断增加的时候,这些问题会更加突出,因此客观的讲,如果和其它的传感器或者模块相比较,例如温度,无线模块等等还是有一定难度的,这些模块只要给出接口,一般都容易知道如何处理,但图像并不如此。然而,难度是和相关基础知识的多少成反比例的,掌握的相关基础知识越多,就会越觉得简单。2. 学习图像方面的知识需要哪些基础?答:首先,基本的光学知识要先了解,比如:什么是颜色空间,RGB,YUV是什么,这些基础的必须了解;其次,扎实的电子学基础,比如:单片机基本上运用自如,时序图看起来没有任何难度;另外,较好的编程能力和读程序能力,这也是硬件图像的基础;最后,上位机中对图形图像的画法,处理等也有较深刻的认识。3. 初学者遇到的问题改怎么解决?答:很多用户都是初次学习图像硬件采集的相关内容,甚至刚刚开始单片机学习的用户也想学习这方面的内容。而实际上,他们遇到的问题很雷同,比如,图像中的一些基本概念如 RGB,YUV,模拟图像,数字图像等就比较模糊,电子学中如 FIFO 是什么,也经常被问到。其实,这些简单的基础知识或者概念只要 Google 或者 Baidu 一下,就可以快速找到大量的相关资料。4. 模块提供的是那些资料?答:提供图像芯片的数据文件(这个很重要),这里要做个说明,那就是相关资料很少,得来不易。原因是:实际上这些数据文件都是 OV 公司不经意间流出的东西,做为个人,OV 公司一般根本不会提供这些内容的,它只和对应的有芯片需求的公司签订协议,提供相关资料,并且有保密协议。我们获得的资料也是网上公开后得到的。除此之外,我们还提供中文的数据资料文件,SCCB 接口、模块定义、模块原理、模块尺寸等资料。此外,提供了一个基于 C 的驱动程序,该程序的原理是将模块数据直接送屏显示。网上有人做过 AVR,STM32 单片机的驱动,原理类似,请自己搜索,至于用 8051 等单片机的驱动程序,我们没有做过,但触类旁通,只要理解了原理,驱动方法其实都是一样的。5. 单片机能够真正的采集图像吗?答:这个明确的讲是不行的,特别是 8 位的单片机那更是不行的,必须寻求两种解决办法,一种是增加一个缓冲,如 FIFO,另外一个就是使用高速,如采用 32 位 MCU。 8 位单片机实现的多数仅仅是提供一个 SCCB总线读取或者设置的功能。即使是 32 位,比如大家都喜欢的 stm32,它也不能直接用 IO 口采集,因为 IO 速度还是不行,骑飞电子家族曾经做过实验,用 IO 采集,实现的刷屏速率不到 1 帧,基本没有适用价值,除非使用 DMA 方式,也就是使用总线的带宽速度,可以实现采集,但这个速度也只能在 5-10 帧左右!另外一个问题就是,即使采集到,由于一副图像的数据量很大,QVGA的数据量是 320x240x2,你放到哪里呢?所以只能寻找 32 位以上的 MCU。6. 带 FIFO 和不带 FIFO 的模块到底哪个好,有什么区别?答:按照上述几个问题,基本能够理清一个思路,那就是,如果针对 8位单片机,图像采集是不现实的,只能用更高级的 MCU 或者采取更灵活的处理手段才能实现真正的图像采集。那么这样就容易明白了,用那种摄像头是根据你的需求来确定的,如果你就是想显示下图像,8 位足够,不带 FIFO 的摄像头足矣,带个 TFT显示屏即可! 如果你的芯片是高级 MCU,ARM9 以上或者 DSP,那么也可以选择这个不带 FIFO 模块的,因为本身高档芯片的速度很快,存储空间也很大,足够直接采集图像数据!如果还想对获取的图像数据做些非常简单的处理(注意是非常简单),请选择 FIFO 摄像头,由于 FIFO 不具备地址功能,因此他也就不具备数据的定位(选址)读取功能,所以不可能有真正的数据处理能力!请切记!!!另外,带 FIFO 摄像头模块避免了需要了解更多图像输入或者采集的原理,降低了学习难度,用户只需知道如何从 FIFO 中读取数据即可,因此更建议初学者使用该模块!总结一下就是:两种模块的选择,要具体看项目的需求和目标来确定。7. 模块上有晶振好,还是没晶振好?答:晶振选择也是根据外围电路的能力来确定的。由晶振提供时钟(注:4-24M 都可,尽量是 4 的倍数,CMOS 内部有 PLL 功能)信号是可行的。但当前大多数的 MCU 都具有直接输出频率信号的能力,比如,有些芯片,如 CYPRESS ,C8051f 等等,而且这个频率信号一般非常稳定,所以强烈建议用这样的时钟信号直接供给摄像头。至少,如果能输出 50%占空比的 PWM,那么这个也是可以直接供给 CMOS 芯片使用的。所以,带不带晶振根本没有本质区别,至于好坏,除了多增加成本外,别无它用。8. 摄像头寄存器该怎么设置答:没有其它简洁的办法,只能参考 OV 公司的写的很烂数据手册,慢慢阅读理解和消化。稍快一点的办法就是按照骑飞电子提供的一个 Demo,针对其中寄存器的初始化设置和与其相对应的数据手册仔细推敲。当然也可以不去理解,直接使用即可!9. 骑飞电子模块提供的 Demo 输出的数据是什么格式的?答:是 RGB565,QVGA 格式的。这样能够很好的和 320x240 的显示屏直接相匹配,方便使用和参考!10.如果想真正实现图像的采集并且能够处理图像数据该如何做?答:按下面几个方案选择:(1)如果想用 8 位实现采集和处理,基本不现实,简单处理的话,用带FIFO 的摄像头;(2)32 位的高速芯片可以,有些直接有图像传感器接口,有些必须寻找一些办法,如骑飞电子基于 stm32f103 的 DMA 方式;(3)真正的图像采集和处理,使用 DSP 图像采集处理芯片,如 TI 的和ADI 公司的芯片,但这些芯片价格超高,单片都在 80-200 元之间;(4)FPGA 也可以实现类似功能,但如果要有速度和处理能力,价格也是几何数的增长;11.模块那个能够适合飞思卡尔小车的比赛?答:根据不少用户的反应,现在看来,选择带 FIFO 的头还是更现实些!12.模块输出到底是模拟的还是数字的答:是数字摄像头,它的输出是标准格式的,具体可以参考数据手册。至于模拟摄像头一般如 AV 输出,有两种制式,使用时需要编码和解码才能和大多数的数字芯片或者屏连接。13.如何检测摄像头模块是否损坏答:通电,加时钟信号,REST 端拉高,PSWN 接地,示波器检测数据端是否有输出,如果有,说明 CMOS 是好的。14. 摄像头模块和模组的区别是什么答:模块就是将 CMOS 传感芯片,外围电路集成到一块 PCB 板子上,需要使用的控制管脚引出,装上摄像头,即称之为模块。模组就是传感器和微型的镜头集成在一起,有软线 FPC 线引出管脚,但没有外围电路,使用时需要主板提供外围电路才能正常工作。如果模组使用转接板,也可以达到模块的方便使用的效果,转接板上已经设计好了模组的外围电路,引出了和模块定义一样的管脚,方便控制和操作。
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 工作学习这么累,当然要轻松一下拉!
作者最新文章

我要回帖

更多关于 ov7670摄像头使用手册 的文章

 

随机推荐