0引 言
与视频采集卡等传统图像采集系统相比,嵌入式图像采集系统具有体积小、成本低、可靠性高等优点,在智能交通、远距离监控、汁算机视觉等领域应用广泛。本文所设计的嵌入式图像采集系统是采用以ARM7为内核的LPC2106作为主控芯片和,先控制CMOS传感器OV6620进行图像采集,然后由 LPC2106控制先将图像数据存放人FIFO存储器AL4V8M1440中,最后将图像采集结果通过多种通信接口进行传输,或者通过SD卡来提取该图像采集系统中的图像数据。该图像采集系统仅用一个ARM芯片就实现了对OV6620的功能控制、时序同步、数据采集与处理等功能,系统结构紧凑,功能强大。
1系统总体方案
如图1所示,在检测时,光线会照射在被摄物体表面,ARM控制面阵CMOS摄像头采集图像,再把获得的图像数据送入FIFO存储器中缓冲一下,然后通过串口传输给电脑,也可通过SD卡接口将图像存放入SD卡中。
|
2系统硬件设计
2.1 ARM与CMOS的接口
OV6620是CMOS彩色/黑白图像传感器。它支持连续和隔行2种扫描方式,CIF与QCIF两种图像格式;最高像素为352×288,帧速率为 26 fps;数据格式包括YUV、YCrCb、RGB三种,能够满足一般图像采集系统的要求。OV6620内部可编程功能寄存器的设置有上电模式和SCCB编程模式。本系统采用SCCB编程模式,连续扫描,8位RGB数据输出。系统硬件结构框图如图2所示。
|
ARM芯片选用具有ARM7TDMI内核的LPC2106,通过LPC2106的GPIO模拟SCCB总线协议设置OV6620的功能寄存器。使用 LPC2106中断口引入OV6620的图像输出垂直同步信号VSYNC,以中断方式同步图像数据输出。OV6620的Y0~Y7通道输出的8位并行数据先通过AL4V8M440缓存,再进入LPC2106中。
AL4V8M440为FIFO存储器,作用是对CMOS传感器所采集的图像数据进行缓存,调节ARM同CMOS之间速度的差异,从而采集到完整图像。
2.2 ARM与SD卡接口
SD卡(secure digiatl memory card)是一种基于半导体快闪记忆器的新一代记忆设备。SD卡由日本松下、东芝及美国SanDisk公司于1999年8月共同开发研制。SD卡有着广泛的应用领域,音乐、电影、新闻等多媒体文件都可以方便地保存到SD卡中。本文加入该接口,可以方便提取图像采集系统的数据。
SD卡支持SPI和BUS两种接口模式,本系统采用SPI接口模式。SD卡的DAT0接到MOSI,CLK(时钟线)接到SCK,CMD(命令线) 接到MOSI,CS接到P0.14。SD卡支持单线和4线读/写,前者通过DAT0进行数据串行传输,CS作为中断口,最高传输速率25 Mbps;后者通过DAT0~DAT3分别进行串行数据传输,最高传输速率100 Mbps。本系统选用的是前者,可以节省硬件资源,实现方便,ARM与SD卡接口的硬件结构框图如图3所示。
|
3系统软件设计
3.1 ARM与CMOS的软件接口设计
3.1.1 OV6620的寄存器设置
由于SCCB不支持多字节的读写,NA位必须为高电平。另外,SCCB没有重复起始的概念,因此在SCCB的读周期中,当主机发送完片内寄存器地址后,必须发送总线停止条件。不然在发送读命令时,从机将不能产生Don't care响应信号。
由于I2C和SCCB的一些细微差别,所以采用普通IO口P0.22,P0.23模拟SCCB总线的方式。SCCB的写周期直接使用I2C总线协议的写周期时序;而SC-CB的读周期,则增加一个总线停止条件。OV6620功能寄存器的地址为0x00~0x50(其中,不少是保留寄存器)。通过设置相应的寄存器,可以使OV6620工作于不同的模式。
例如,设置OV6620为低分辨率、自动曝光、自动白平衡和设置帧时钟周期,需要进行如下设置:
camera_set_register()为设置寄存器函数,它的第1个参数OV6620_addr为宏定义的芯片地址0xC0,第2个参数为片内寄存器地址,第3个参数为相应的寄存器设定值。
3.1.2 OV6620采集过程
OV6620有4个同步信号:VSYNC(垂直同步信号)、FODD(奇数场同步信号)、HREF(水平同步信号)、PCLK(像素同步信号)。当采用连续扫描方式时,只使用VSYNC和HREF、PCLK三个同步信号,如图2所示。
LPC2106的1个外部中断引脚分别作为VSYNC信号的输入,相应的中断服务程序分别为Vsync_IRQ(),HREF接LPC2106的普通IO口,PCLK接FIFO存储器的读时钟。
图像采集的基本流程为:当用SCCB初始化好OV6620后,使能VSYNC对应的中断,在Vsync_IRQ()中断服务程序中判断是否已取得一帧图像数据。若不是,则打开FIFO的写使能,将一帧图像数据写入FIFO存储器中;若是,则关闭FIFO的写使能,CMOS不向FIFO存储器,而等待 ARM读取FIFO存储器的一帧图像数据。
3.1.3图像提取过程
图像提取的基本流程为:当采集数据已经存放在FIFO中,利用ARM取出数据,再传输给上位机。先对FIFO进行读复位,使FIFO指针指向首地址,再根据OV6620所输出RGB数据的格式进行读取。
其中,提取过程最重要的是OV6620所输出RGB数据格式,它影响到提取图像的准确性。本系统应用的是8位输出,其数据格式见表1所示。
|
从表1中可以看出,第一行Y通道是无效数据应该去除,从第二行开始读取,在一行之内,B、R数据只在奇次项出现,G数据只在偶次项出现。而在每一行内,偶数点的R数据、B数据可通过分别对其两侧的2个点的R和B数据求平均值得到。
这样,一幅图像就提取完了,可以直接存成二进制文件(本系统采用串口输出到PC进行显示处理)或者存储到SD卡上。
3.2 ARM与SD卡的软件接口设计
ARM同SD卡接口有SPI和BUS两种接口模式,本系统采用SPI接口模式,这样可以直接利用LPC2106自带的SPI接口进行数据传输,实现方便。SD卡的SPI通道由以下4个信号组成:CS(片选),CLK(时钟),DataIn(主机到卡的数据信号)和DataOut(卡到主机的数据信号)。CS是SD卡的片选信号线,在整个SPI操作过程中,必须保持低电平有效,CLK用于同步,DataIn不但传输数据,还发送命令,同样 DataOut除了发送数据外还传送应答信号。
在SPI模式中,SD卡可以支持单块以及多块数据的读写。这里以单块数据的写入和读取为例。其中单块数据写入SD卡的步骤是先向SD卡发送单块写命令CMD24以及写地址,卡将发送给主机一个应答信号,并且等待主机发送一个数据块来,当应答信号reasult为0时,说明可以发送数据,一块的大小为 512个字节。卡对每个发送给自己数据块通过一个应答信号确认,它有1字节长,当其低4位十六进制为0x05时,数据块才被正确写入SD卡。所以在发送完单块数据后,将判断应答信号是否为0x05。单块数据写入SD卡流程图如图4所示。而从SD卡读取单块数据的步骤是先向SD卡发送单块写命令CMD17以及读地址,卡将发送给主机一个应答信号,并且向主机发送单块数据,当应答信号reasult为0时,说明可以接收数据,接着判断接收的第一个字节是否为起始字节0xFE,是的话就接收5112 B,否则就读取数据失败。写入和读取SD卡单块数据流程图如图4、5所示。
|
4实验结果
根据以上的设计思路搭建了一个图像采集系统,进行图像采集实验,并将所采集到的图像数据添加上BMP位图文件头信息用bmp格式文件存入SD卡,便于在电脑上读取SD卡上的图像数据。
现以拍摄运动中的商标带为例,在运动中的某一时刻拍摄图片如图6所示。从图6上表明该图像采集系统可以实现实时采集,且所采集图像的图案清晰,准确率较高,基本满足设计的要求。
|
5结语
本文主要介绍了利用LPC2106硬件平台和OV6620摄像头进行图像采集,以及将采集到的图像数据通过SD卡进行图像存储的方法。与普通的视频采集卡相比,此嵌入式图像采集系统极大地简化了系统结构,降低了系统设计成本,缩短了开发周期;图像数据的采集与处理均由ARM芯片完成,因而降低了数据中转过程中传输错误的几率,提高了系统的可靠性。