首页 > 编程知识 正文

ov7670摄像头使用手册,ov官网摄像头

时间:2023-05-06 06:40:32 阅读:112421 作者:1730

一、OV7670模块:

介绍OV7670传感器。 CMOS器件; 内置标准SCCB接口、与IIC接口兼容的光接收阵列、时序发生器、模数转换器、模拟信号处理、数字信号处理器.

粗略的操作过程:将光照射到光接收阵列上产生的电荷传送到对应的模拟信号处理单元,由AD转换为数字信号,通过数字信号处理器插入RGB信号,最终传送到屏幕……。

请先了解基础知识。 目前市面上的OV7670模块分为两种。 1、带先进先出芯片; 2、无先进先出芯片。 当然带先进先出的有点贵。 介绍带FIFO和无FIFO的结构。

图无FIFO

图带FIFO

下面介绍这两种方式的适用范围。

无FIFO :该方法是最简单、最直接、但最难实现的方法。 这是因为许多CMOS芯片(例如OV7670 )的时钟速度可达到24M,根本达不到通用单片机的IO端口速度(stm32的IO速度快于寄存器或库函数)。 博主以前测量库函数的IO端口速度为2.5Mhz,但寄存器的IO端口速度为2.5Mhz。 当然,高级的MCU,如ARM9以上、DSP图像处理芯片等,由于自身处理速度快,存储器大,而且还带有照相机接口,所以不用带FIFO。 主要是人的价格也很高啊。 但是,低速读取也不是完全不可能。 方法也很简单。 降低CMOS的输出速度,这是由外部晶体振动、内部PLL电路和像素时钟速度、帧率等多个寄存器共同设定的,必须与MCU的IO速度一致才能实现。 不过,这种寄存器设定可能会带来更多的学习困难和理解困难,将硬件图像捕获速度降低到0.5帧以下,同时导致图像失真,因此不被推荐。 另一种方法是采集DMA方式,代码复杂,速度5-10帧左右。 博主想使用这个方法,但是基础不好,很难调试。 接着调试。 (注:部分CMOS时钟速度不快,可直接在单片机上采集。 例如,OV7660,但该芯片已停产。 带FIFO :由于采用了FIFO作为数据缓冲区,所以数据收集非常简单,用户只需要关心如何读取即可,不需要在意具体数据是如何收集的,而需要关心CMOS的控制和时序关系注意:因为FIFO不具有地址功能,也不具有数据定位(选址)读取功能,所以没有真正的数据处理能力

总的来说,带有FIFO比没有FIFO更容易操作,8位MCU也能完成。 参考战舰照相机实验(带FIFO的OV7670模块)吧

二、OV7670的图像数据输出格式:(请参阅战舰开发指南) ) ) ) ) ) )。

首先,我将简要了解一些定义。

VGA :分辨率为640*480输出模式QVGA :分辨率为320*240的输出格式QQVGA :分辨率为160*120的输出格式PCLK :像素时钟、一个PCLK时钟、一个或半个像素的VSYNC :帧

首先看行的输出时机:

图3 )3:在3:OV7670行的输出时序图3中,图像数据在HREF为high时输出,当HREF为high时,对于每个PCLK时钟,输出1字节的数据。 例如,使用VGA序列以RGB565格式输出,每两个字节组成一个像素的颜色。 这样,每行的输出共有640*2个PCLK循环,输出640*2字节。

让我们来看看帧定时:

图4 )4:关于4:OV7670的帧定时,在图4中,当VSYNC比特高时产生一个帧同步信号,并且当产生两个帧同步信号时,一个帧的数据输出完成。 注意:图中的HSYNC和HREF实际上是引脚产生的信号,但根据情况使用不同的信号方式。

三、战舰OV7670模块原理图说明:

图5 )战舰OP7670模块原理图(图5 (我们用三色线“连接”了OV7670模块原理图中的几个关键芯片和MCU )。 别说了,看图~

四、图像数据存储和读取流程和程序说明(见jsdxrk开发指南和代码) ) ) ) ) )。

关于该模块,1、图像数据保存方法; 2 .图像数据读取方法

1、存储(OV7670将数据写入FIFO ) ) ) ) ) )。

战舰OV7670模块保存图像数据过程通过等待OV767同步信号-FIFO写入指针的复位-FIFO写入许可-第二同步信号-FIFO写入禁止,在以上五个步骤中一帧的图像的保存完成

2、读取(MCU从FIFO读取数据) ) )。

读操作: FIFO读指针复位-FIFO读时钟-FIFO读时钟-FIFO读时钟-FIFO读时钟-FIFO读时钟-FIFO读时钟-FIFO读时钟-2

剩余像素->结束
       比如QVGA模式,RGB565格式,我们总共循环读取320*240*2次,就可以读取一帧数据,把这些数据写入LCD模块,就可以看到摄像头的画面了。

程序讲解:(主要是OV7670对FIFO的写控制和MCU从FIFO中读取数据)
1、利用外部中断来对OV7670进行写操作控制
图6:外部中断对OV7670进行写控制          详细解释请看代码注释~
2、MCU从FIFO中读取数据(更新LCD显示)
图7:更新LCD显示函数(MCU读取FIFO数据)         详细请看代码注释~
对了,战舰例程中还有个字节对齐的问题,详情请浏览我转载的博客:http://blog.csdn.net/houqi02/article/details/51707456
本篇博客到此结束,多谢看官!博主不才,难免有不足之处,恳请看官提出交流,共同进步!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。