0引 言
与视频采集卡等传统图像采集系统相比,嵌入式图像采集系统具有体积小、成本低、可靠性高等优点,在智能交通、远距离监控、汁算机视觉等领域应用广泛。本文所设计的嵌入式图像采集系统是采用以arm7为内核的lpc2106作为主控芯片和,先控制cmos传感器ov6620进行图像采集,然后由lpc2106控制先将图像数据存放人fifo存储器al4v8m1440中,zui后将图像采集结果通过多种通信接口进行传输,或者通过sd卡来提取该图像采集系统中的图像数据。该图像采集系统仅用一个arm芯片就实现了对ov6620的功能控制、时序同步、数据采集与处理等功能,系统结构紧凑,功能强大。
1系统总体方案
如图1所示,在检测时,光线会照射在被摄物体表面,arm控制面阵cmos摄像头采集图像,再把获得的图像数据送入fifo存储器中缓冲一下,然后通过串口传输给电脑,也可通过sd卡接口将图像存放入sd卡中。
2系统硬件设计
2.1 arm与cmos的接口
ov6620是cmos彩色/黑白图像传感器。它支持连续和隔行2种扫描方式,cif与qcif两种图像格式;zui高像素为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作为中断口,zui高传输速率25 mbps;后者通过dat0~dat3分别进行串行数据传输,zui高传输速率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数据的格式进行读取。
其中,提取过程zui重要的是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芯片完成,因而降低了数据中转过程中传输错误的几率,提高了系统的可靠性。