一种应用于ARM7的CMOS图像采集系统
配置的具体方法如下:采用三相写数据的方式,即在写寄存器过程中要先发送OV7640的ID地址,然后发送数据的目的寄存器地址,接着为要写的数据。如果给连续的寄存器写数据,写完一个寄存器后,OV7640会自动把寄存器地址加1,程序可继续向下写,而不需要再次输入地址,从而三相写数据变为了两相写数据,由于本系统中只需要对有限个不连续寄存器的数据进行更改,如果采用对全部寄存器都加以配置这一方法的话,会浪费很多时间和资源,所以我们只对需要更改数据的寄存器进行写数据。对于每一个变化的寄存器,都采用三相写数据的方法。三相写数据的传输周期如图3所示。
系统配置完毕后,将进行图像数据的采集。在采集图像的过程中,最主要的是判别一帧图像数据的开始和结束时刻。在仔细研究了OV7640输出同步信号(VSYNC是垂直同步信号、HREF是水平同步信号、PCLK是输出数据同步信号)的基础上,用C语言实现了采集过程起始点的精确控制。图4表示了图像采集期间三个同步信号的时序关系示意图。
VSYNC的上升沿表示一帧新的图像的到来,下降沿表示一帧图像数据采集的开始(CMOS图像传感器是按列采集图像的)。HREF是水平同步信号,其上升沿表示一列图像数据的开始。PCLK是输出数据同步信号。当HREF为高电平期间,才能开始有效的数据采集,PCLK下降沿的到来表明数据的产生,PCLK每出现一个下降沿传输一位数据。HREF为高电平期间共传输640位数据。在一帧图像中,即VSYNC为低电平期间,HREF出现480次高电平。当下一个VSYNC信号的上升沿到来时,就表明分辨率640*480的图像采集过程结束。
4. 软件编程设计
本文的软件设计是运行于uCLinux环境下的标准C程序。软件设计的主要步骤是,在系统加电时,对系统进行初始化,包括S3C4510B的初始化和SCCB的配置,配置完后,当接受到开始采集信号后,根据同步信号的状态判断是否开始采集数据,采集完一帧图像后将数据存入FLASH中。由于篇幅有限,下面给出了采集部分的程序代码:
评论