首页>论文>正文
日期
03/11
2008
咨询
  • QQ扫一扫

  • Vision小助手
    (CMVU)

基于MC9328Mxl的图像采集系统设计
收藏
2008-03-11 11:00:04来源: 周德祥 王爱民等

 在智能仪器仪表和工业测控系统中图像采集占据着重要地位。传统的图像采集系统大多采用PCI图像采集卡进行图像采集和微型计算机软件进行图像处理或采用单片机作为控制核心的设计方案。采用PCI图像采集卡的设计方案致使系统体积庞大、成本高、携带不便,且因微型计算机总线插槽数目和采集卡通道数目有限,实现多点采集困难。而以单片机作为控制核心的设计方案由于单片机资源有限,但实现图像采集需要大量的系统资源和强大的运算处理能力,因此难以实现。文中提出了一种基于ARM-Linux的实现方案,该方案利用MC9328Mxl微处理器的处理能力和ARM-Linux的系统资源。与采用传统的方法实现的系统相比,提高了系统图像数据的采集与处理能力,而整个系统速度快、功耗低、体积小、易于升级维护,可广泛应用于嵌入式设备中。
  l. 系统硬件设计
  系统由MXl板、CMOS Sensor摄像头、FLASH,Sdram,LcD组成,结构如图1所示。

    在系统中,CMOS Sensor摄像头采集图像信息,其控制由I2c总线来实现,图像传感器采集的数据以DMA方式传送给MXl板,每帧为640×480 B。Mxl板对接收到的数据进行处理之后,将其显示在LCD上。
  硬件平台的设计遵循稳定性高、可扩展性好,具备一定的抗干扰能力和模块化标准。系统选用MC9328MXl作为硬件平台的主控芯片,该芯片为Motorola公司生产的基于ARM920T内核的RISC处理器。SDRAM选用Hynix HY57V281620A,他的存储容量为4组×2 M×16 b,工作电压3.3 V±O.3 V,16 b数据宽度,系统SDRAM总容量为32 M。FILASH选用Intel公司E28f128,该芯片的单片存储容量为16 M×16 b,工作电压为2.7~3.6 V。液晶选用SHARP公司的HR-TFT,型号是LQO35Q7DB02,该液晶模块是TFT型液晶,262 k色显示。CMOS图像传感器采用0V7620,是由美国Omini-vision公司生产的一款高集成高分辨率图像传感器,他将所有摄像功能和矩阵处理功能都集成在片上,OV7620是完全可编程的数字单片摄像器件,其最大分辨率为640×480;支持8位或16位并行数字输出;支持RGB原始数据输出,数据格式为RGB 4:2:2。
  2. 系统软件设计
  整个系统软件构建在嵌入式Linux的基础之上。软件平台使用的ARM-Linux操作系统是由Linux一2.4.18内核打上patch-arm一2.4.18一rmk7.gz和patch-arm一2.4.18一rmk7一pre2.gz补丁后编译而成。系统采用cramfs文件系统,该文件系统包括应用程序、模块、配置文件和库等。图像的采集和显示都建立在ARM-Linux内核之上。
  2.1 系统软件的实现原理
  系统中图像传感器与MXl板的数据传送采用I2C总线完成。因此,需要编写I2C总线驱动程序,实现读/写图像传感器内部寄存器功能,从而控制图像传感器的工作模式。然后,编写图像传感器的驱动程序,设置DMA通道及中断参数,使MXl以DMA方式获取图像传感器采集的数据。再编写LCD驱动程序,并对LCD进行初始化,最后编写基于MXl的应用程序,对获得的原始数据进行处理,将处理后的数据在LCD上显示,其软件结构如图2所示:

  2.2设备驱动程序的设计
  设备驱动程序是内核的一部分,是操作系统内核和机器硬件之间的接口,他由一组函数和一些私有数据组成,是连接应用程序与具体硬件的桥梁。Linux的一个基本特点是他对硬件设备的管理抽象化,系统中的每一个设备都用一个特殊的文件来表示。所有的硬件设备都像普通的文件一样看待,使用与操作系统相同的标准系统进行打开、读写和关闭。下面以I2C总线为例,说明如何来编写驱动程序,其他设备驱动类似。MXl板上I2C总线驱动由I2Ccore与I2C总线适配器驱动完成。首先初始化I2C的工作模式,然后装载I2C总线驱动,这需要2个结构模块描述,struct i2c-adapter和struct i2c-algorithm。初始化i2c-adapter结构成员如下:

  其中,name和id成员用来标识I2C适配器。结构体algo提供了I2C访问总线的方法。algo-data提供了一个供algo使用的私有结构体指针,通常可用他保存操作I2C寄存器等的指针函数。inc-use和dec一use负责增减模块加载的计数器。函数指针client-regester和client-unreg-ister的调用发生在当有新的I2C从设备驱动程序注册或者注销时,可用这个回调来检测新的I2C从设备是否在总线上。这个模块并未提供读写函数,具体的读写方法由结构模块struct i2c_algorithm提供。

  Name和id成员用来标识此结构体。master-xfer是比较关键的结构,他定义了I2C上传输和接收数据的方法。smbus-xfer是使用SMBus标准传输数据的函数,可以设置为空(NULL)。slave-send和slave-reev是I2C适配器作为从设备时的发送和接收函数,algo-control负责定义设备私有的ioctl。通过调用I2C core中的接口函数i2c_add-adapter将这2个模块注册到操作系统里,完成总线驱动的装载。
  3. 图像数据的压缩
  MC9328Mxl的CSI(CMOS SensorInterface)接口处理得到的一帧图像数据较大,为了提高传输速率和适合应用中的远程传输,在MXl端传送数据前,需要将RGB数据通过适当的图像压缩处理。MC9328MXl芯片没有集成硬件的图像压缩编码器,但其主频可达200 MHz,可以采用软件的图像压缩方法。基于CPU的处理能力和提高单帧采样图像的清晰度,采用基于离散余弦变换法(DCT) 的JPEG/MJPEG方式对图像数据进行压缩编码,减少了数据传输量,提高LCD每秒显示图像的帧数,使显示的画面更加流畅。
  4 . 结 语
  系统中在一次DMA请求时间内,主控制器能否确保请求得到响应并传输完成决定了整个系统的速率。该系统可进行单幅或连续图像采集,每秒可采集图像10帧。实验表明系统适用于高质量实时图像采集场所,具有很好的应用前景。