基于Blackfin DSP的TFT LCD液晶接口设计

网友投稿 200 2022-11-15

基于Blackfin DSP的TFT LCD液晶接口设计

Blackfin DSP处理器支持二维DMA传输,特别适合于视频数据传输。二维DMA的相关控制寄存器如下:

配置寄存器(DMAx_CONFIG/MDMA_yy_CONFIG):设置二维DMA使能方式,中断产生方式。

内层循环地址增量寄存器(DMAx_X_MODIFY/MDMA_yy_X_MODIFY):保存每一次内层循环计数器加1后DMA操作地址在内存中的增量,此增量应该是二维DMA操作的数据单元长度的整数倍。

外层循环计数寄存器(DMAx_Y_COUNT/MDMA_yy_Y_COUNT):保存外层循环的数目。

外层循环地址增量寄存器(DMAx_Y_MODIFY/MDMA_yy_Y_MODIFY):保存每一次外层循环计数器加1后DMA操作地址在内存中的增量,可以是负值,此增量应该是二维DMA操作的数据单元长度的整数倍。

液晶时序如图1和图2所示。

2 系统总体设计

该液晶屏的输入格式为RGB666格式,而ADSPBF532的PPI接口数据线只有16位,根据人眼的视觉特性(对绿色最敏感),将红色和蓝色的最高位和最低位分别接在一起,其他数据线对应连接。

液晶所需的同步信号HS和VS分别由ADSPBF532的定时器1和定时器2产生。通过配置ADSPBF532定时器的相关寄存器可以精确地控制输出PWM

波的有效沿,周期和占空比,完全匹配液晶时序。

系统总体设计框图如图3所示。

在外部25MHz时钟的驱动下DSP按照寄存器的配置输出相应的同步信号,同时将SDRAM对应区域中的数据从PPI口输出。

(1)显示缓存数据的存储。

该液晶每行800点,每个点对应16位数据,因此每行需要800×2 bit。每屏需要525行,包括前消隐23行,中间480行有效数据,后消隐22行,因此开辟显示缓存大小为525×800×2 bit。为了操作方便,可定义一个二维数组,二维数组中的数据与TFTLCD上的点具有对应关系(数组中每两个字节对应LCD上的一个点)。由于需要将显示缓存定义在SDRAM中,因此在工程中需要添加ldf文件,将显示缓存指定存储在SDRAM中。

缓存数组的定义如下

(2)定时器初始化。

使用定时器1和定时器2分别作为行同步信号和场同步信号,根据液晶时序配置定时器寄存器,包括输出时钟周期,脉冲宽度,有效沿,PWM模式输出等。为了与液晶同步,使用PPI的输入时钟驱动定时器。

Blackfin定时器寄存器设置如下

(3)PPI初始化。

使用通用模式(GP模式)输出数据,两个外部帧同步信号,PPI_FS1和PPI_FS2下降沿有效,PPI_DEIAY设置延时时钟个数(行同步变高到数据输出间的时钟个数)。

Blackfin PPI寄存器设置如下

* pPPI_DELAY=45;//输出数据前的延时

* pPPI_COUNT=800*2-1;//每行传输字节数,比实际值小1

注意:AT070TN83 V.1手册中给出的输出数据前的延时参数为40个时钟周期,但实际使用中发现设为40时屏幕显示图像左偏,说明延时不够,经试验应为45个时钟周期。

(4)DMA初始化。

使用PPI输出数据时必须使用DMA传输。采用寄存器配置模式,配置DMA传输的起始地址、传输的数据个数、地址增量和传输方式。本系统设置为二维传输方式,行地址增量设置为2(16位传输,2 bit),纵向地址增量设置为2(上一行最后传输的地址与下一行起始地址差,2 bit),DMA传输模式设置为自动缓冲模式。

Blackfin DMA寄存器设置如下

(5)主程序流程图,如图4所示。

主程序中首先初始化DSP(包括SDRAM,EBIU等),定时器,PPI寄存器和PPI DMA寄存器配置的先后顺序要求不是绝对的,但是PPI DMA和定时器的使能必须在最后,因为定时器使能后将触发DMA开始传输数据,所以必须在使能PPI DMA之后再使能定时器。需要改变显示内容时改变对应数组中数据即可。

4 结束语

经调试,液晶正确显示,并且屏幕稳定无闪烁,成功应用在某仪器系统中。由于Blackfin系列处理器的内核都是相同的,接口操作类似,因此文中介绍的方法对Blackfin系列处理器的液晶接口设计具有参考价值。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Vue中vue.config的配置
下一篇:Java动态脚本Groovy
相关文章

 发表评论

暂时没有评论,来抢沙发吧~