logo资料库

OV5640学习笔记.docx

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
OV5640简介
1 摄像头
1.1 数字摄像头跟模拟摄像头区别
1.2 CCD与CMOS的区别
2 OV5640摄像头
2.1 OV5640传感器简介
2.2 OV5640引脚及功能框图
46.2.3 SCCB时序
SCCB的起始、停止信号及数据有效性
SCCB数据读写过程
46.2.4 OV5640的寄存器
46.2.5 像素数据输出时序
1 摄像头 OV5640 简介 在各类信息中,图像含有最丰富的信息,作为机器视觉领域的核心部件,摄像头被广泛地应用 在安防、探险以及车牌检测等场合。摄像头按输出信号的类型来看可以分为数字摄像头和模拟 摄像头,按照摄像头图像传感器材料构成来看可以分为 CCD 和 CMOS。现在智能手机的摄像 头绝大部分都是 CMOS 类型的数字摄像头。 1.1 数字摄像头跟模拟摄像头区别 输出信号类型 数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。 接口类型 数字摄像头有 USB 接口(比如常见的 PC 端免驱摄像头)、IEE1394 火线接口(由苹果公司 领导的开发联盟开发的一种高速度传送接口,数据传输率高达 800Mbps)、千兆网接口 (网络摄像头)。模拟摄像头多采用 AV 视频端子(信号线+地线)或 S-VIDEO(即莲 花头--SUPER VIDEO,是一种五芯的接口,由两路视频亮度信号、两路视频色度信号和 一路公共屏蔽地线共五条芯线组成)。 分辨率 模拟摄像头的感光器件,其像素指标一般维持在 752(H)*582(V)左右的水平,像素数一般 情况下维持在 41 万左右。现在的数字摄像头分辨率一般从数十万到数千万。但这并不能 说明数字摄像头的成像分辨率就比模拟摄像头的高,原因在于模拟摄像头输出的是模拟 视频信号,一般直接输入至电视或监视器,其感光器件的分辨率与电视信号的扫描数呈 一定的换算关系,图像的显示介质已经确定,因此模拟摄像头的感光器件分辨率不是不 能做高,而是依据于实际情况没必要做这么高。 1.2 CCD 与 CMOS 的区别 摄像头的图像传感器 CCD 与 CMOS 传感器主要区别如下: 成像材料 CCD 与 CMOS 的名称跟它们成像使用的材料有关,CCD 是"电荷耦合器件"(Charge Coupled Device)的简称,而 CMOS 是"互补金属氧化物半导体"(Complementary Metal Oxide Semiconductor)的简称。 功耗 由于 CCD 的像素由 MOS 电容构成,读取电荷信号时需使用电压相当大(至少 12V)的二 相或三相或四相时序脉冲信号,才能有效地传输电荷。因此 CCD 的取像系统除了要有 多个电源外,其外设电路也会消耗相当大的功率。有的 CCD 取像系统需消耗 2~5W 的 功率。而 CMOS 光电传感器件只需使用一个单电源 5V 或 3V,耗电量非常小,仅为 CCD 的 1/8~1/10,有的 CMOS 取像系统只消耗 20~50mW 的功率。 成像质量 CCD 传感器件制作技术起步早,技术成熟,采用 PN 结或二氧化硅(sio2)隔离层隔离噪 声,所以噪声低,成像质量好。与 CCD 相比,CMOS 的主要缺点是噪声高及灵敏度低, 不过现在随着 CMOS 电路消噪技术的不断发展,为生产高密度优质的 CMOS 传感器件 提供了良好的条件,现在的 CMOS 传感器已经占领了大部分的市场,主流的单反相机、 智能手机都已普遍采用 CMOS 传感器。 2 OV5640 摄像头 本章主要讲解实验板配套的摄像头,它的实物见图 461,该摄像头主要由镜头、图像传感器、 板载电路及下方的信号引脚组成。
图461 实验板配套的OV5640 摄像头 镜头部件包含一个镜头座和一个可旋转调节距离的凸透镜,通过旋转可以调节焦距,正常使用 时,镜头座覆盖在电路板上遮光,光线只能经过镜头传输到正中央的图像传感器,它采集光线 信号,然后把采集得的数据通过下方的信号引脚输出数据到外部器件。 2.1 OV5640 传感器简介 图像传感器是摄像头的核心部件,上述摄像头中的图像传感器是一款型号为 OV5640 的 CMOS 类型数字图像传感器。该传感器支持输出最大为 500 万像素的图像 (2592x1944 分辨率),支持 使用 VGA 时序输出图像数据,输出图像的数据格式支持 YUV(422/420)、YCbCr422、RGB565 以及 JPEG 格式,若直接输出 JPEG 格式的图像时可大大减少数据量,方便网络传输。它还可以 对采集得的图像进行补偿,支持伽玛曲线、白平衡、饱和度、色度等基础处理。根据不同的分 辨率配置,传感器输出图像数据的帧率从 15-60 帧可调,工作时功率在 150mW-200mW 之间。 2.2 OV5640 引脚及功能框图 OV5640 模组带有自动对焦功能,引脚的定义见图 462。 信号引脚功能介绍如下,介绍如下表 461。 图462OV5640 传感器引脚分布图
管脚名称 管脚类型 管脚描述 表461OV5640 管脚 SIO_C SIO_D RESET PWDN HREF VSYNC PCLK XCLK 输入 I/O 输入 输入 输出 输出 输出 输入 SCCB 总线的时钟线,可类比 I2C 的 SCL SCCB 总线的数据线,可类比 I2C 的 SDA 系统复位管脚,低电平有效 掉电/省电模式,高电平有效 行同步信号 帧同步信号 像素同步时钟输出信号 外部时钟输入端口,可接外部晶振 Y2…Y9 下面我们配合图 463 中的 OV5640 功能框图讲解这些信号引脚。 像素数据输出端口 输出 (5) 控制寄存器 图463OV5640 功能框图 标号处的是 OV5640 的控制寄存器,它根据这些寄存器配置的参数来运行,而这些 参数是由外部控制器通过 SIO_C 和 SIO_D 引脚写入的,SIO_C 与 SIO_D 使用的通讯 协议跟 I2C 十分类似,在 STM32 中我们完全可以直接用 I2C 硬件外设来控制。
(6) 通信、控制信号及时钟 标号处包含了 OV5640 的通信、控制信号及外部时钟,其中 PCLK、HREF 及 VSYNC 分别是像素同步时钟、行同步信号以及帧同步信号,这与液晶屏控制中的信 号是很类似的。RESETB 引脚为低电平时,用于复位整个传感器芯片,PWDN 用于控 制芯片进入低功耗模式。注意最后的一个 XCLK 引脚,它跟 PCLK 是完全不同的, XCLK 是用于驱动整个传感器芯片的时钟信号,是外部输入到 OV5640 的信号;而 PCLK 是 OV5640 输出数据时的同步信号,它是由 OV5640 输出的信号。XCLK 可以 外接晶振或由外部控制器提供,若要类比 XCLK 之于 OV5640 就相当于 HSE 时钟输 入引脚与 STM32 芯片的关系,PCLK 引脚可类比 STM32 的 I2C 外设的 SCL 引脚。 (7) 感光矩阵 标号处的是感光矩阵,光信号在这里转化成电信号,经过各种处理,这些信号存储 成由一个个像素点表示的数字图像。 (8) 数据输出信号 标号处包含了 DSP 处理单元,它会根据控制寄存器的配置做一些基本的图像处理运 算。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过 Y0-Y9 引 脚输出,一般来说我们使用 8 根据数据线来传输,这时仅使用 Y2-Y9 引脚,OV5640 与外部器件的连接方式见图 464。 (9) 数据输出信号 图464 8 位数据线接法 标号⑤处为 VCM 处理单元,他会通过图像分析来实现图像的自动对焦功能。要实现 自动对焦还需要下载自动对焦固件到模组,后面摄像头实验详细介绍这个功能。 46.2.3 SCCB 时序 外部控制器对 OV5640 寄存器的配置参数是通过 SCCB 总线传输过去的,而 SCCB 总线跟 I2C 十分类似,所以在 STM32 驱动中我们直接使用片上 I2C 外设与它通讯。SCCB 与标准的 I2C 协 议的区别是它每次传输只能写入或读取一个字节的数据,而 I2C 协议是支持突发读写的,即在 一次传输中可以写入多个字节的数据(EEPROM 中的页写入时序即突发写)。关于 SCCB 协议的 完整内容可查看配套资料里的《SCCB 协议》文档,下面我们简单介绍下。 SCCB 的起始、停止信号及数据有效性 SCCB 的起始信号、停止信号及数据有效性与 I2C 完全一样,见图 465 及图 466。 起始信号:在为高电平时,出现一个下降沿,则开始传输。 停止信号:在为高电平时,出现一个上升沿,则停止传输。
数据有效性:除了开始和停止状态,在数据传输过程中,当为高电平时,必 须保证上的数据稳定,也就是说,上的电平变换只能发生在为 低电平的时候,的信号在为高电平时被采集。 图465SCCB 停止信号 图466SCCB 的数据有效性 SCCB 数据读写过程 在 SCCB 协议中定义的读写操作与 I2C 也是一样的,只是换了一种说法。它定义了两种写操作, 即三步写操作和两步写操作。三步写操作可向从设备的一个目的寄存器中写入数据,见图 467。 在三步写操作中,第一阶段发送从设备的 ID 地址+W 标志(等于 I2C 的设备地址:7 位设备地址 +读写方向标志),第二阶段发送从设备目标寄存器的 16 位地址,第三阶段发送要写入寄存器的 8 位数据。图中的"X"数据位可写入 1 或 0,对通讯无影响。 而两步写操作没有第三阶段,即只向从器件传输了设备 ID+W 标志和目的寄存器的地址,见 图 468。两步写操作是用来配合后面的读寄存器数据操作的,它与读操作一起使用,实现 I2C 的复合过程。 图467SCCB 的三步写操作 图468SCCB 的两步写操作 两步读操作,它用于读取从设备目的寄存器中的数据,见图 469。在第一阶段中发送从设备的 设备 ID+R 标志(设备地址+读方向标志)和自由位,在第二阶段中读取寄存器中的 8 位数据和写 NA 位(非应答信号)。由于两步读操作没有确定目的寄存器的地址,所以在读操作前,必需有一 个两步写操作,以提供读操作中的寄存器地址。
图469SCCB 的两步读操作 可以看到,以上介绍的 SCCB 特性都与 I2C 无区别,而 I2C 比 SCCB 还多出了突发读写的功能, 所以 SCCB 可以看作是 I2C 的子集,我们完全可以使用 STM32 的 I2C 外设来与 OV5640 进行 SCCB 通讯。 46.2.4 OV5640 的寄存器 控制 OV5640 涉及到它很多的寄存器,可直接查询《ov5640datasheet》了解,通过这些寄存器 的配置,可以控制它输出图像的分辨率大小、图像格式及图像方向等。要注意的是 OV5640 寄 存器地址为 16 位。 官方还提供了一个《OV5640_自动对焦照相模组应用指南(DVP_接口)__R2.13C.pdf》的文档, 它针对不同的配置需求,提供了配置范例,见图 4610。其中 write_SCCB 是一个利用 SCCB 向 寄存器写入数据的函数,第一个参数为要写入的寄存器的地址,第二个参数为要写入的内容。 图4610 调节帧率的寄存器配置范例 46.2.5 像素数据输出时序 对 OV5640 采用 SCCB 协议进行控制,而它输出图像时则使用 VGA 时序(还可用 SVGA、 UXGA,这些时序都差不多),这跟控制液晶屏输入图像时很类似。OV5640 输出图像时,一帧 帧地输出,在帧内的数据一般从左到右,从上到下,一个像素一个像素地输出(也可通过寄存器 修改方向),见图 4611。
图4611 摄像头数据输出 例如,图 4612,若我们使用 Y2-Y9 数据线,图像格式设置为 RGB565,进行数据输出时,Y2- Y9 数据线会在 1 个像素同步时钟 PCLK 的驱动下发送 1 字节的数据信号,所以 2 个 PCLK 时钟 可发送 1 个 RGB565 格式的像素数据。像素数据依次传输,每传输完一行数据时,行同步信号 HREF 会输出一个电平跳变信号,每传输完一帧图像时,VSYNC 会输出一个电平跳变信号。 图4612DVP 接口时序
FPGA 配置 OV5640 摄像头及 RGB 图像数据采集 本文设计思想采用明德扬至简设计法。在做摄像头数据采集处理之前,需 要配置 OV5640 传感器内部寄存器使其按要求正常工作,详细内容请参见 《OV5640 自动对焦照相模组应用指南》。首先要关注 OV5640 的上电时序: 主控制器控制 RESET PWDN 两个信号按上电时序要求变化,之后允许 ov_config 模块配置内部寄存器。这里始终将 PWDN 拉低。实验中将摄像头 分辨率设置为 720p,即 1280*720 ,帧率为 30fps,图像输出格式是 RGB565。此时摄像头输入时钟 XCLK 频率 24MHz,输出像素时钟 PCLK 为 84MHz。由于实验使用的是 OV5640 双目摄像头模组,且 XCLK 由外部 24MHz 晶振给出,故 ov_config 模块整体结构及端口定义如下: setup 模块构造上电时序,两个 reg_config 分别配置一个 OV5640 摄像 头。SCCB_interface 子模块负责 SCCB 协议读写寄存器数据。由于 OV5640 摄像头内部寄存器地址为 16 位,因此写寄存器地址阶段分高低字节两次写入。 datasheet 中给出了 OV5640 的 SCCB ID 地址(写),故读 ID 地址为 0X79。
分享到:
收藏