基于BF533 的 图像采集与显示
2012-02-22 15:38
513 查看
http://www.analogcn.com/Article/wz1/200912/20091214013347.html
嵌入式图像处理系统中,经常需要对图像进行采集,并将采集图像的处理结果显示在嵌入式系统的彩色LCD之上,以使人能够对处理后的图像结果进行直观的观察,进一步对图像识别的正确与否进行人工判断。本设计主要是将嵌入式系统应用到智能饮水控制系统之中,从而实现对水位状况的检测。本系统可对所采集的图像进行边缘提取,并将结果显示在TFTLCD上。该设计将BF533提供的PPI接口同时连接到CMOS图像传感器MT9Vlll和TFTLCD显示器TS35NDl50l上,并采用分时工作方式来实现对图像的采集和显示。
Blackfin处理器的PPI
(并行外设接口)是一种多功能的并行接口,它可以配置为8 bit和16 bit两种带宽,并可支持双向数据流,同时包含了3条同步线以及一个与外部时钟相连的时钟引脚。PPI可以对ITU—R BT.656数据进行无缝解码,可实现对输入视频流进行解码,并能自动忽略有效视频之外的任何信号。
1 系统结构
Blackfin系列处理器是ADI公司研制的一款嵌入式处理器,它集微控制器、DSP和媒体处理器的优势于身,可广泛应用于消费类多媒体、网络通信等多个领域。
MT9V111是Micron Technology公司推出的一款l/4英寸图像传感器,它能够输出分辨率为640x480的数码图像信号。通过以I2C总线对其IFP(Image Flow Processor)寄存器进行配置,即可输出ITU_R BT.656 (YCbCr)、YUV、565RGB、555RGB和444RGB等数据格式的视频信号。
TS35NDl50l是台湾台盛公司生产的一款以薄膜场效应晶体管为开关器件,能显示彩色图像的矩阵型液晶显示器。使用时可通过SPI总线对其内部的寄存器进行配置,如果没有对这些寄存器进行配置,该LCD将会自动运行在默认模式。在应用中,
可将图像传感器MT9V111与TFTLCD TS35ND1501同时连接在BF533的PPI总线上,并采用分时方式完成图像的采集与显示,其系统硬件框图如图1所示。图中,ADG704为4选1的四通多路复用器,用以选择图像传感器和TFTLCD时对PPI总线提供的时钟进行切换。在图像采集方面,可将BF533的可编程I/O接口PF4与图像传感器的SCLK端口相连,并将PF2与SDATA相连,同时采用I2C总线方式实现对图像传感器MT9Vlll的配置。将PF0置l,PFI清0,可使FTFLCD处于复位状态,图像传感器处于工作状态。
这时,ADG704的接口S2与接口D处于连通状态。而将图像传感器MT9V111提供的PIXCLK时钟信号提供给BF533的PPI_CLK接口,则可实现BF533对图像传感器传来数据的正确接收。图像显示可采用BF533内部提供的TIMERl作为帧同步信号,TIMER2作为行同步信号来控制图像的显示,不对TS35NDl501进行配置,系统将采用默认工作方式。进行图像显示时,可将可编程I/O接口PF0清0,以使图像传感器处于复位状态,将PFl置1使TFTLCD处于工作状态,这时,
ADG704的接口S3与接口D处于连通状态,从而为BF533的PPI_CLK接口提供数据输出的20MHz时钟信号。需要指出,当有更多的外设需要和BF533通信时,采用CPLD进行逻辑扩展,可以解决GPIO接口不足的问题。
2 图像的采集
在首次进行图形采集和图像显示之前,首先应对BF533的PLL、EBIU和系统的SDRAM进行设置,以使BF533能够正常稳定的工作。
图2所示是图像采集的软件流程。通过设置BF533的FIO_DIR,FIO_FLAG_C,FIO_LAG_S寄存器,可使可编程I/O接口PFO为高电平,PF1为低电平,从而使图像传感器处于工作状态,TFTLCD处于复位状态。然后,就可以采用如下代码来实现对BF533的PPI接口初始化。
*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]中。
通过设置BF533的
FIO_DIR,
FIO_FIAG_C,
FIO_FLAG_S
寄存器可使可编程I/O接口PF0为低电平,PF1为高电平,从而使LCD处于工作状态,图像传感器处于复位状态。之后,可以用如下代码对PPI接口进行配置。
*pPPI_CONTROL=0x009e;//POLSIPACK_EN |Ox0010 | XFR_TYPE | PORT_DIR;
*pPPI_DELAY=0xcb;//在进行写操作前延时106个时钟周期
*pPPI_COUNT=959;//每行传输960个数据点然后,可采用如下代码对DMA0控制器进行配置,以将DAM0控制器配置为RESTART和FLOW_AUTO模式,从而使它能够循环实现对缓冲区DisplavBuffer中的数据的输出。
*pDMA0_PERIPHERAL_MAP=Ox0;//映射为PPI接口
*pDMA0_CONFIG=0x1030;//FLOW_AUTO |RESTART | DMA2D | WDSIZE_8;
*pDMA0_START_ADDR=&DisplayBuffer[0][0];//要显示数据的首地址
*pDMA0_X_COUNT=960;
*pDMA0_X_MODIFY=1;
*pDMA0_Y_COUNT=262;
*pDMA0_Y_MODIFY=1;
对定时器TIMER1,TIMER2进行配置,可以使其对TFTLCD提供行同步和帧同步信号,以将其设置为PWM_OUT输出模式,并将定时时钟设置为采用PPI_CLK接口输入的20 MHz时钟信号,其代码如下:
*pTIMER1_PERIOD=1224;//TH
*pTIMER1_WIDTH=5;//THP,最小值
*pTIMER1_CONFIG=0x02a9;//EMU_RUN |CLK_SEL|TIN_SELIPERIOD_CNTlPWM_OUT
*pTIMER2 PERl0D=320688;//TV=262*TH=262*1224=320668
*pTIMER2_WIDTH=3672;//TVP=3*TH=3*1224=3672
*pTIMER2_CONFIG=0x02a9;
最后,再启动PPI接口、DAM0控制器和相应的定时器,开始图像的显示,并延时5秒,以使图像在LCD上稳定的显示5秒钟。其显示软件流程图如图4所示。
4 结束语
经过调试和修改,该系统能够实现对图像的采集并正确显示图像的处理结果,本设计可以满足预期的数据显示需求。本文经过对BF533的PPI接口进行合理应用,实现了对图像采集和显示的分时工作,能够满足一些情况下的应用。因为BF533只有一路PPI接口,所以无法实现对采集图像的实时显示。而要实现的对所采集数据的实时显示,则可采用BF561DSP,该DSP可提供两路PPI接口,因而能够满足图像的采集与实时显示
嵌入式图像处理系统中,经常需要对图像进行采集,并将采集图像的处理结果显示在嵌入式系统的彩色LCD之上,以使人能够对处理后的图像结果进行直观的观察,进一步对图像识别的正确与否进行人工判断。本设计主要是将嵌入式系统应用到智能饮水控制系统之中,从而实现对水位状况的检测。本系统可对所采集的图像进行边缘提取,并将结果显示在TFTLCD上。该设计将BF533提供的PPI接口同时连接到CMOS图像传感器MT9Vlll和TFTLCD显示器TS35NDl50l上,并采用分时工作方式来实现对图像的采集和显示。
Blackfin处理器的PPI
(并行外设接口)是一种多功能的并行接口,它可以配置为8 bit和16 bit两种带宽,并可支持双向数据流,同时包含了3条同步线以及一个与外部时钟相连的时钟引脚。PPI可以对ITU—R BT.656数据进行无缝解码,可实现对输入视频流进行解码,并能自动忽略有效视频之外的任何信号。
1 系统结构
Blackfin系列处理器是ADI公司研制的一款嵌入式处理器,它集微控制器、DSP和媒体处理器的优势于身,可广泛应用于消费类多媒体、网络通信等多个领域。
MT9V111是Micron Technology公司推出的一款l/4英寸图像传感器,它能够输出分辨率为640x480的数码图像信号。通过以I2C总线对其IFP(Image Flow Processor)寄存器进行配置,即可输出ITU_R BT.656 (YCbCr)、YUV、565RGB、555RGB和444RGB等数据格式的视频信号。
TS35NDl50l是台湾台盛公司生产的一款以薄膜场效应晶体管为开关器件,能显示彩色图像的矩阵型液晶显示器。使用时可通过SPI总线对其内部的寄存器进行配置,如果没有对这些寄存器进行配置,该LCD将会自动运行在默认模式。在应用中,
可将图像传感器MT9V111与TFTLCD TS35ND1501同时连接在BF533的PPI总线上,并采用分时方式完成图像的采集与显示,其系统硬件框图如图1所示。图中,ADG704为4选1的四通多路复用器,用以选择图像传感器和TFTLCD时对PPI总线提供的时钟进行切换。在图像采集方面,可将BF533的可编程I/O接口PF4与图像传感器的SCLK端口相连,并将PF2与SDATA相连,同时采用I2C总线方式实现对图像传感器MT9Vlll的配置。将PF0置l,PFI清0,可使FTFLCD处于复位状态,图像传感器处于工作状态。
这时,ADG704的接口S2与接口D处于连通状态。而将图像传感器MT9V111提供的PIXCLK时钟信号提供给BF533的PPI_CLK接口,则可实现BF533对图像传感器传来数据的正确接收。图像显示可采用BF533内部提供的TIMERl作为帧同步信号,TIMER2作为行同步信号来控制图像的显示,不对TS35NDl501进行配置,系统将采用默认工作方式。进行图像显示时,可将可编程I/O接口PF0清0,以使图像传感器处于复位状态,将PFl置1使TFTLCD处于工作状态,这时,
ADG704的接口S3与接口D处于连通状态,从而为BF533的PPI_CLK接口提供数据输出的20MHz时钟信号。需要指出,当有更多的外设需要和BF533通信时,采用CPLD进行逻辑扩展,可以解决GPIO接口不足的问题。
2 图像的采集
在首次进行图形采集和图像显示之前,首先应对BF533的PLL、EBIU和系统的SDRAM进行设置,以使BF533能够正常稳定的工作。
图2所示是图像采集的软件流程。通过设置BF533的FIO_DIR,FIO_FLAG_C,FIO_LAG_S寄存器,可使可编程I/O接口PFO为高电平,PF1为低电平,从而使图像传感器处于工作状态,TFTLCD处于复位状态。然后,就可以采用如下代码来实现对BF533的PPI接口初始化。
*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]中。
通过设置BF533的
FIO_DIR,
FIO_FIAG_C,
FIO_FLAG_S
寄存器可使可编程I/O接口PF0为低电平,PF1为高电平,从而使LCD处于工作状态,图像传感器处于复位状态。之后,可以用如下代码对PPI接口进行配置。
*pPPI_CONTROL=0x009e;//POLSIPACK_EN |Ox0010 | XFR_TYPE | PORT_DIR;
*pPPI_DELAY=0xcb;//在进行写操作前延时106个时钟周期
*pPPI_COUNT=959;//每行传输960个数据点然后,可采用如下代码对DMA0控制器进行配置,以将DAM0控制器配置为RESTART和FLOW_AUTO模式,从而使它能够循环实现对缓冲区DisplavBuffer中的数据的输出。
*pDMA0_PERIPHERAL_MAP=Ox0;//映射为PPI接口
*pDMA0_CONFIG=0x1030;//FLOW_AUTO |RESTART | DMA2D | WDSIZE_8;
*pDMA0_START_ADDR=&DisplayBuffer[0][0];//要显示数据的首地址
*pDMA0_X_COUNT=960;
*pDMA0_X_MODIFY=1;
*pDMA0_Y_COUNT=262;
*pDMA0_Y_MODIFY=1;
对定时器TIMER1,TIMER2进行配置,可以使其对TFTLCD提供行同步和帧同步信号,以将其设置为PWM_OUT输出模式,并将定时时钟设置为采用PPI_CLK接口输入的20 MHz时钟信号,其代码如下:
*pTIMER1_PERIOD=1224;//TH
*pTIMER1_WIDTH=5;//THP,最小值
*pTIMER1_CONFIG=0x02a9;//EMU_RUN |CLK_SEL|TIN_SELIPERIOD_CNTlPWM_OUT
*pTIMER2 PERl0D=320688;//TV=262*TH=262*1224=320668
*pTIMER2_WIDTH=3672;//TVP=3*TH=3*1224=3672
*pTIMER2_CONFIG=0x02a9;
最后,再启动PPI接口、DAM0控制器和相应的定时器,开始图像的显示,并延时5秒,以使图像在LCD上稳定的显示5秒钟。其显示软件流程图如图4所示。
4 结束语
经过调试和修改,该系统能够实现对图像的采集并正确显示图像的处理结果,本设计可以满足预期的数据显示需求。本文经过对BF533的PPI接口进行合理应用,实现了对图像采集和显示的分时工作,能够满足一些情况下的应用。因为BF533只有一路PPI接口,所以无法实现对采集图像的实时显示。而要实现的对所采集数据的实时显示,则可采用BF561DSP,该DSP可提供两路PPI接口,因而能够满足图像的采集与实时显示
相关文章推荐
- 基于NiosⅡ的图像采集和显示的实现
- 基于ADV7183a和BF533的图像采集调试记录
- 基于嵌入式Linux的视频采集系统7---视频图像格式转化
- 基于Video4Linux 的USB 摄像头图像采集实现
- Basler工业相机基于opencv 采集图像
- 基于Video4Linux的USB摄像头图像采集实现
- 基于DCMTK的DICOM医学图像显示及其调窗方法研究
- 基于ROS indigo版本下kinect图像显示
- 基于Video4linux的视频采集,用SDL显示
- 基于AXI VDMA的图像采集系统
- 基于ZedBoard的Webcam设计(三):视频的采集和动态显示
- dsp下基于双循环缓冲队列的视频采集和显示记录
- USB Camera 采集图像预览测试程序(基于linux3.9.7 QT210)
- 基于Video4Linux的USB摄像头图像采集实现
- 图像处理 基于Visual C++编程 学习笔记 (2)显示bmp图像
- 图像处理 基于Visual C++编程 学习笔记 (3)显示灰度图像和二值化图像
- FPGA设计——全局曝光CMOS图像采集与USB2.0显示
- 基于Video4Linux的USB摄像头图像采集实现
- 基于FPGA的温度采集显示与报警
- OpenCV + VTK + WebCam 采集和显示图像