*pPPI_CONTROL=Ox001c;
*pPPI_FRAME=240;//240行
*pPPI_COUNT=639;//每行传输640个采样点
*pPPI_DELAY=0;
之后,再以如下代码对DMA控制器进行配置,便可使DMAO控制器映射为PPI接口,以便使DAMO通过PPI读取的数据的存储地址指向二维数组ImagelnBuffer[240][640],并将DMA设置为二维传输模式。其代码为:
*pDMAO_CONFIG=0x00b2;
*pDMAO_PERIPHERAL_MAP=0x0;//配置为PPI
*pDMAO_START_ADDR=&ImageInBuffer[0][0];//指向要存放的首地址
*pDMAO_X_COUNT=640;//二维传送,内层计数
*pDMAO_X_MODIFY=0x1;//每次传送一个字节
*pDMAO_Y_COUNT=240;//外层计数
*pDMAO_Y_MODIFY=0x1;
然后再初始化定时器,使其能从图像显示模式恢复为默认模式。再通过可编程逻辑接口PF2,并通过PF3采用I2C总线工作方式对图像传感器MTOVlll进行配置,以将图像传感器MT9V111设置为ITU_R BT.656(YCbCr)的数据输出方式。最后,再将BF533的寄存器DMA0_CONFIG中的标志位DMA_EN和PPI_CONTROL中的标志位PORT_EN置1,同时开启DMA0和PPI接口,并将寄存器TIMER_ENABLE中相应的标志位置1以开启相应的定时器。最后等待DAM0接收完一帧图像数据后的中断。
3 图像的显示
图像显示中的TS35NDl501 TFTLCD是一款RGB数据接口的彩色图形点阵显示器,它的数据传输时序如图3所示。信号VSYNC与HSYNC分别为LCD的帧同步信号和行同步信号,DCLK为点阵数据传输时钟信号。其中TVP为帧同步信号的脉冲宽度,典型值为3倍行同步信号宽度(TH)。TVB为帧同步信号后沿时间,典型值为15个行脉冲宽度。TVF为帧同步信号的后沿时间,典型值为4个行脉冲宽度。在以上这三个信号时间内TFTLCD是不会接收要显示的数据的,故不显示的行数为3+4+15=22,也就是说,传输的图像数据中有22行的数据不会被显示到LCD上。所以定义一个无符号字符型二维数组DisplayBuffer[262][960]作为要显示数据的缓冲区,其中所定义数组的前22行是无用数据,后240行数据为要显示在TFTLCD上的图像数据。将从图像传感器获取的、存放在ImagelnBuffer中的UYVY (4:2:2)图像数据转换成LCD要显示的灰度图像数据格式(RGB24),并存储在二维数DisplayBuffer[262][960]中。