CMOS图像传感器芯片OV5017及其应用1CMOS图像传感器的一般特征目前,CCD(电荷耦合器件)是主要的实用化固态图像传感器件,它具有读取噪声低、动态范围大、响应灵敏度高等优点。但CCD技术难以与主流的CMOS技术集成于同一芯片之中。这样,诸如定时产生、驱动放大、自动曝光控制、模数转换及信号处理等支持电路就不能与像素阵列做同一芯片上,以CCD为基础的图像传感器难以实现单片一体化,因而具有体积大、功耗高等缺点。CMOS图像传感器是近向年发展较快的新型图像传感器,由于采用了相同的CMOS技术,因此可以将像素阵列与外围支持电路集成在同一块芯片上。实际上,CMOS图像传感器是一个较完成的图像系统(CameraonChip),通常包括:一个图像传感器核心、单一时钟、所有的时序逻辑、可编程功能和模数转换器。其基本结构见图1。与CCD相比,CMOS图像传感器将整个图像系统集成在一块芯片上,具有以下优点:(1)体积小、重量轻、功耗低;(2)编程方便、易于控制;(3)平均成本低。2OV5017的性能与特点2.1OV5017的基本性能OV5017是美国OmniVision公司开发的CMOS黑白图像传感器芯片,该芯片将CMOS光感应核与外围支持电路集成在一起,具有可编程控制与视频模/数混合输出等功能,其输出的视频为黑白图像,与CCIR标准兼容。OV5017芯片的基本参数为:(1)图像尺寸4.2mm×3.2mm,像素尺寸11μm×11μm;(2)信噪比SNR42dB;(3)帧频50时,最小照度为0.5lux@f1.4;(4)帧频50时,峰值功耗小于100mW。OV5017输出模拟视频信号,格式为逐行扫描。OV5017内部嵌入了一个8bit的A/D,因而可以同步输出8位的数字视频流D[7…0]。在输出数字视频流的同时,还提供像素时钟PCLK、水平参考信号HREF、垂直同步信号VSYNC,便于外部电路读取图像。OV5017的像素阵列为384×288,分为16×16的子块,每个子块大小为24×18,可以在整个图像的局部开窗,输出窗口中的图像。2.2OV5017的编程功能OV5017具有丰富的编程控制功能,其图像帧频、曝光时间、增益控制、Gamma校正、图像开窗等均可通过对芯片内部寄存器的读写进行设置,数字视频流的输出也必须通过对寄存器读取才能实现。芯片内部有11个8位寄存器,通过对地址线A[3..0]的设置来选择寄存器,通过读写数据线[7..0]来读取或设置寄存器。在对寄存器进行读(或写)时,应使片选CSB与输出使能OEB(或定使能WEB)有效。地址号10xx的寄存器为视频数据端口,它是只读的,当选中并读取它时,芯片向外输出数据视频流。地址号0000的寄存器为状态寄存器,它是只读的,反映芯片的某些状态。地址号0001的寄存器为帧控制寄存器,它是只写的,用于控制帧与行的同步信号。地址号0010的寄存器为曝光控制寄存器,它是读写的,可选择自动曝光,也可选择手工曝光。曝光时间控制在1帧至1/100帧之间。地址号0011的寄存器为增益控制寄存器,它是读写的,当手工曝光时,增益控制在0~18dB之间。地址号0100的寄存器为帧频控制寄存器,它是读写的,帧频控制在50~0.5fps之间。地址号0101的寄存器为杂项控制寄存器,它是读写的,负责设置Gamma校正、图像象、背景光补偿、图像锐化等功能。地址号0110与0111的寄存器为窗口控制寄存器,它们均是读写的,负责设置窗口的水平尺寸、水平位置、垂直尺寸、垂直位置,以确定图像中的一个窗口。地址号1110与1111的寄存器保留,用于测试。2.3数字图像的输出OV5017中数字视频流的输出必须通过对芯片内视频数据端口,即地址号为10xx的寄存器的读取来实现。其步骤为:(1)设置地址总线A[3..0]为10xx;(2)使能片选CSB与输出使能OEB。若需输出局部图像则应事先设置窗口控制寄存器。数字视频流输出的时序如图2所示。图中,TPHD:TCLK下降沿至HREF有效,最大25ns;TPDD:PCLK上升沿至视频数据有效,最大25ns;VD:视频数据。因篇幅所限,这里仅给出图像一行中4个像素输出的时序。根据图2所示时序,外部电路就可以读取芯片输出的图像数据。3基于OV5017的图像采集系统基于OV5017的图像采集系统结构如图3所示。在本系统中,OV5017作为系统的图像传感器,其内部将获取的图像采集量化,在外部逻辑的控制下输出数字图像,存入图像存储器。这里,OV5017的管脚A[3..0]与D[3..0]复用共同的外部数据线,因此加一个锁存器将它们分开。在读写OV5017的内部寄存器时,需分两个操作进行,即先选择寄存器,再读定该寄存器。同时,为避免总线冲突,TMS320C31的低8位数据线与OV5017的数据之间和TMS320C31的地址线与采集地址之间各加了一个总线隔离。系统读取图像的过程为:(1)对译码与时序发生器初始化;(2)视需要设置OV5017的内部控制寄存器,如曝光控制、增益控制、窗口控制等;(3)选择OV5017的视频数据端口,即寄存器10xx;(4)TMS320C31向译码与时序发生器发信号,通知开始采集图像;(5)译码与时序发生器使能总线隔离,并根据OV5017输出的参考信号,即VSYNC、HREF与PCLK,生成图像存储器的片选、写及地址信号。这样数字图像即以连续的方式存入图像存储器中;(6)TMS320C31向译码与时序发生器发信号,通知停止采集图像,OV5017则停止输出数字图像。在图像采集过程中,TMS320C31可访问除图像存储器与OV5017以外的其他存储器或端口。该系统由于省略了A/D等器件,因而具有结构简单、体积小、功耗低等优点。同时,由于OV5017内部嵌入曝光、增益、开窗等控制电路,并且编程方便,这就提高了采集系统在功能上的灵活性。本系统适合于监控、多媒体等应用范围。嵌入式系统中CMOS图像传感器接口技术背景目前数字摄像技术,主要采用两种方式:一种是使用CCD(电容耦合器件)图像传感器,另一种是使用CMOS(互补金属氧化物半导体)图像传感器。CCD图像传感器具有读取噪声低、动态范围大、响应灵敏度高等优点。但CCD技术难以与主流的CMOS技术集成于同一芯片之中。因而CCD图像传感器具有体积大、功耗高等缺点。CMOS图像传感器是近些年发展较快的新型图像传感器,由于采用了CMOS技术,可以将像素阵列与外围支持电路(如图像传感器核心、单一时钟、所有的时序逻辑、可编程功能和模数转换器)集成在同一块芯片上。因此与CCD相比,CMOS图像传感器将整个图像系统集成在一块芯片上,具有体积小、重量轻、功耗低、编程方便、易于控制等优点。对于手持式设备来说,体积和功耗是进行软硬件设计时重点考虑的问题,因此CMOS图像传感器应用在手持式设备当中将会有广阔的前景。文中将就嵌入式系统中设计CMOS图像传感器的图像采集设备硬件接口技术和软件驱动进行研究。系统硬件设计嵌入式系统硬件平台选择摩托罗拉MC9328MX1处理器基于ARM920T嵌入式处理器内核,能工作于高达200MHz的主频。它集成了许多模块,支持接口模块、GPIO(GeneralPurposeI/O)接口模块、时钟产生模块(CGM,ClockGenerationModule)等,为各种外设提供了灵活的接口控制功能。摩托罗拉MC9328MX1处理器内置的CSI(CMOSSensorInterface)模块提供了时序控制模块,可以适应不同CMOS图像传感器的要求。COMS图像传感器的选择ICM105C是ICMedia公司生产的一种单芯片数字彩色图像器件,使用1/4英寸的光学系统。它内置了一个640×480(650×490物理像素)传感器阵列、数模转换器和相关双采样电路。它的控制部分使用I2C总线,只需要一个I2C总线的从设备地址就可以对其内部的控制和状态寄存器进行设置和读取。ICM105C输出的是贝叶尔格式的图像数据,其中的RGB颜色分量可以被数字增益所调整,可以反馈给嵌入式处理器进行色彩处理或压缩。接口电路的设计接口电路设计主要应考虑图像传感器的电源驱动控制电路的接口以及数据输出电路的接口。ICM105C使用3V的电源驱动、24MHz的时钟频率,输出8位的数据,控制部分主要使用总线,要保证ICM105C正常工作必须提供这些条件。(1)电源驱动电路的设计。由于CMOS图像传感器是电源敏感元件,如果电源不稳会给成像效果造成很大影响。ICM105C对于供电电压的要求为3V,最小2.8V,最大3.1V,并且分开了数字电源和模拟电源。但是主处理板只提供了单3V的电源,而且这个电源同时提供给主处理板芯片使用,所以必须采取相应的机制保证电源的稳定和数字电源和模拟电源的隔离,同时本系统的另一个设计目标是小型化和简单化。为了兼顾这两者的要求,电源设计舍弃了使用复杂的稳压芯片的方案,仅使用电容和电感来稳定电压和消除数字电源和模拟电源之间的干扰,其电路图如图1所示。图1电源驱动原理图VDD3V是主板提供的电源,VCCD和VCCA分别是提供给ICM105C的数字电源和模拟电源,其中L1,L4,C1,C3起到隔离数字电源和模拟电源及滤波的作用。数字地和模拟地也用电感消除干扰。(2)数据输出接口电路设计。摩托罗拉MC9328MX1处理器内置的CSI模块提供了时序控制模块,这样可以简化电路的设计,只需要将8位数据线和输出时钟还有场频、行频和像素时钟与CSI模块连接即可保证处理器的正确采集数据。具体的逻辑连接关系如图2所示。图2ICM105C和主处理板的逻辑连接图其中时钟线是从MC9328MX1输入24MHz的时钟信号,PCLK是CMOS输出的像素时钟,VSYNC是场频,HSYNC是行频,DOUT[0-7]为输出的数据。其时序关系如图3所示。DOUT[7:0]在PCLK时钟上升沿有效,HSYNC和VSYNC处于低电平时有效。为了达到这种时序效果需要对芯片的某些引脚进行正确地初始化设置。ICM105C的引脚37控制数据的同步模式,用上拉电阻接高电平,这样可以使传感器输出HSYNC和VSYNC同步信号。图3ICM105C的数据输出时序图HSYNC和VSYNC的极性也可以进行配置,将引脚46和47接地,这样HSYNC和VSYNC在有效时为低电平。引脚14为时钟选择信号,将其接地表示使用外部时钟,这样内部晶振输入引脚12、13就可以悬空。(3)控制电路设计。要使传感器正常工作,必须对芯片内部的寄存器进行初始化。初始化的工作必须通过传感器的I2C接口进行。ICM105C提供了一种硬件初始化的方式,如果引脚33在芯片启动时为高电平,那么传感器的I2C接口将首先工作在主设备模式下,并且试图从外部的串行EEPROM中读取初始化数据。然后,传感器又回到正常的从设备工作模式下。为了使接口电路简单化,直接用主处理板的I2C接口来控制传感器,将此引脚接地,使其工作在从模式,这样EEPROM部分的电路就可以舍弃。软件驱动CMOS图像传感器需要嵌入式系统的软件驱动才能正常工作,并输出正确的图像数据。由于处理端的嵌入式系统采用的是嵌入式Linux操作系统,I2C接口的驱动程序已经集成在操作系统内部,中断资源可以作为资源来申请,操作系统还提供了调用其它资源的接口函数,这极大地方便了驱动程序的编写。在本次设计中采用了Linux系统下模块形式的字符设备驱动程序的编写方法。整个软件驱动需要完成两个功能模块:接口的初始化模块和接收输出的数据。初始化(1)CSI模块的初始化。根据ICM105C芯片的数据手册,CSI的重置信号需要保持有效直至输入电压保持恒定大于两个时钟周期,图4是时序图。图4软重置信号时序图由于主处理板是一上电就开始工作,而ICM105C的驱动程序必须在处理板上的操作系统启动后才开始工作。尤其是时钟信号只有在驱动加载后才开始提供给ICM105C,要造成重置信号的时序效果,必须使用一个软件控制的重置信号,在时钟输出到传感器后至少两个时钟周期保持有效,然后拉高电平使之无效。在设计中,采用了摩托罗