当前位置:首页 > 单片机 > 单片机
[导读]一、OV7670模块:介绍一下OV7670传感器:CMOS器件;标准的SCCB接口,兼容IIC接口;内置感光阵列,时序发生器,AD转换器,模拟信号处理,数字信号处理器..... 大致工作过程:光照射到感光阵列产生相应电荷,传输到相应

一、OV7670模块:
介绍一下OV7670传感器:CMOS器件;标准的SCCB接口,兼容IIC接口;内置感光阵列,时序发生器,AD转换器,模拟信号处理,数字信号处理器.....
大致工作过程:光照射到感光阵列产生相应电荷,传输到相应的模拟信号处理单元,再由AD转换为数字信号,在经由数字信号处理器插值到RGB信号,最后传输到屏幕上......

先了解一下基础知识:现在市面上的OV7670模块分两种:1、带FIFO芯片;2、不带FIFO芯片。当然带FIFO的要贵一点~下面介绍带FIFO和不带FIFO的工作原理:


图1:不带FIFO


图2:带FIFO

下面就讲解这两种方式的适用范围:

不带FIFO:这种方法最简单,最直接,但是最不好实现的方法,原因是多数的CMOS芯片(如OV7670)的时钟速度可以高达24M,一般单片机的IO口速度根本达不到(stm32的IO速度,寄存器比库函数快,博主之前测,用库函数IO口速度好像是2.5Mhz,而用寄存器IO口速度是8M吧,速度相差较大~)。当然,高级的MCU,如ARM9以上或者DSP图像处理芯片等,本身处理速度快,内存大而且有的还带camera接口,可以不用带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时钟,输出1个像素或半个像素

VSYNC:帧同步信号

HREF/HSYNC:行同步信号

先看行输出时序:


图3:OV7670行输出时序

图3中,图像数据在HREF为高的时候输出,当HREF变高后,每一个PCLK时钟,输出一个字节数据。比如我们采用VGA时序,RGB565格式输出,每两个字节组成一个像素的颜色(高字节在前,低字节在后),这样每行输出总共有640*2个PCLK周期,输出640*2个字节。
在来看帧时序:


图4:OV7670帧时序

在图4中,VSYNC位高时产生一个帧同步信号,故当产生两个帧同步信号时,一帧数据输出完成。注意:图中的HSYNC和HREF其实是一个引脚产生的信号,只是在不同的场合下面,使用不同的信号方式。

三、战舰OV7670模块原理图讲解:



图5:战舰OP7670模块原理图

在图5中,我们用3种颜色的线,将OV7670模块原理图中几个重要芯片同MCU“连”了起来。不多说,看图~

四、存储和读取图像数据的过程及程序讲解(参考原子哥的开发指南和代码)
对于该模块,我们只关心两点:1、如何存储图像数据;2、如何读取图像数据
1、存储(OV7670往FIFO中写数据)
战舰OV7670模块存储图像数据的过程为:等待OV767同步信号->FIFO写指针复位->FIFO写使能->等待第二个同步信号->FIFO写禁止,通过以上5个步骤就可以完成一帧图像的存储
2、读取(MCU从FIFO中读取数据)
读取过程:FIFO读指针复位->给FIFO读时钟(FIFO RCLK)->读取第一个像素高字节->给FIFO读时钟(FIFO RCLK)->读取第一个像素低字节->给FIFO读时钟(FIFO RCLK)->读取第二个像素高字节->循环读取剩余像素->结束
比如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


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

深圳2025年9月3日 /美通社/ -- 全球可穿戴眼动追踪解决方案领军创新企业见臻科技(Ganzin Technology),今日于深圳光博会展隆重发布其突破性的 Gaze2AI™参考设计。该方案基于高性能 AUROR...

关键字: AI 参考设计 TIMES 摄像头

先进驾驶辅助系统 (ADAS)已成为现代车辆的标配功能,能够提升行车安全性和驾驶舒适度。ADAS 功能既包括挡风玻璃摄像头实现的经典紧急制动功能,也涵盖集成泊车辅助功能的多摄像头环视 + 感知系统。这些系统依托 100...

关键字: 图像传感器 ADAS 摄像头

2025年8月28日,中国上海 — 思特威(上海)电子科技股份有限公司(股票简称:思特威,股票代码:688213)近日宣布,全新推出5000万像素1.0μm像素尺寸手机应用CMOS图像传感器——SC562HS。基于思特威...

关键字: CMOS图像传感器 摄像头 智能手机

中国深圳2025年8月25日 /美通社/ -- 今天,全球领先的3D打印机制造商创想三维(Creality)推出K2和K2 Pro两款机型,进一步拓展其旗舰K系列产...

关键字: AI 摄像头 步进伺服 3D打印机

在嵌入式开发中,STM32的时钟系统因其灵活性和复杂性成为开发者关注的焦点。然而,看似简单的时钟配置背后,隐藏着诸多易被忽视的陷阱,轻则导致系统不稳定,重则引发硬件损坏。本文从时钟源选择、PLL配置、总线时钟分配等关键环...

关键字: STM32 时钟系统

在嵌入式系统开发中,STM32系列微控制器的内部温度传感器因其低成本、高集成度特性,广泛应用于设备自检、环境监测等场景。然而,受芯片工艺差异和电源噪声影响,其原始数据存在±1.5℃的固有误差。本文从硬件配置、校准算法、软...

关键字: STM32 温度传感器

在能源效率与智能化需求双重驱动下,AC-DC转换器的数字控制技术正经历从传统模拟方案向全数字架构的深刻变革。基于STM32微控制器的PFM(脉冲频率调制)+PWM(脉冲宽度调制)混合调制策略,结合动态电压调整(Dynam...

关键字: AC-DC STM32

据博主数码闲聊站透露,除华为外,主流国产手机厂商正集体调整影像战略,Pro系列机型仍将延续常规的超大底主摄方案,而在更高端的Ultra系列上,目前仅有一家厂商明确计划继续采用一英寸主摄传感器。

关键字: 摄像头 手机

麦格纳集成式舱内感知系统,正受到越来越多汽车制造商的青睐 舱内感知系统至关重要,它能提供全面、灵敏的安全保障,同时优化驾驶体验 舱内儿童监测等先进功能,能有效保证乘客的安全,避免弱势乘客出现热射病等危险情况...

关键字: 集成 BSP COM 摄像头

2025年7月23日,中国上海 — 思特威(上海)电子科技股份有限公司(股票简称:思特威,股票代码:688213)近日宣布,重磅推出5000万像素1英寸高端旗舰手机应用图像传感器新品——SC5A5XS。此款新品基于思特威...

关键字: CMOS图像传感器 智能手机 摄像头
关闭