基于ARM9的CMOS图像采集系统的设计与实现
3 系统驱动软件设计
3.1 I2C串行总线通信协议
I2C总线是嵌入式系统常见的网络接口,由SCL(串行时钟)和SDA(串行数据)两根总线构成。该总线有严格的时序要求,总线工作时,由串行时钟线SCL传送时钟脉冲,由串行数据线SDA传送数据。总线必须由主设备控制,主设备产生串行时钟控制总线的传输方向,并产生起始和停止条件。I2C总线传输一个字节的时序如图5所示。当主设备写从设备时,传输的数据要跟有从设备的地址。从设备不能主动执行数据传输,所以主控设备读从设备时必须发送一个带有从设备地址的读请求。本系统中ARM9是主设备,图像传感器是从设备,ARM9通过I2C总线改写KAC9638寄存器的值完成初始化。根据I2C通信协议,改变某个寄存器的值的过程是:先发送CMOS传感器特定写地址(7位地址+0),紧接着发送需要写的寄存器的地址,再发送数据;而要读取某个寄存器的值的过程是:先发送CMOS传感器特定写地址,紧接着发送需要读的寄存器的地址,再发送CMOS传感器特定读地址(7位地址+1),最后接收数据。
3.2 图像采集CPLD时序控制
CPLD采集两个10位像元数据组合成32位(不够的位用0补充)可以提高图像采集效率。并且设计中使用DMA的方式保存图像数据,可以减少CPU的开销。以CPLD为核心器件设计的图像采集逻辑结构图如图6所示。
逻辑结构图的工作原理如下:
(1)CLKOUT0为S3C2410A的输出时钟引脚,根据S3C2410A内部寄存器MisCCR中4~6位的不同设置可以输出不同的时钟,如系统时钟FCLK、AHB(内部)总线时钟HCLK和APB(外部)总线时钟PCLK等。系统将其作为CMOS图像传感器的主时钟输入MCLK。
(2)启动信号START为S3C2410A的一个I/O,高电平有效,由于KAC9638的启动信号OE是低电平有效,所以它们之间要连接一个非门。
(3)VSYNC为传感器的帧同步信号,输出一帧有效图像时该信号一直为高电平,用该信号连接S3C2410A的外部中断XINT,使CPU能控制一帧图像的开始和结束。
(4)D[9:0]为图像传感器输出的数据流,D[15:10]位用0填充,组成16位数据输入到缓冲。缓冲的写入允许信号是启动信号START和帧有效信号VSYNC的逻辑与。在缓冲内两个周期移位成32位数据。
(5)缓冲写入时钟WRCLK由传感器的像元输出时钟PCLK提高,一个周期写入一个10位A/D值,所以一次输出32位数据时,输出时钟周期是PCLK的二分频。并将PCLK的二分频作为S3C2410A外部DMA的请求信号XDREQ。
(6)片选信号线nGCS4:作为32位缓冲的控制线,低电平有效。在进行数据采集时将DMA方式的源地址设置在BANK4范围内,读操作时即选中该缓冲。
图7是用Verilog语言编写的程序仿真的图像采集时序图。
3.3 DMA方式采集图像数据程序设计
系统采集一帧图像数据的流程图如图8所示。
(1)启动图像采集:主控CPU从串口或其他通信口接收到采集命令后,通过START信号线通知CPLD采集信号,CPLD再通过硬件引脚OE启动KAC9638采集图像数据。
(2)DMA初始化:包括DMA的源地址、目标地址、DMA次数等初始化。
(3)开外中断:当一帧数据采集完成后,通过外部中断通知CPU。
(4)DMA数据传输无需CPU干预,一帧图像完成后产生中断。
(5)DMA中断产生并且外部中断产生才算是一帧图像采集完成,然后交由主控CPU进行处理。若只有其中一个中断产生,并且等待另一个中断超时,则是在采集过程中丢失了数据,采集图像失败。
4 硬件调试
4.1 硬件调试环境
在系统硬件调试中,使用集成开发环境配合JATG仿真器进行调试是目前采用最多的一种调试方式[7]。集成开发环境选用ARM公司的ADS1.2。JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JATG边界扫描口进行调试的设备。属于完全非插入式(即不使用片上资源)调试。
4.2 硬件调试步骤及结果
(1)BootLoad系统引导测试
先使用英蓓特公司开发的Flash烧写工具将BootLoad程序烧写到Flash,若在PC超级终端上能正确接收目标板的串口返回的启动信息,表明系统正常运行,可以用ADS下载程序到SDRAM进行调试。
(2)图像传感器测试
①I2C配置测试
将ADS编译好的bin文件下载到目标板的SDRAM,超级终端接收到返回的图像传感器ID正确,则表明I2C通信正常。通过I2C配置图像大小为3(H)×5(V),用示波器测量传感器帧同步(vsync)、行同步(hsync)及像元时钟(pclk)的关系。如图9所示,11个像元时钟(设定的每行3个像元加上每行开始的8个全黑像元)对应1个行同步时钟,图10显示了帧同步信号及行同步信号的关系:5个行同步时钟对应1个帧同步时钟。测试结果表明S3C2410A可以正确配置图像传感器的工作方式。
②图像采集测试
为方便检验采集到的图像,将ARM采集到的图像数据通过UART口发送到PC终端,再将数据组合成图像显示。接收到的数据如图11所示。
采用CMOS图像传感器、CPLD和ARM9的DMA结合完成图像的采集是本系统的特点。该方法提高了图像的采集速度,减少了CPU的开销。CMOS图像传感器价格适中,外围简单,且集成I2C接口便于编程控制;CPLD将CMOS传感器输出数据移位成32位数据,可以使传感器以更高的速度输出;ARM9的DMA负责图像采集,使得CPU可以解放出来处理其他任务。实验测试结果证明,该图像采集系统硬件平台方案设计合理、可行。该系统在实际中可以应用于视频图像监控、图像自动检测、医疗及军事检测等场所,具有良好的应用前景。
- 六大特点助CMOS图像传感器席卷医疗电子应用(11-13)
- 在选用FPGA进行设计时如何降低功耗 (03-09)
- 采用灵活的汽车FPGA 提高片上系统级集成和降低物料成本(04-28)
- 基于CPLD的DSP微处理器与CAN控制器接口设计(06-19)
- 采用CPLD增强单片机P89C669外部设备扩展能力(07-18)
- Xilinx配置快速入门指南(08-03)
