4. 软件编程设计
本文的软件设计是运行于uCLinux环境下的标准C程序。软件设计的主要步骤是,在系统加电时,对系统进行初始化,包括S3C4510B的初始化和SCCB的配置,配置完后,当接受到开始采集信号后,根据同步信号的状态判断是否开始采集数据,采集完一帧图像后将数据存入FLASH中。由于篇幅有限,下面给出了采集部分的程序代码:
void collect()
{
int pixel_count = 0;
int line_count = 0;
int i,j;
IOPMOD = IOPMOD & 0x00000000; /*设置IO口为输入*/
while (!VSYNC); /*等待新的一帧开始*/
for (line_count=0; line_count<480; line_count++)
{
while (!HREF); /*等待新的一列开始*/
for (pixel_count=0; pixel_count<640; pixel_count++)
{
while (PCLK); /*等待一个新的象素点*/
buf[line_count][pixel_count] = PIXEL;
while (!PCLK); /*等待这个象素点传输完毕*/
}
while (HREF); /*等待这一列传输完毕*/
}
while (VSYNC); /*等待这一帧传输完毕*/
}
5.结束语
用ARM控制OV7640的数据采集系统性能良好,这种信号采集方法适合应用在对速率要求不高,追求高性价比的场合,以最简单的方式构建自主式系统。本系统已实现了SCCB总线的写功能,读功能需要一个更严格的时序,由于S3C4510B的I/O口速度较慢难以实现。另外,S3C4510B的时钟频率只有50MHz左右,信号的同步是个难题,可以考虑在接收端再加上一个时钟电路以实现严格的信号同步。
总而言之,本系统具有两大特点:一是开放性,由于采用的是通用的uCLinux操作系统,使用标准的C程序即可,然后通过以太网接口便可实现远程连接功能以改变目标任务。二是自主性,该系统自成体系,可以实现自启动,具有某些方面的识别能力和较高的性价比。