基于CMOS图像传感器OV7720的网络摄像机设计
扫描二维码
随时随地手机看文章
0 引言
CCD和CMOS图像传感器作为固体图像传感器领域的竞争对手,在性能表现上各有优劣。相较于CCD图像传感器,CMOS图像传感器的功耗低,结构简单,集成度高,体积小,成本低,这就使产品的便携性和可靠性得以极大的提高。由于CMOS图像传感器的内部结构,使其具有高抗辐照和强抗干扰能力,因此在图像传感器、天文观测、小卫星、星敏感器等应用领域表现极大的应用潜力。另外,基于CMOS图像传感器的加工工艺,可以较容易地制造出大面阵的CMOS体传感器器件,更加扩展了CMOS图像传感器的应用范围。
网络摄像机具有联网功能,又最大限度地保持了模拟摄像机的功能,无疑是监控领域的新星。网络摄像机一般使用成品CCD摄像头做视频捕捉前端,CCD摄像头在硬件成本中占了很大的分量,且CCD摄像头输出的是模拟信号,系统中必须加视频A/D转换器。开发用于网络摄像机的CMOS摄像头对降低设计成本和复杂度有重要意义。
1 图像采集系统采用的芯片介绍
1.1 图像传感器OV7720
OV7720是一个高集成度的CMOS Camera Chip传感器,在单芯片上提供了VGA图像处理器的全部功能。OV7720的一个独特性能就是有很大的主光线角度,它能显著减小模块高度,而高度是让相机能够装配进当前超薄笔记本电脑的关键因素;OV7720的第二大亮点是能够工作在60f /s的VGA模式下,或工作在120 f/s的QVGA模式下实现设备的最佳性能。OV7720内部集成了对图像传感器的完善控制,包括曝光控制、伽马校正、白平衡、色彩饱和以及色调控制,所有的图像处理功能都可以通过它的串行相机控制总线(SCCB)接口实现对内部控制寄存器组的编程。OV7720采用专有传感器技术来提高图像质量,并通过减少或消除诸如固定图案噪声、拖尾和浮散等不良因素来产生明晰、纯净和完全稳定的彩色图像,其主要技术参数如表1所示。
1.2 相机控制芯片OV529
OV529是一种相机控制芯片,它可以将来自图像传感器(例如OV7720)的信号转换成压缩图像格式的数据。图1给出了OV529与传感器、主机以及E2PROM之间连接的逻辑关系。该芯片具有的技术特征是:可用于移动PDA系统、笔记本电脑中低成本、低功耗、高分辨率的单片相机控制器;不需要附加DRAM;有8位并行相机芯片数据接口;内建采样电路、箝位电路和窗口电路;可用于VGA,CIF,SIF,QCIF,160×128,160×120,128×128,80×64以及更多的图像分辨率;内建彩色转换电路可用于4 b/8 b灰度,16 b YUV,12 b/16 b/24b RGB图像预览;有串行相机控制总线、内置微控制器、可选的串行E2PROM存储器、通用I/O引脚和2个主机接口(RS 232,5wire)等。
[!--empirenews.page--]
2 系统总体设计
2.1 系统组成
系统总体设计分为硬件设计和软件设计两个部分。硬件设计模块主要包括微控制器模块、网络接口模块和相机控制模块三部分。微控制器模块主要由主控芯片、DATAFLASH和SDRAM组成,其中主控芯片是整个系统的核心,负责整个系统的调度工作。DATAFASH里固化了嵌入式Linux内核及其文件系统、应用软件和系统配置文件。SDRAM作为内存供系统运行使用。网络接口模块主要是配合主控芯片传送MPEG-4码流。相机的控制模块主要是由OV529和OV7720芯片组成,通过SCCB(Serial Camera Control Bus)将传感器的视频流传送到OV529;OV529通过控制OV7720将视频流转化成MEPG-4码流,并完成转发控制相机命令的功能。当系统启动时,微控制器通过SPI将Linux内核转入SDRAM中,系统从SDRAM中启动。
软件设计部分主要包括嵌入式Linux移植、CGI控制程序和MEPG-4解码程序三个部分。嵌入式Linux系统存放到由AT91SAM7X256控制的DAT-AFLASH中,它负责整个系统软件的调度工作。CGI控制程序主要负责对摄像机的控制和对MPEG-4视频流的相关设置。MEPG-4解码程序主要负责对通过网络得到的MPEG-4数据流的解码工作。
2.2 SCCB通信规范
SCCB(Serial Camera Control Bus)是OminiVision公司定义的主从模式串行通信协议,用于控制该公司图像传感器系列芯片的内部寄存器。该协议有通信使能信号SIO_E、时钟信号SIO_C和数据信号SIO_D,在简化引脚的封装中不再提供SIO_E引脚,协议也变成了两线串行通信。协议支持的最高串行通信速率是400 Kb/s,规定图像传感器在通信中只能作为SLAVE工作。一SCCBMASTER可以控制1~8个SLAVE工作,由不同的ID来识别,在只有一个SLAVE时固定SLAVE的ID为42H(写)和43H(读)。该协议符合网络摄像机CPU的I2C口时序子集,设计中OV529作为SCCB的MASTER,并且只带1个SLAVE OV7720。协议要求数据线必须在时钟信号高电平期间稳定,在低电平时更新。协议支持3字节写、2字节写和2字节读三种传输模式。传输数据时每个字节包括9位串行数据位,除了8位数据,还有第9位不相关位或NA位,用在有多个SLAVE的系统来标识通信是否完成。SLAVE可以用两种方式应答该位,一种是正在被写的SLAVE在收到数据后驱动该位为0表示成功;另一种是SLAVE不应答该位,这种情况下所有SLAVE的第9位保持悬空。在3字节写周期MASTER必须提供子地址,即芯片中寄存器的地址,第3字节为所写数据。读周期不提供子地址,但必须由MASTER把数据后的NA位(第9位)驱动为高电平。所以在每个读周期前必须有3字节或2字节写操作,使SLAVE获得寄存器地址,其中的2字节写周期并没有写数据,它的用途是在读操作前提供给SLAVE子地址。
3 硬件系统实现
3.1 微控制器模块
微控制器模块是该系统的核心部件,采用Atmel公司的ARM7芯片AT91SAM7X256作为系统的主控芯片。它是一款Atmel 32位ARM RISC处理器小引脚数FLASH微处理器,主频为55 MHz,处理速度快,功能强,性价比高,能很好地满足嵌入式Linux系统的需求。它在系统中的主要作用是在系统上电时配置其他芯片的功能寄存器,在正常工作状态下调度整个系统工作,通过片内以太网控制器控制物理层芯片发送码流,并通过片内的SPI总线实现对外围DATAFLASH和SDRAM的控制。
3.2 网络模块
AT91SAM7X256的在片以太网卡端口与网络物理层芯片DM9161E的MII接口通信。发送数据时首先置发送使能信号ETXEN有效。数据发送端ETX0~ETX1与DM9161E的ETX0~ETX1引脚对应连接,作为数据发送通道,以DM9161E的时钟信号REF_CLK发送数据。数据接收端ERX0~ERX1与DM9161E的RXD0~RXD1引脚对应连接,作为数据接收通道。管理时钟信号EMDC和管理数据输入/输出信号EMDIO用于芯片控制参数的写入和读取。DM9161E的MDINTR端用来产生中断信号。片内以太网卡通过DMA通道进行数据发送,不影响AT91SAM7X256的正常运行。首先正确设置传送控制寄存器和传送地址寄存器的传送数据块字节数、数据块存储首地址等参数,随后依次从指定数据存储区地址读取数据,送入内部发送缓冲器中,由MAC对数据进行封装发送,同时记录已传送字节数,直到数据块发送完毕。当发送完一组数据后,发出DMA中断请求,由AT91SAM-7X256进行相应的处理。整个网络子系统电路由AT91SAM7X256控制和调度。[!--empirenews.page--]
3.3 相机控制模块
相机控制模块包括图像采集传感器OV7720和相机控制芯片OV529。OV7720内含A/D转换和DSP,能够直接将图像信号数字化,并通过相机接口向OV529直接输出并行的数字化图像信号。
OV529自带的MCU进行各种控制,它通过串行相机控制总线(SCCB)与OV7720交互控制信息实现对图像传感器的控制和数据采集。OV529包含一个压缩引擎,对从OV7720采集的图像信息帧进行压缩,压缩后的信号经OV529的串行通信传给主控芯片AT91SAM7X512,再经AT91SAM7X512上的MAC层处理,通过网络接口将视频流发送到网络上。
4 软件设计
嵌入式Linux系统由4个部分组成:引导内核启动的文件bootloader,Linux内核文件kernel,虚拟磁盘文件ramdisk和用户空间文件use-r。它们分别被放在DATAFLASH内的4个分区模块中。根据不同模块的具体功能采用不同的文件系统:bootloader,kernel,ramdisk。移植完成后不需要动态改变,使用较节省空间的ROMFS只读文件系统。user模块内放置一些可以动态更新的配置文件等。需要进行较多次的读/写操作,所以使用支持动态擦写保存的JFFS2文件系统。
4.1 CGI控制程序设计
应用程序接口(Common Gateway Interface,CGI),提供Web Server执行外部程序的通道,CGI程序编译成可执行文件,放在服务器端运行,服务器根据用户的请求调用相应的CGI程序,并将CGI程序得到的动态信息封装到页面中,发送到用户浏览器上。该系统CGI的工作过程是在PC机端的IE浏览器中输入网络摄像机IP地址,嵌入式网络服务器根据要求,将相应的控制页面反馈给IE浏览器,用户填写表单,然后提交,CGI程序提取信息,并根据得到的信息作相应的处理,如调节相机的转向、焦距等。CGI模块的设计主要包括三部分:嵌入式Web服务器的配置、HTML页面的编写、CGI程序的设计。嵌入式Web服务器采用的是Apache,其配置是以配置文件的形式提供,放在Ramdisk中,其配置主要涉及配置根文件路径、配置CGI外部程序所放的路径和配置环境变量三个方面。网页编写采用HTML与SHTML相结合的方式。HTML的解析速度较快,SHTML可以在普通网页中嵌入外部CGI程序,通过这种方式将系统的默认配置反馈给客服端。CGI程序采用的是C语言和Shell脚本相结合的方式,具体编写过程与Linux下编程相同。
4.2 解码程序
该部分已成功做成Toolbox插件,该插件只要在PC机上注册安装后,就可方便地被网页调用,从而实现在PC机上实时观看视频。安装后的实图如图2所示。
5 结语
本文利用CMOS图像传感器设计了一款嵌入式网络摄像机。经测试,系统稳定、可靠、实时性好,图像清晰度明显好于同价位的产品,完全可满足目前网络摄像头市场对中、低端产品的要求,具有良好的市场前景。