大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
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) 控制寄存器
标号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及摄像头的驱动原理。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190142.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...