转载:http://blog.csdn.net/lwj103862095/article/details/7858928
1、LCD的种类
LCD(LiquidCrystal Display),即液晶显示器,是一种采用了液晶控制透光技术来实现色彩的显示器。LCD有多种类型:比如STN、TFT、LTPS、OLED等,各有优缺点。
2、LCD的接口
CPU或显卡发出的图像数据是TTL信号(0~5V、0~3.3V、0~2.5V或0~1.8V),LCD本身接收的也是TTL信号。但是TTL信号在高速率的长距离传输时性能不佳,抗干扰能力比较差,于是人们提出了多种接口,比如:LVDS、TDMS、GVIF等。它们实际上只是将CPU或显卡发出的TTL新红编码成个种信号便于传输,在LCD那边将接收到的信号进行解码得到TTL信号。市场上,大多数LCD都采用模拟信号接口,LCD需要先通过ADC将模拟信号转换为数字信号才能显示。
这里我们只介绍关于TFT LCD的TTL信号:
VSYNC: 垂直同步信号;
HSYNC: 水平同步信号;
HCLK: 像素时钟信号;
VD[23:0]: 24位数据信号
LEND: 行结束信号;
PWREN: 电源开关信号;
3、S3C2440LCD控制器介绍
对于TFTLCD
(1)、支持单色(1BPP)、4级灰度(2BPP)、16级灰度(4BPP)、256色(8PP)的调色板显示模式;
(2)、支持64K(16BPP)和16M(24BPP)色,非调色板显示模式;
(3)、支持分辨率640×480,320×240及其他多种规格的LCD;
(4)、虚拟屏幕最大可达4MB;
(5)、对于64K色,分辨率有2048×1024等多种。
4、S3C2440LCD控制器的内部结构如下图所示:
REGBANK是LCD控制器的寄存器组,包含有17个寄存器以及一块256×16的调色板内存,用来设置各项参数。而LCDCDMA则是LCD控制器专用的DMA信道,可以自动地从系统总线(SystemBus)上取到图像数据,这使得显示图像时,不需要CPU的干涉。VIDPRCS将LCDCDMA中的数据组合成特定的格式(如:4位单扫、4位双扫、8位单扫),然后从VD[23:0]发送给LCD屏。同时TIMEGEN和LPC3600负责产生LCD屏所需的控制时序,例如:VSYNC、HSYNC、VCLK、VDEN,然后从VIDEOMUX发送给LCD屏。其中,LPC3600专用于SECTFT LCD。
LCDCDMA 中有二个FIFO,FIFOH容量为16个字(1个字为4个字节),FIFOL容量为12个字。当使用“双扫”方式时,FIFOH、FIFOL分别用于传输上半屏、下半屏数据;当使用“单扫”方式时,只用到FIFOH。当FIFO为空或者其中的数据已经减少到设定的阈值时,LCDCDMA自动发起 DMA 传输从内存中获得图像数据。
5、显示器上数据的组织格式
一幅图像被称为一帧(Frame),每帧由多行组成,每行由多个像素组成,每个像素由颜色使用若干位的数据来表示。对于256色显示器,每个像素由8位来表示,称为8PP。
显示器从屏幕的左上方开始,一行一行地取得每个像素的数据并显示出来,当显示到一行的最右边时,跳到下一行的最左边开始显示下一行;当显示完所有行后,跳到最左上方,开始下一帧。显示器沿着“Z”字行的路线进行扫描,使用HSYNC表示:“是跳到最左边的时候了”,使用VSYNC表示:“是跳到最上边的时候了“。
VSYNC 信号出现的频率表示一秒钟内能显示多收帧图像,称为垂直频率或场频率,这就是我们常说的”显示器的频率“;HSYNC信号出现的频率称为水平频率。
6、TFTLCD 的操作。
刚才说了,每个VSYNC信号表示”一帧信号的开始“;每个HSYNC信号表示”一行数据的开始“;无论这些数据是否有效,每个VCLK信号表示正在传输一个像素的数据,无论它是否有效,数据是否有效只是对CPU的LCD控制器来说的,LCD根据VSYNC、HSYNC、VCLK不停地读取总线数据来显示。
下面详解LCD时序图,请参考下图;
(1)、VSYNC信号有效时,表示一帧数据的开始;
(2)、VSPW(垂直同步信号脉宽)表示VSYNC信号的脉冲宽度为 (VSPW+1)个 HSYNC信号周期,即(VSPW+1)行,
这个(VSPW+1)行的数据无效。
(3)、VSYNC信号脉冲之后,还要经历(VBPD+1)个HSYNC信号周期,有效的行数据才出现。所以,在VSYNC信号有效之后,总共还要经过(VSPW+1+VBPD+1)个无效行,这时第一个有效行才出现。
(4)、随后即连续发出(LINEVAL+1)行的有效数据;
(5)、最后是(VFPD+1)个无效行,完整的一帧数据就结束了。紧接着是下一个帧的数据了(即下一个VSYNC信号)
下面是深入到一行中像素数据的传输过程,它与上面行数据的传输过程相似。
(1)、HSYNC信号有效时,表示一行数据的开始;
(2)、HSPW(水平同步信号脉宽)表示HSYNC信号脉冲宽度为(HSPW+1)个VCLK信号周期,即(HSPW+1)个像素,这(HSPW+1)个像素的数据无效。
(3)、HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现。所以,在HSYNC信号有效之后,总共还要经过(HSPW+1+HBPD+1)个无效的像素数据之后,第一个有效的像素才出现。
(4)、随后即连续发出(H0ZVAL+1)个像素的有效数据。
(5)、最后是(HFPD+1)个无效的像素,完整的一行结束,紧接着就是下一行的数据了(即下一个HSYNC信号)。
7、像素格式
显示器上每个像素的颜色由3部分组成,Red、Green、Blue。比如可以根据颜色的浓烈程度将三原色都分成256个级别(0~255),则可以使用255级的红色、255级的绿色、255级的蓝色组合成白色,可以使用0级的红色、0级的绿色、0级的蓝色组合成黑色。
下面讲解16M(24BPP)、64K(16BPP)和256色(8PP)模式下,图像数据的存储格式。
(1)16M(24BPP)色
16M(24BPP)的显示模式就是使用24位的数据来表示一个像素的颜色,每种颜色使用8位。LCD控制器从内存中获得某个像素的24位颜色值后,直接通过VD[23:0]数据线发送给LCD。为了方便DMA传输,在内存中使用4个字节来表示一个像素,其中3个字节从高到低分别表示红、绿、蓝,剩余的1个字节数据无效。是最低字节还是最高字节无效,这是可以选择的。
内存中像素的排列格式如下:
(2)64K(16BPP)色
64K(16BPP)色的显示模式就是使用16位的数据来表示一个像素的颜色。这16位数据格式又分为两种:5:6:5,5:5:5:1,前者使用高5位来表示红色,中间6位来表示绿色,低5位来表示蓝色;后者的高15位从高到低分成3个5位来表示红色、绿色、蓝色,最低那位表示透明度。故,5:5:5:1的格式也被称为 RGBA格式(A:Alpha,表示透明度)
一个4字节可以表示两个16BPP的像素,使用搞2字节还是低2字节来表示第一个像素,这也是可以选择的。
内存中像素的排列格式如下:
(2)、256色(8BPP)
256色(8BPP)的显示模式就是在使用8位的数据来表示一个像素的颜色,但是三种颜色平均下来,每种颜色只能使用不到3位的数据来表示,每个原色最多不过8个级别,这不足以表示更丰富的颜色。
为了解决8BPP 模式显示能力太弱的问题,需要使用调色板(即一块内存)。每个像素对应的8位数据不再用来表示RGB三种原色,而是表示它在调色板中国的索引值,要显示这个像素时,使用这个索引值从调色板中取得RGB颜色值。调色板是一块256×16的内存,使用16BPP的格式来表示256色(8BPP)显示模式下各个索引值的颜色。这样,即使使用256色(8BPP)的显示模式,最终出现在LCD数据总线上的仍是16BPP的数据。
一个4字节可以表示4个8BPP的像素,字节与像素的对应顺序是可以选择的,如图所示:
内存中像素的排列格式如下:
调色板中数据存放的格式与上面所描述的16BPP显示模式相似,也分为两种格式:5:6:5,5:5:5:1。调色板中数据的格式与LCD 数据线VD[23:0]是对应的。如下图所示:
没有用到的数据线其电平为0,所以无论是24BPP模式还所是16BPP、8BPP模式,24根数据线VD[23:0] 都被用到了。事实上,一个TFT LCD 能处理的像素位宽是固定的,即它数据线的数目是固定的,红、绿、蓝 3类信号线总是连接到各字节中的高位;软件设置24BPP、16BPP、8BPP 以及调色板等,只会影响到色值的精度而已。
————————————————————————————————————————————————
好了,由于LCD的内容比较多,我们分开二部分来讲解它,第二部分我们将要介绍的内容是LCD有关的控制寄存器