256色(8BPP)的显示模式就是使用8位的数据来表示一个像素的颜色,但是对三种原色平均下来,每个原色只能使用不到3位的数据来表示,即每个原色最多不过8级别,这不足以表示更丰富的颜色。
为了解决8BPP模式的显示能力太弱的问题,需要使用调色板(Palette)。每个像素对应的8位数据不再用来表示RGB三种原色,而是表示他在调色板
中的索引值:要显示这个像素时,使用这个索引值从调色板中取得RGB颜色值。所谓调色板就是一块内存,可以对每个索引值设置其颜色,可以使用24BPP或
16BPP。在S3C2440中,调色板是一块256X16的内存,使用16BPP的格式来表示256色(8BPP)显示模式下各个索引值的颜色。这样,
即使使用256色(8BPP)的显示模式,最终出现在LCD数据总线上的仍是16BPP的数据。
要想理解LCD初始化函数,及一些函数。必须得理解LCD显示原理,LCD控制器的控制信号。2440使用的是TFT_LCD,所以我只看TFT的操作,各信号的含义。
LCD控制器利用DMA从SDRAM中(帧缓冲),取像素数据。然后通过VD[23:0]赋值给像素。
LCD显示过程,是逐行扫描每个像素点,利用VD[23:0]控制每个像素点,从而显示图像。
而LCD的控制信号,在LCD控制器里面配置。这样使LCD控制器,适应不同的屏幕。
VCLK信号:是像素的时钟信号。VCLK(Hz) = HCLK/[(CLKVAL+1)x2]。每一个VCLK信号表示正在传输一个像素的数据,无论它是否有效。
VSYNC信号:垂直同步信号。说帧同步信号,更好理解。当此信号到达时,告诉LCD新的一帧数据送过来了。一帧就是当把LCD屏的像素都点亮了(320X240)。表示一帧数据的开始。
HSYNC信号:水平同步信号,行同步信号。当此信号到达时,告诉LCD下一行的数据来了。(共240行)
VD[23:0]信号:将一个像素点的数据,送到LCD的像素点。表示一行数据的传输,所以此LCD最大是24BPP。
datasheet P418 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、随后即连续发出(HOZVAL+1)个像素的有效数据。
5、最后是(HFPD+1)个无效的像素,完整的一行结束,紧接着就是下一行的数据(即下一个HSYNC信号)。
LCD控制器中REGBANK的17个寄存器
1、LCDCON1~LCDCON5 用于选择LCD类型,设置各类控制信号的时间特性等
2、LCDSADDR1~LCDSADDR3 用于设置帧内存的地址
3、TPAL 临时调色板寄存器,可以快速地输出一帧单色的图像
4、LCDINTPND
LCDSRCPND 用于LCD的中断,在一般应用中无需中断
LCDINTMSK
5、REDLUT
GREENLUT
BLUELUT 专用于STN LCD
DITHMODE
6、TCONSEL 专用于SEC TFT LCD
文章评论(0条评论)
登录后参与讨论