S3C2400之LCD控制器详解一

来源:互联网 发布:域名注册服务机构 编辑:程序博客网 时间:2024/05/17 06:48

1LCD的种类

LCDLiquidCrystal Display),即液晶显示器,是一种采用了液晶控制透光技术来实现色彩的显示器。LCD有多种类型:比如STNTFTLTPSOLED等,各有优缺点。

2LCD的接口

CPU或显卡发出的图像数据是TTL信号(0~5V0~3.3V0~2.5V0~1.8V),LCD本身接收的也是TTL信号。但是TTL信号在高速率的长距离传输时性能不佳,抗干扰能力比较差,于是人们提出了多种接口,比如:LVDSTDMSGVIF等。它们实际上只是将CPU或显卡发出的TTL新红编码成个种信号便于传输,在LCD那边将接收到的信号进行解码得到TTL信号。市场上,大多数LCD都采用模拟信号接口,LCD需要先通过ADC将模拟信号转换为数字信号才能显示。

这里我们只介绍关于TFT LCDTTL信号:

VSYNC:      垂直同步信号;

HSYNC:      水平同步信号;

HCLK:           像素时钟信号;

VD[23:0]:      24位数据信号

LEND:        行结束信号;

PWREN:    电源开关信号;

3S3C2440LCD控制器介绍

对于TFTLCD

1)、支持单色(1BPP)、4级灰度(2BPP)、16级灰度(4BPP)、256色(8PP)的调色板显示模式;

2)、支持64K16BPP)和16M24BPP)色,非调色板显示模式;

3)、支持分辨率640×480320×240及其他多种规格的LCD

4)、虚拟屏幕最大可达4MB

5)、对于64K色,分辨率有2048×1024等多种。

4S3C2440LCD控制器的内部结构如下图所示:

       REGBANKLCD控制器的寄存器组,包含有17个寄存器以及一块256×16的调色板内存,用来设置各项参数。而LCDCDMA则是LCD控制器专用的DMA信道,可以自动地从系统总线(SystemBus)上取到图像数据,这使得显示图像时,不需要CPU的干涉。VIDPRCSLCDCDMA中的数据组合成特定的格式(如:4位单扫、4位双扫、8位单扫),然后从VD[23:0]发送给LCD屏。同时TIMEGENLPC3600负责产生LCD屏所需的控制时序,例如:VSYNCHSYNCVCLKVDEN,然后从VIDEOMUX发送给LCD屏。其中,LPC3600专用于SECTFT LCD

                             

       LCDCDMA 中有二个FIFOFIFOH容量为16个字(1个字为4个字节),FIFOL容量为12个字。当使用双扫方式时,FIFOHFIFOL分别用于传输上半屏、下半屏数据;当使用单扫方式时,只用到FIFOH。当FIFO为空或者其中的数据已经减少到设定的阈值时,LCDCDMA自动发起 DMA 传输从内存中获得图像数据。

5、显示器上数据的组织格式

    一幅图像被称为一帧(Frame),每帧由多行组成,每行由多个像素组成,每个像素由颜色使用若干位的数据来表示。对于256色显示器,每个像素由8位来表示,称为8PP

    显示器从屏幕的左上方开始,一行一行地取得每个像素的数据并显示出来,当显示到一行的最右边时,跳到下一行的最左边开始显示下一行;当显示完所有行后,跳到最左上方,开始下一帧。显示器沿着“Z”字行的路线进行扫描,使用HSYNC表示:是跳到最左边的时候了,使用VSYNC表示:是跳到最上边的时候了

      VSYNC 信号出现的频率表示一秒钟内能显示多收帧图像,称为垂直频率或场频率,这就是我们常说的显示器的频率HSYNC信号出现的频率称为水平频率。

6TFTLCD 的操作。

    刚才说了,每个VSYNC信号表示一帧信号的开始;每个HSYNC信号表示一行数据的开始;无论这些数据是否有效,每个VCLK信号表示正在传输一个像素的数据,无论它是否有效,数据是否有效只是对CPULCD控制器来说的,LCD根据VSYNCHSYNCVCLK不停地读取总线数据来显示。

下面详解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部分组成,RedGreenBlue。比如可以根据颜色的浓烈程度将三原色都分成256个级别(0~255),则可以使用255级的红色、255级的绿色、255级的蓝色组合成白色,可以使用0级的红色、0级的绿色、0级的蓝色组合成黑色。

下面讲解16M24BPP)、64K16BPP)和256色(8PP)模式下,图像数据的存储格式。

116M24BPP)色

      16M24BPP)的显示模式就是使用24位的数据来表示一个像素的颜色,每种颜色使用8位。LCD控制器从内存中获得某个像素的24位颜色值后,直接通过VD[23:0]数据线发送给LCD。为了方便DMA传输,在内存中使用4个字节来表示一个像素,其中3个字节从高到低分别表示红、绿、蓝,剩余的1个字节数据无效。是最低字节还是最高字节无效,这是可以选择的。

内存中像素的排列格式如下:

 

264K16BPP)色

      64K16BPP)色的显示模式就是使用16位的数据来表示一个像素的颜色。这16位数据格式又分为两种:5:6:55:5:5:1,前者使用高5位来表示红色,中间6位来表示绿色,低5位来表示蓝色;后者的高15位从高到低分成35位来表示红色、绿色、蓝色,最低那位表示透明度。故,5:5:5:1的格式也被称为 RGBA格式A:Alpha,表示透明度)

    一个4字节可以表示两个16BPP的像素,使用搞2字节还是低2字节来表示第一个像素,这也是可以选择的。

内存中像素的排列格式如下:

2)、2568BPP

      256色(8BPP)的显示模式就是在使用8位的数据来表示一个像素的颜色,但是三种颜色平均下来,每种颜色只能使用不到3位的数据来表示,每个原色最多不过8个级别,这不足以表示更丰富的颜色。

   为了解决8BPP 模式显示能力太弱的问题,需要使用调色板(即一块内存)。每个像素对应的8位数据不再用来表示RGB三种原色,而是表示它在调色板中国的索引值,要显示这个像素时,使用这个索引值从调色板中取得RGB颜色值。调色板是一块256×16的内存,使用16BPP的格式来表示256色(8BPP)显示模式下各个索引值的颜色。这样,即使使用256色(8BPP)的显示模式,最终出现在LCD数据总线上的仍是16BPP的数据。

   一个4字节可以表示48BPP的像素,字节与像素的对应顺序是可以选择的,如图所示:

内存中像素的排列格式如下:

    调色板中数据存放的格式与上面所描述的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有关的控制寄存器。大笑