背景介绍:图像含有最丰富的信息,作为机器人领域的核心部件,摄像头被广泛的应用在实时监控、视频会议、远程医疗、娱乐多媒体等诸多方面。摄像头按输出信号的类型来看可以分为数字摄像头和模拟摄像头,按照摄像头图像传感器材料构成来看可以分为CCD和CMOS。现在智能手机的摄像头绝大部分都是CMOS类型的数字摄像头。
摄像头简介:
数字摄像头和模拟摄像投的区别:
1. 输出信号的类型:数字摄像头输出信号为数字信号,模拟摄像头输出信号为标准的模拟信号。
2. 接口类型:数字摄像头有USB接口,IEE1394火线接口、千兆网接口。模拟摄像头采用AV视频端子(信号线+地线)或SVIDEO(即莲花头-SUPER VIDEO,是一种五芯的接口,由两路视频亮度信号、两路视频色度信号和一路公共屏蔽地线共五条芯线组成)
3. 分辨率:模拟摄像头的感光器件,其像素指标一般维持在725(H)*582(V)左右的水平,像素数一般情况下维持在41W左右。数字摄像头分辨率一般从数十万到数百万甚至数千万。但这并不能说明数字摄像头的成像分辨率就比模拟摄像头的高,原因在于模拟摄像头输出的是模拟视频信号,一般直接输入至电视或监听器,其感光器件的分辨率与电视信号的扫描数成一定的换算关系,图像显示介质已经确定,因此模拟摄像头的感光器件的分辨率不是不能坐高,而是要依据实际情况。
CCD与CMOS的区别:
摄像头图像传感器CCD与CMOS图像传感器的主要区别如下:
1. 成像材料:CCD与CMOS的名称根他们成像使用的材料有关,CCD是一电荷耦合器件||(Charge Coupled Device)的简称,而CMOS是一互补金属氧化物半导体||(Complementary Metal Oxide Semiconducter)的简称。
2. 功耗:由于CCD的像素由MOS电容构成,读取电荷信号时需要使用电压相当大(至少12V)的二巷或三相或四相的时序脉冲,才能有效的传输电荷。因此CCD的取像系统需消耗2~5w的功率。而CMOS光感传感器件只需要使用一个单电源5V或3V,耗电量非常小,仅为CCD的1/8~1/10,有的CMOS取像系统只消耗20~50mW的功率。
3. 成像质量:CCD传感器制作技术起步早,技术成熟,采用PN节或二氧化硅(sio2)隔离层隔离噪声,所以噪声低,成像质量好。与CCD相比,CMOS的主要缺点是噪声高及灵敏度低,不过随着CMOS的电路消噪技术的不断发展,为生产高密度优质的CMOS传感器件提供了良好的条件,现在CMOS传感器已经占领了大部分的市场,主流的单反相机、智能手机都已普遍采用CMOS传感器。
OV7725引脚及功能框架图:
OV7725传感器采用BGA封装,他的前端是采光窗口,引脚都在背面引出,引脚的分布如下图所示:
图中非彩色部分是电源相关的引脚,彩色部分是主要的信号引脚,其介绍如表格:
OV7725功能框图:
1. 控制寄存器:
控制寄存器根据这些寄存器配置的参数来运行,而这些参数是由外部控制器通过SCL和SDA引脚写入的,SCL与SDA使用的通讯协议SCCB和IIC十分相识。
2. 通信、控制信号及时钟
PCLK、HREF及VSYNC分别是像素同步时钟、行同步信号以及帧同步信号,这与液晶屏控制中的VGA信号相似;RSTB引脚为低电平时用于复位整个传感器芯片,PWND用于控制芯片进入低功耗模式。注意最后一个XCLK引脚,它与PCLK不同,XCLK用于用于驱动整个传感器芯片的时钟信号,是外部输入到OV7725的信号。XCLK可以用外部晶振或外部控制器提供,
3. 感光矩阵:
感光矩阵,光信号在这里转化成电信号,经过各种处理,这些信号存储成由一个个像素点表示的数字图像。
4. 数据输出信号
标号4处包含了DSP处理单元,它会根据控制寄存器的配置做一些基本的图像处理运算。这部分还包含了图像格式转换单元及压缩单元,转换出的数据最终通过D0-D9引脚输出,一般来说我们使用8根数据线来传输,这时仅使用D2-D9引脚
SCCB时序:
外部控制器对OV7725寄存器的配置参数是通过SCCB总线传输过去的,而SCCB总线跟IIC十分类似完整内容可以查看SCCB协议。
SCCB起始、停止信号及数据有效性:SCCB的起始信号、停止信号及数据有效性与IIC完全一样,如图所示:
SCCB数据读写过程:
在SCCB协议中定义的读写操作与IIC也是一样的,只是换了一种说法,它定义了两种写操作,即三步写操作和两步写操作。三步写操作可向从设备的一个目的寄存器中写入数据,如下图,在三步操作中,第一阶段发送从设备的ID地址+W标志(等于IIC的设备地址:7位设备地址+读写方向标志),第二阶段发送从设备目标寄存器的8位地址,第三阶段发送要写入寄存器的8位数据。图中的X数据位可以写入0或1,对通讯无影响。
而两步写操作没有第三阶段,即只向从器件传输了设备ID+W标志和目的寄存器的地址,两步写操作是用来配合后面的读寄存器数据操作的,它与读操作一起使用,实现IIC的复合过程。
两步读操作,它用于读取从设备目的寄存器中的数据,在第一阶段发送从设备的设备ID+R标志(设备地址+读方向标志)和自由位,在第二阶段中读取寄存器中的8位数据和写NA位(非应答信号)。由于两步读操作没有确定的目的寄存器的地址,所以在读操作前,必须有一个两步写操作,以提供读操作中的寄存器地址。
OV7725的寄存器
要想驱动OV7725摄像头,需要对其内部诸多寄存器进行配置,对于相关寄存器的配置参数,可以查询《OV7725datasheet》,通过这些寄存器的配置,可以控制摄像头输出图像的分辨率大小、图像格式、图像处理以及图像方向等。
像素数据输出时序
FPGA驱动OV7725时采用SCCB协议对其寄存器进行配置,而它输出图像时则使用VGA或QVGA时序,其中VGA在输出图像分辨率为640*480时采用,QVGA是Quarter VGA,其输出分辨率为32*240;OV7725传感器输出图像时,一帧帧的输出,在帧内的数据一般是从左到右,从上到下,一个像素一个像素的输出(也可以通过寄存器修改方向),使用D2~D9数据线,图像格式设置为RGB565进行数据传输时,D2-D9数据线在PCLK上升沿阶段维持稳定,并且会在一个像素同步时钟PCLK的驱动下发送一字节的数据信号,所以两个PCLK的时钟可以发送一个RGB565格式的像素数据,当HREF为高电平时,像素数据依次传输,每传输完一行数据时,行同步信号HREF会输出一个电平跳变信号间隔开当前行和下一行的数据;一帧的图像由N行数据组成,当VSYNC为低电平时,各行的像素数据依次传输,每传输完一帧图像时,VSYNC会输出一个高电平的跳变信号。