基于ARM9的CMOS图像采集系统的设计
在使用OV9650芯片采集图像数据以前,需要先初始化其内部寄存器。设置参数通过SCCB总线传输。SCCB总线有两根连线:数据线SIO D和时钟线SIO C,相当于功能简化了的IIC总线。具有SCCB总线的器件只能作为从设备,与主设备的IIC总线相连,由主设备对其进行读写操作。
2)数据输出接口
OV9650内嵌了一个10位A/D转换器,因此共有10个数据输出接口D0--D9。输出图像数据的格式既可以是10位原始RGB,也可以是经过内部DSP转换的8 位RGB或YCbCr。由于S3C2440A的CAMIF单元支持8位YCbCr格式,因此需要将OV9650的数据接口D[9:2]与CAMIF的数据接口CAMDATA[7:0]相连接,本设计的图像采集的数据是8位YCbCr格式。
3)控制接口
OV9650的XVCLKI接口用于接收CPU输出的24MHz工作时钟。OV9650内部产生三个时钟信号输入到CPU中,用于对图像采集进行控制:帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK。每一个VSYNC 脉冲表示开始采集一帧图像数据,HREF的高电平表示采集一行图像数据,图像传感器以从左到右的顺序在每个PCLK脉冲过程中依次采集一个字节的数据,直到一帧图像数据全部采集完成。
OV9650的省电模式PWDN管脚置为高电平时,能够关闭芯片所有内部时钟使之进入省电模式。在芯片正常工作时,PWDN要保持低电平。0V9650的还原设置RESET管脚设为高电平时,可以将芯片内部寄存器设置清除并恢复为默认值。在芯片正常工作时,RESET要保持低电平。
本设计图像传感器模块的电路设计采用的方式是扩展板的方式,这样我们不仅可以根据需求更换不同型号图像传感器的扩展板而且还可以灵活的对图像传感器的外围电路。驱动软件和应用程序进行调试,扩展板中的OV9650的管脚通过20针的camera接口与主板核心处理器的CAMIF的各接口相连电路原理如图4.4所示。
–16–
基于ARM9的CMOS图像采集系统的设计
图4.4图像传感器电路
4.3液晶显示模块设计
4.3.1 液晶模块选择
下位机是通过液晶屏显示图像采集的信息的。S3C2440A内部集成了LCD控制器,因此可以很方便地去控制STN和TFT屏。STN亮度较暗,画面的质量较差,颜色不够丰富,播放动画时有拖尾现象,但耗电量小,价格便宜。TFT屏亮度高,画面质量高,颜色丰富,播放动画时清晰,但耗电量大,价格高[11]。
4.3.2 液晶模块电路设计
本设计中采用的是TFT液晶屏,型号为NL2432HC32。LCD控制器把系统内存视频缓冲区内的图像数据传送给外部的LCD驱动器,从而在LCD屏上显示相应的图像。LCD接口电路硬件框图如图4.5所示。
–17–
基于ARM9的CMOS图像采集系统的设计
图4.5 LCD接口电路图
本设计中,LCD的DATA[0:23]与S3C2440A微处理器的VD[0:23]相连,为LCD像素数据输出端口。LCD的VCLK、VFRAME、VLINE、VM和LCD_PWR分别于S3C2440A的GPC0、GPC3、GPC2、GPC4和PGC7相连。
4.4以太网传输模块设计
4.4.1 传输模块选择
以太网接口允许嵌入式系统连接到一个LAN中,并且可通过使用网关经由Internet 连接到一个外部的世界。该接口由一个具有处理以太网帧所必需的全部逻辑的以太网引擎集成电路(IC)组成。因此在本设计中我们使用了DM9000嵌入式以太网控制器。
4.4.2 传输模块电路设计
DM9000与核心控制器的电路连接入图4.6所示。
–18–
基于ARM9的CMOS图像采集系统的设计
图4.6 以太网接口连接电路图
其中数据端口是用DM9000的SD[0:15]位和S3C2440的DATA[0:15]相连,IOR,IOE分别与LnOE,LnWE相连,其中X125M 和X2_25M用于接入25M的外接电路,片选段AEN低电平有效,连接到了S3C2440的BANK2区。
–19–
基于ARM9的CMOS图像采集系统的设计
5 嵌入式程序设计
5.1 图像采集程序设计
5.1.1 图像传感器功能设置程序设计 图像传感器功能程序设计有以下几个步骤:
? 初始化图像传感器 ? 设置摄像头的时钟 ? 设置摄像头的端口 ? 测试OV9650 其具体的实现方法如下:
1)初始化图像传感器,其具体实现函数如下:
void CamReset(void) {
rCIGCTRL |= (1<<31); //camera I/F soft reset Delay(10);
rCIGCTRL &= ~(1<<31); }
其中用软件设置的方式设置了2440中的寄存器CIGCTRL的第31位,使其为零进行复位。其中CIGCTRL寄存器的功能如表5.1所示。
表5.1 寄存器CIGTRL功能描述
CIGCTRL 位 描述 初始状态 ImgCptEn [31] 摄像头接口全局捕获使能 0 ImgCptEn_CoSc [30] 编码缩放器的捕获使能。
缩放旁路模式中此位必须为‘0’ 0
ImgCptEn_PrSc [29] 预览缩放器的捕获使能。
缩放旁路模式中此位必须为‘0’ 0
2)设置摄像头的时钟。其具体操作如下:
rCLKCON |= (1<<19); // enable camclk
ChangeUPllValue(56, 2, 1); // UPLL clock = 96MHz, PLL input 12MHz rCLKDIVN|=(1<<3); // UCLK 48MHz setting for UPLL 96MHz // 0:48MHz, 1:24MHz, 2:16MHz, 3:12MHz...
–20–