大家好,又见面了,我是你们的朋友全栈君。
OV7725简介 在各类信息中,图像含有最丰富的的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用在安防、探险、以及车牌检测等场合。其按照输出信号的类型可以分为数字和模拟摄像头,按照材料构成可以分为CCD和CMOS。
模拟摄像头的感光器件一般维持在752(H)*582(V)像素指标左右。
由于CCD的像素由MOS电容组成,读取电荷信号是需要使用电压相当大的(至少2V)的二相/三相/四相的时序脉冲信号,才能有效地传输电荷。因此CCD的取像系统除了要有多个电源之外,其外设也会消耗相当大的功率,儿CMOS光电传感器只需要使用一个单电源5V/3V,耗电量非常小。仅为CCD的1/8~1/10,有的CMOS取像系统只消耗20-50mW的功率。
CCD传感器件制作技术起步早,采用PN结成SIO2隔离层,因此噪声低,成像好,与CCD相比,CMOS的缺点在于噪声高,灵敏度低。不过现在随着 CMOS 电路消噪技术的不断发展,为生产高密度优质的 CMOS传感器件提供了良好的条件,现在的 CMOS 传感器已经占领了大部分的市场,主流的单反相机、智能手机都已普遍采用 CMOS 传感器。
我接下来学习的就是野火公司出产的秉火OV7725,这是一款分辨率为30万像素的CMOS摄像头,由镜头,图像传感器、板载电路及下方的信号引脚组成。
镜头部件包含一个镜头座和一个可旋转调节距离的凸透镜,通过旋转可以调节焦距,正 常使用时,镜头座覆盖在电路板上遮光,光线只能经过镜头传输到正中央的图像传感器,它 采集光线信号,采集得的数据被缓存到摄像头背面的 FIFO 缓存中,然后外部器件通过下方 的信号引脚获取拍摄得到的图像数据。 如果我们拆开摄像头座,在摄像头的正下方可看到 PCB 板上的一个方形器件,它是摄像头的 核心部件,型号为 OV7725 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 30 万 像素的图像 (640×480 分辨率),它的体积小,工作电压低,支持使用 VGA 时序输出图像数 据,输出图像的数据格式支持 YUV(422/420)、YCbCr422 以及 RGB565 格式。它还可以对采 集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。
OV7725的芯片原理图如下所示:
RSTB | 系统复位管脚,低电平有效 |
---|---|
PWDN | 掉电省电模式(高电平有效) |
HREF | 行同步信号 |
VSYNC | 场同步信号 |
PCLK | 像素时钟 |
XCLK | 系统时钟输入端口 |
SCL | SCCB总线的时钟线 |
SDA | SCCB总线的数据线 |
D0~D9 | 像素数据端口 |
OV7725的功能框图如下:一共分为四个部分
(1) 控制寄存器
代码语言:javascript复制标号1处的是 OV7725 的控制寄存器,它根据这些寄存器配置的参数来运行,而这些参数是由外部控制器通过 SCL 和 SDA 引脚写入的,SCL 与 SDA 使用的通讯协
议 SCCB 跟 I2C 十分类似,在 STM32 中我们完全可以直接用 I2C 硬件外设来控 制。
(2) 通信、控制信号及时钟
标号2处包含了 OV7725 的通信、控制信号及外部时钟,其中 PCLK、HREF 及 VSYNC 分别是像素同步时钟、行同步信号以及帧同步信号,这与液晶屏控制中的 VGA 信号是很类似的。RSTB 引脚为低电平时,用于复位整个传感器芯片,PWDN 用于控制芯片进入低功耗模式。注意最后的一个 XCLK 引脚,它跟 PCLK 是完全 不同的,XCLK 是用于驱动整个传感器芯片的时钟信号,是外部输入到 OV7725 的 信号;而 PCLK 是 OV7725 输出数据时的同步信号,它是由 OV7725 输出的信号。 XCLK 可以外接晶振或由外部控制器提供,若要类比 XCLK 之于 OV7725 就相当 于 HSE 时钟输入引脚与 STM32 芯片的关系,PCLK 引脚可类比 STM32 的 I2C 外 设的 SCL 引脚。
(3) 感光矩阵
标号3处的是感光矩阵,光信号在这里转化成电信号,经过各种处理,这些信号存储成由一个个像素点表示的数字图像。
(4) 数据输出信号
标号4处包含了 DSP 处理单元,它会根据控制寄存器的配置做一些基本的图像处 理运算。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过 D0-D9 引脚输出,一般来说我们使用 8 根据数据线来传输,这时仅使用 D2-D9 引 脚。
SCCB时序
外部控制器对 OV7725 寄存器的配置参数是通过 SCCB 总线传输过去的,而 SCCB 总线跟 I2C 十分类似,所以在 STM32 驱动中可以直接使用片上 I2C 外设与它通讯。
SCCB与标准IIC协议的区别在于它每次传输只能写入或者读取一个字节的数据,儿IIC协议是支持突发读写的,即在一次传输中可以写入多个字节的数据。
SCCB 的起始信号、停止信号及数据有效性与 I2C 完全一样。
起始信号:在 SCL(图中为 SIO_C)为高电平时,SDA(图中为 SIO_D)出现一个下降沿,则 SCCB 开始传输。
停止信号:在 SCL 为高电平时,SDA 出现一个上升沿,则 SCCB 停止传输。
数据有效性:除了开始和停止状态,在数据传输过程中,当 SCL 为高电平时,必须保证 SDA 上的数据稳定,也就是说,SDA 上的电平变换只能发生在 SCL 为低电平的时候,SDA 的信号在 SCL 为高电平时被采集。 以下是SCCB的时序图:
主控制器控制OV7725时采用SCCB协议读写其寄存器,而他输出图像时则使用VGA/QVGA时序,其中VGA为分辨率480640时采用,QVGA为Quarter VGA,其输出分辨率为240320,OV7725输出图像时为一帧帧输出,一般从左至右,从上至下。
好的,今天就先写到这里,下一次的内容是FIFO时序、AL422B及摄像头的驱动原理。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190142.html原文链接:https://javaforall.cn