图4- 2 ARM内核连接CPU图
打开SDRAM的工程程序,程序包括了对外部SDRAM芯片HY57V561的初始化,直接把它当做普通SRAM操作,程序中往0xA0000000到0xA00000FF写入不同的值,再读出来进行校验,程序清单如下: #define BEEP1 1<<30 //P3.30引脚控制蜂鸣器 #define SDRAM_ADDR 0xA0000000 //SDRAM起始地址,Bank0 int main(void) { }
piAddr = (volatile uint8 *)SDRAM_ADDR + 0;//获取SDRAM起始地址
for(i=0;i<256;i++){ //将刚刚写入的256个数据读出 if(*(piAddr++) != i){ //发现不同立刻跳出 uint32 i; uint32 iErr = 0; volatile uint8 *piAddr;
PINSEL5 = 0x00000000; //管脚选择GPIO FIO3DIR = BEEP1; //设置为输出
SDRAMInit(); //初始化SDRAM接口(见3.3节) /*此时将SDRAM芯片当做普通SRAM操作*/
piAddr = (volatile uint8 *)SDRAM_ADDR + 0;//获取SDRAM起始地址 for(i=0;i<256;i++){ //向0xA0000000写入256不同数 *piAddr = i; piAddr += 1;
}
iErr = 1; break; } iErr = 0;
if(0 == iErr){ //读写均真确,蜂鸣器响一声 }
Else{ //出错则蜂鸣器不叫 } }
注意在AXD调试时,需要在“SDRAMInit()”处设置断点,按下“Ctrl+M”快捷键打开AXD的Memery窗口,键入0xA0000000地址可以看到如图4-3,进而在SDRAM写入256字节后的程序设置断点,得到图4-4的Memory观察窗口。
while(1){ }
FIO3CLR = BEEP1; DelayNS(100); FIO3SET = BEEP1; DelayNS(100); FIO3CLR = BEEP1; DelayNS(1000); FIO3SET = BEEP1; DelayNS(1000);
图4- 3 写入SDRAM前观察窗口图
图4- 4 写入SDRAM后观察窗口图
可以从下方的观察窗口清晰看出写入数据均是正确的,再全速运行程序,程序便会对内存数据进行读出并校验,如果有数据出错则蜂鸣器一直蜂鸣,完全正确则蜂鸣器只响一声。
4.2.2 图像数据采集有效像素点及错帧率实验 1. 图像数据采集有效像素点实验
为了更好检测ARM采集到的有效像素点数,将ARM开发板与缓冲模块、CMOS模块连接好后,用其中的UART连接PC上,用作者编写的上位机界面中调试记录每一帧数字图像的有效像素点数,上位机的程序界面如图4-5:
图4- 5 上位机调试界面图
此时的CMOS开窗大小和输出图像分辨率均为640*480,图中可以看
到此帧图接收到JPG数据(像素点)的个数是39071,由于此处采用的JPG压缩比例为7比1,所以与640*480=307200的原分辨率相比少了33703个像素点数据。
以上述方法为例,分别采集5组有效JPG个数,每组连续采集500帧图,得到如下有效像素率表:
表4- 1 采集有效像素点率表 分辨率 640*480 帧数 50 采集次数 平均JPG数 有效像素率 1 2 3 4 5 38564 39976 35984 37890 39594 87.9% 91.1% 82.0% 86.3% 90.2% 平均有效像素率 87.5% 2. 错帧率实验
不论是在开发板LCD上还是通过串口在上位机显示,时常会出现图像数据显示不完全或者出现乱码条纹的情况,这是由程序的软件环境或者测试的硬件环境异常所造成,为了验证此图像采集系统的稳定性,特此进行错帧率的测试实验,分为5次进行,每次观察500帧图像,结果见表4-2:
表4- 2 采集图像错帧率表
帧数 500 采集次数 1 2 3 4 5 错误帧数 12 6 7 15 9 错误率 2.4% 1.2% 1.4% 3.0% 1.8% 平均错误率 1.92% 测试过程中发现错帧率出现的频率与CMOS图像传感器的采集物理状态稳定性以及PC机性能相关,在CMOS处在不稳定物理台上工作和PC机开进行多操作任务下错帧率明显提高。 4.3 本章小结
本章主要以三个测试实验SDRAM的读写校验实验、采集有效像素点实验及错帧率实验来验证和反应此图像采集系统工作的正确性、稳定性状况,实验证明了系统的采集处理显示功能的可行性、可靠性,为进一步对系统稳定状态优化、采集时间效率优化打下坚实基础。
第五章 总结和展望
半导体工艺水平的不断进步使得嵌入式图像采集系统的处理速度及精度越来越高,加上嵌入式系统本身具有的良好便携性、丰富功能接口、较低的成本功耗等特性,已经应用于多种静态、动态图像采集领域,在消费电子、工业自动化、仪表检测、交通监控、生物医学等行业实现了广泛的应用并获得极大的成功。
本论文设计了一种基于嵌入式ARM的静态数字图像采集系统,在对并行共焦光路的图像输出作出严格论证及分析图像采集技术国内外现状的基础上,选择了控制平台LPC2478开发板及CMOS图像传感器OV7620,并在硬件和软件上模块化进行研究设计,最后经过试验测试,论证了系统设计的正确性和可靠性。论文主要完成了以下设计任务:
? 硬件设计:
? CMOS与ARM的接口设计:研究对OV系列摄像头SCCB总线的
控制方法,完成对CMOS的配置初始化;
? 缓冲采集模块的硬件设计:通过加入专用图像缓冲芯片AL422来
解决非高频MCU的图像采集低效用问题,提高了图像数据的完成性和采集效率;
? 完成了RS232串口调试模块的接口设计。 ? 软件设计:
? CMOS的软件驱动:实现了对OV7620内部寄存器写数据操作,
完成图像传感器的初始化配置;
? 图像采集模块的软件驱动:配合硬件的缓冲模块里AL422的读写
控制端口及LPC2478的GPIO,完成对一帧图像数据的获取; ? 图像插值算法的设计:用双线性差值算法完成对Bayer图像阵列
到RGB格式的转换,使得图像在放大后的图像质量得到提高,不会出现像素值不连续的情况。 ? 实验调试:
? 完成了各硬件接口模块、系统总体的硬件连接测试实验; ? 利用ARM配套的ADS、AXD软件观察窗口,完成片外SDRAM
的数据读写校验实验;
? 编写了上位机图像采集软件,完成了图像数据有效像素点采集及
错帧率的实验,验证了系统运行具有较好的正确性、可靠性。 本学位论文虽然完成了上述设计工作,但由于硬件资源及作者能力有限,致使本系统仍旧不够成熟,一些预期的目标没有能够完全实现,有待于通过进一步的扎实的理论学习和科学的实验实践来实现,下面作者将本系统还需要完善的工作发表几点看法: