S3C2440的camera接口特性及WinCE 下的驱动
摘要:分析S3C2440的camera接口特性,介绍当摄像设备为CCD摄像头时,在WinCE 5.0/6.O操作系统环境下开发camera驱动的方法。该方法弥补了目前国内在WinCE 5.0/6.0操作系统环境下CCD摄像头无法连接到S3C2440的camera接口的缺陷。
关键词:camera接口;WinCE;驱动
S3C2440是应用十分广泛且适用于嵌入式系统的一款嵌入式处理器。winCE 5.0/6.O是微软公司开发的一款专用于嵌入式系统的实时操作系统。其模块化设计使开发人员可以根据需求定制设备。目前,国内大部分OEM商都提供了对S3C2440的camera接口在WinCE5.O/6.0下的驱动支持。遗憾的是,目前国内OEM商提供的驱动仅限于对几款微型摄像头(如ov9650等)的驱动支持。当用户采用CCD摄像头作为图像采集的前端设备时,原来的驱动已经不能使用了,而CCD摄像头因其优越的性能,在监控领域扮演着主力军角色。本文从分析S3C2440的camera接口特性出发,详细介绍当摄像设备为CCD摄像头时,在WinCE 5.O/6.0操作系统环境下开发camera驱动的形式、方法和主要的驱动代码。
1 camera接口特性
S3C2440处理器有一个专用的camera接口(CAMIF),该接口支持ITU-R BT.601/656 YCbCr 8位数据格式视频数据输入,最大输入视频图像大小为4 096×4 096像素。视频输入后分两个通道逐帧保存图像数据,一个为预览通道(即P通道),另一个为编解码通道(即C通道)。两个通道均通过DMA方式将一帧图像保存到系统内存SDRAM中,在系统内存中共开辟了4组帧图像缓冲,从而保证了用户应用程序在读取帧图像数据时不影响另一帧图像数据写入。其特性如下:
◆支持ITU-R BT.601/656 YCbCr 8位数据格式视频数据输入,并可调整Y、Cb、Cr三个信号的顺序,以适应不同的视频信号源;
◆具有DZI功能,相当于数码变焦;
◆C通道输出图像最大为4 096×4 096像素;
◆P通道输出图像最大为640×480像素;
◆P通道输出图像格式可配置为RGBl6或GRB24;
◆C通道输出图像格式可配置为YCbCr 4:2:2或YCbCr 4:2:0:
◆输出图像可X方向镜像翻转、Y方向镜像翻转,或180°旋转;
◆DMA数据传输,4组帧图像缓冲,2个对应的中断处理,保证视频实时采集;
◆2个通道不同图像数据格式输出,便于用户程序开发。
CAMIF对外接口信号定义如下:
CAMPCLK输入的视频像素同步时钟。
CAMVSYNC输入的视频帧同步时钟。
CAMHREF输入的视频行同步时钟。
CAMDATA[7:0] 输入的视频8位数据。
CAMCLKOUT输出的时钟,用于外接的没有独立时钟的camera芯片的主时钟。当外接的camera芯片有独立的时钟时,该信号可不用。
CAMRESET输出的软件复位信号,可对外接的camera芯片进行复位。
信号的时序图如图1所示。
使用CAMIF时,必须对CAMIF相关寄存器进行正确配置,下面介绍主要寄存器的配置原理。
CAMRCFMT 选择输入视频信号源格式寄存器
①选择输入视频信号源为ITU-R BT.601 YCbCr 8位数据格式,或ITU-R BT.656 YCbCr 8位数据格式。
②选择输入视频信号源水平像素大小和垂直像素大小,一定要和外接的camera设备分辨率一致。
③选择输入视频信号Ycbcr信号顺序,一定要和外接camera信号的实际顺序一致。
CIWDOFST 从输入信号中截取中心部分的图像寄存器
原理是:从输入信号中截取中心部分的图像输出到大小不变的输出图像缓冲中,从而实现对图像的放大或缩小。
①配置该寄存器允许缩放或不允许缩放。
②X方向图像放大或缩小控制,原理是截切掉左部和右部的图像像素数。
③Y方向图像放大或缩小控制,原理是截切掉上部和下部的图像像素数。
CIGCTRL 全局控制寄存器
通过该寄存器对外接的camera进行复位,即控制CAMRESET信号的电平高低。
CICOTRGFMT C通道输出图像格式及大小配置寄存器
①可将C通道输出图像格式配置为YCbCr 4:2:2或YCbCr 4:2:0格式。
②可设置C通道输出图像X方向像素数。
③可设置C通道输出图像Y方向像素数。
④可设置C通道输出图像X方向镜像。
⑤可设置C通道输出图像Y方向镜像。
⑥可设置C通道输出图像180°旋转。
CIPRTRGFMT P通道输出图像大小配置寄存器
①可设置P通道输出图像X方向像素数。
②可设置P通道输出图像Y方向像素数。
③可设置P通道输出图像X方向镜像。
④可设置P通道输出图像Y方向镜像。
⑤可设置P通道输出图像180°旋转。
CICOSTATUS和CIPRSTATUS 状态寄存器
CICOSTATUS反映C通道数据的写入状态,即4组缓冲的哪一组;CIPRSTATUS反映P通道数据的写入状态,即4组缓冲的哪一组。用户程序采集图像数据时,应根据状态寄存器当前状态,决定从哪一组读出数据。
此外,CICOYSAl~CICOYSA4分别为C通道第1~4帧Y信号数据缓冲起始地址寄存器;CICOCBSAl~CICOCBSA4分别为C通道第1~4帧Cb信号数据缓冲起始地址寄存器;CICOCRSAl~CICOCRSA4分别为C通道第1~4帧Cr信号数据缓冲起始地址寄存器;CIPRCLRSAl~CIPRCLRSA4分别为P通道第1~4帧RGB信号数据缓冲起始地址寄存器。