基于ARM9的CMOS图像采集系统的设计
像
pISR_CAM = (U32)CamIsr; //中断服务程序设置
CamCaptureStart(CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT); //开始扑捉图
Uart_Printf(\ while (1) {
if (flagCaptured_P) {
flagCaptured_P = 0;
// Uart_Printf(\ }
if ( Uart_GetKey() == ESC_KEY ) break; }
CamCaptureStop();
Uart_Printf(\ // CamPreviewIntMask();
while(camPviewStatus!=CAM_STOPPED) if (Uart_GetKey()== '\\r') break;
}
其中函数caminit()的功能是根据所采用的lcd显示屏来初始化相关的寄存器,函数的输入参数一共有六个分别为:编码目标的宽和高,预览目标宽和高(即LCD 尺寸),以及预览目标的水平和垂直偏移量,编码DMA和预览DMA的起始地址(即采集图像的缓存空间的首地址)。其函数原型如下所示:
void CamInit(U32 CoDstWidth, U32 CoDstHeight, U32 PrDstWidth, U32 PrDstHeight, U32 WinHorOffset, U32 WinVerOffset, U32 CoFrameBuffer, U32 PrFrameBuffer)
{、、、、、、、、、}
5.1.3 液晶显示程序设计 1)VCLK、CLKVAL、帧速率
TIMEGEN为LCD驱动器产生控制信号,如:VSYNC, HSYNC, VCLK, VDEN, 和 LEND等信号。这些信号与REGBANK(寄存器组)中的LCDCON1/2/3/4/5寄存器的配置密切相关。通过对REGBANK中的LCD控制寄存器进行编程配置,TIMEGEN可以产生不同的合适的控制信号,以支持许多不同类型的LCD驱动[14]。
–26–
基于ARM9的CMOS图像采集系统的设计
VSYNC信号(垂直同步信号)使得LCD行指针跳到显示器最顶端从新开始。VSYNC和HSYNC(水平同步信号)的同步脉冲由LCDCON2/3寄存器的HOZVAL域和LINEVAL域的配置决定。HOZVAL和LINEVAL也可以由LCD面板的尺寸通过以下公式得到:
HOZVAL?(Horizontal LINEVAL?(Verticaldisplaysize)?1 (5.1)
displaysize)?1 (5.2)
VCLK信号速率由LCDCON1寄存器的CLKVAL域决定。下述公式定义了VCLK与CLKVAL的相互关系,CLKVAL的最小值为0.
VCLK(Hz)?HCLK/[(CLKVAL?1)*2] (5.3)
HCLK/[(CLKVAL?1)*2] (5.4)
VCLK(Hz)?帧速率就是VSYNC信号频率,它和LCDCON1/2/3/4寄存器中的VSYNC,VBPD, VFPD,LINEVAL, HSYNC, HBPD, HFPD, HOZVAL, 以及 CLKVAL域有关。大多数LCD驱动器都有它们自己的额定帧速率。其公式如下:
FrameRate?1/{[VSPW?1)(VBPD?1)?(LINEVAL?1)?(VFPD?1)]?[(HSPW?1)?(HBPD?1)?(HFPD?1)?(HOZVAL?1)]?[2?(CLKVAL?1)/(HCLK)]} (5.5)
TFT LCD控制器支持1、2、4、8BPP的有调色板显示,16、24 BPP的无调色板显示。芯片提供256色调色板用于色彩映射的多种选择,提供使用者以灵活的操作。本设计采用的是16BPP的无调色板显示。
S3C2440A芯片提供电源使能功能(PWREN)。当PWREN被设置为PWREN信号使能时,LCD_PWREN引脚的输出值将被ENVID控制,也就是说,当LCD_PWREN引脚与LCD面板的电源开关控制引脚相连时,LCD面板的电源将被自动控制设为ENVID值。芯片同样支持INVPWREN位设置为PWREN信号的反向值。此功能只能当LCD面板具有自己的电源开关控制引脚,并已与LCD_PWREN引脚相连时有效。
2)LCD控制器
S3C2440A的LCD控制器是用于传递图像数据和一些如VFRAME, VLINE, VCLK, VM等必要控制信号。除了控制信号,还有用于传递图像数据的端口VD[23:0]。LCD控制器由REGBANK,LCDCDMA,VIDPRCS,TIMEGEN,和LPC3600(LCC3600)组成[15]。
REGBANK(寄存器组)有17个可编程设置寄存器和一个256*16位调色板内存,用于配置LCD控制器。
LCDCDMA是一个专用的DMA,用于自动地将图像数据由帧缓冲区传递到LCD驱动端。通过该特殊的DMA,图像数据可不用CPU干预而在液晶上显示。
–27–
基于ARM9的CMOS图像采集系统的设计
VIDPRCS从LCDCDMA那接收图像数据,并在将数据转化为合适的数据格式后(如4/8-bit单线扫描、4-bit双线扫描显示类型),通过VD[23:0]数据端口,发送到LCD驱动端。
TIMEGEN由可编程逻辑组成,它们用于支持不同LCD驱动通用的可变接口时序和速率要求。TIMEGEN模块产生VFRAME, VLINE, VCLK, VM等信号。
数据流描述如下:
LCDCDMA有一个FIFO空间,当该空间为空,或部分为空时,LCDCDMA请求以“突发内存传输模式(burst memory transfer mode)”从帧缓冲区获取数据(每个冲突请求连续地向内存提取4Words即16bytes,同时在总线传输过程中,总线控制权不转交给其他总线)。当内存控制器中的总线仲裁接受该传输请求时,主存将发送4个连续字到内部FIFO。FIFO总容量为28Words,其中12Words的FIFOL和16Words的FIFOH。S3C2440A芯片有2个FIFO,以支持双线扫描显示模型。当使用单线扫描时,只有一个FIFO(FIFOH)可被使用。本设计采用TFT LCD,下面对其控制器进行介绍。
(1) (LCDCON1)LCD控制寄存器1 本设计中,对LCDCON1控制如下:
rLCDCON1 =(LCD_PIXCLOCK<<8)|(3<<5)|(12<<1);
//CLKVAL确定为4.VCLK=HCLK/[(CLKVAL+1)*2] 16bpp(TFT)
(2) LCD控制寄存器2
本设计中,对LCDCON2控制如下:
rLCDCON2=(LCD_UPPER_MARGIN<<24)|((LCD_HEIGHT-1)<<14)|(LCD_LOWER_MARGIN<<;//VBPD(vertical back porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数,对应驱动中的upper_margin;
;//VFBD(vertical front porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数,对应驱动中的lower_margin;
;//VSPW(vertical sync pulse width):表示垂直同步脉冲的宽度,用行数计算,对应驱动中的vsync_len; 6)| (LCD_VSYNC_LEN<<0);
–28–
基于ARM9的CMOS图像采集系统的设计
(3)LCD控制寄存器3
本设计中,对LCDCON3控制如下:
rLCDCON3=(LCD_RIGHT_MARGIN<<19)|((LCD_WIDTH-1)<<8)|(LCD_LEFT_MARGIN<<0) ;//HBPD(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCLK的个数,对应驱动中的left_margin[16];
;//HFPD(horizontal front porth):表示一行的有效数据结束到下一个水平同步信号开始之间的VCLK的个数,对应驱动中的right_margin;
(4).LCD控制寄存器4
本设计中,对LCDCON4控制如下:
rLCDCON4 = (13 << 8) | (LCD_HSYNC_LEN << 0);
;//HSPW(horizontal sync pulse width):表示水平同步信号的宽度,用VCLK计算,对应驱动中的hsync_len;
(5) LCD控制寄存器5
本设计中,对LCDCON5的控制如下:
#define LCD_CON5((1<<11)|(1<<9)|(1<<8)|(1<<3)|(1<<0));//R:G:B=5:6:5 BLINE/HSYNC脉冲极性相反;VSYNC脉冲极性反相;允许PWREN信号;Swap使能
配置好lcd液晶屏的函数之后在摄像头采集图像的函数Test_CamPreview()进行调用就可以在液晶屏上显示相应的函数。
5.2 网络传输程序设计
TCP/IP协议栈是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络接口层、网络层、传输层、应用层 组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。其具体的结构层次如图5.2所示[17]。
–29–
基于ARM9的CMOS图像采集系统的设计
图5.2 TCP/IP栈结构
数据传输时有相对固定的传输格式:
数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)
IP数据包:IP头部+UDP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)
UDP数据信息:UDP头部+实际数据 (UDP头包括源和目标主机端口号、校验字等)
其中数据传输的层次结构如图5.3所示。
–30–