引言
在嵌入式设计中常常会使用LCD屏,现在常用的屏大部分都是高性能的。因为LCD屏的生产厂商很多,标准也不统一,LCD屏往往不能与LCD控制器无粘合连接,所以在使用LCD屏时,厂家还会推荐使用其专为LCD屏是设计的时序芯片,例如,Sharp的LCD LQ035Q7DB02配套的控制器为LZ9FC22;日本的LCD屏是16位色的,本身价格很高,控制器成本也非常高,性能却不见得好,采用高性能的24位真彩色屏是比较理想的,但接口逻辑需要重新设计。
1 RGB565-RGB888的转换
以友达光电AUO生产的A06QU01[1]为例,这是一种24位的TFT真彩屏,分辨率为320×240,每个象素由RGB888表示,其控制时序如图1所示,LCD要求的时序由帧同步(VSYNC)、行同步(HSYSNC)、比特时钟(DCLK)及数据(Data[0:7])构成,帧同步和行同步指示每一帧和每一行的开始。A06QU01每帧240行,每行320个象素,每个像素由依次产生的8b红、8b绿、8b蓝(R1,G2,B3,R4,G5,B6…)构成,所以称为RGB888。
以PXA25x为代表的嵌入式处理器拥有一个LCD控制器,可以将这个控制器配置为最高16位的TFT LCD屏控制器,其控制时序如图1所示,LCD要求的时序由帧同步(VSYNC)、行同步(HSYSNC)、点时钟(PCLK)及数据(Data[0:15]构成,帧同步和行同步指示每一帧和每一行的开始。对于A06QU01,每帧将有240行,每行有320个像素,每个像素由5b红、6b绿、5b蓝构成16位数据,称为RGB565。
将RGB565转换为RGB888要解决2个问题:
1)比特时钟3倍频。LCD控制器每一个像素用一个时钟1次送出16b数据,而LCD撩扛鱿袼匦枰?个时钟,每次获得8b。这样就需要产生1个3倍于点时钟PCLK的时钟。
2)16b到24b数据分解。在LCD控制器送出16b数据时,需要缓存,并分解出RGB信号分别送出,5b红、6b绿、5b蓝构成16位数据可以采用补0的方法,构成8b红、8b绿、8b蓝。数据高位补0时色彩较柔和,低位补0时彩色较艳丽。
通常情况下,使用模拟锁相环技术可以实现均匀倍频,在这个设计中CONTROL ENGINEERING China版权所有,3倍频时钟与RGB数据必须同步,否则会出现颜色错位;同时锁相环还需要数据分解电路配合使用,这样一个数字和模拟混合的电路会增加成本CONTROL ENGINEERING China版权所有,因而特别设计使用了数字电路实现非均匀3倍频。具体方案是:使用一个大于6小于7倍的LCD屏比特时钟作为CPLD的主控制时钟,LCD屏的时钟频率约为7M赫兹,所以选择CPLD的主控制时钟频率为48M赫兹。如图1所示,pclk为控制器输出的点时钟,pdata为RBG565数据,pclkout和pdataout是送往LCD的信号CONTROL ENGINEERING China版权所有,x7pclk为CPLD的定时时钟,在pclk上升沿将pdata存入缓冲器pdatabuf,并将内部状态位datavalid置位,在x7pclk的上升沿,如果检测到datavalid为高,则使pclkout为低,将缓冲器中的数据取出高5位红色信号CONTROL ENGINEERING China版权所有,补零后送到pdataout,并将datavalid置为低,在下一个x7pclk的上升沿将pclkout置高,8b数据送出到LCD屏。使用这种方法依次将绿色及蓝色信号送出,在蓝色信号送出后,保持pclkout为高CONTROL ENGINEERING China版权所有,直到下一个datavalid为高,进入下一次转换,从图1中可以看出,数字3倍频信号pclkout不是均匀的,蓝色数据时钟的占空比不是50%。根据LCD屏数据手册的要求,pclkout的占空比变化容许的范围是40%-60%,因而只要调整好x7pclk的时钟频率,还是比较容易产生符合占空比要求的pclkout时钟的,LCD屏正常工作还需要帧同步(VSYNC)和行同步(HSYSNC)信号CONTROL ENGINEERING China版权所有,这些信号可以由软件驱动程序编程产生。
2 LCD背光及LCD偏置的电源产生器
LCD屏需要特殊的供电控制工程网版权所有,用于背景照明和LCD偏置,现在使用的小尺寸LCD大多数使用LED作为背光,以及-10V的偏置电压,本设计使用的LCD屏是2路各4个白光LED串联,每路需要的供电电压约为10V,电流为20mA。LCD偏置电压为-10V,为高频小功率开关晶体管。C4和R1构成的微分电路可以提高V1的导通和关闭速度,有