1、S3C2410 TFT LCD显示原理分析1、系统结构框图2、LCD 控制器由 REGBANK、LCDCDMA、VIDPRCS、TIMEGEN 和 LPC3600组成。REGBANK有 17个可编程寄存器和 25616的调色板存储器,用来设定 LCD控制器。LCDCDMA 是一个专用 DMA,自动从帧存储器传输视频数据到LCD控制器,用这个特殊的 DMA,视频数据可不经过 CPU干涉就显示在屏幕上。VIDPRCS 接受从 LCDCDMA来的视频数据并在将其改变到合适数据格式后经 VD23:0将之送到 LCD驱动器,如 4/8单扫描或 4双扫描显示模式。TIMEGEN 由可编程逻辑组成,以支持不
2、同 LCD驱动器的接口时序和速率的不同要求。TIMEGEN 产生 VFRAME、VLINE、VCLK、VM 信号等。数据流描述如下:FIFO 存储器位于 LCDCDMA。当 FIFO空或部分空时,LCDCDMA 要求从基于突发传输模式的帧存储器中取来数据,存入要显示的图像数据,而这个帧存储器是 LCD控制器在 RAM中开辟的一片缓冲区。当这个传输请求被存储控制器中的总线仲裁器接收到后,从系统存储器到内部 FIFO就会成功传输 4个字。FIFO 的总大小是 28个字,其中低位 FIFOL是 12个字,高位 FIFOH是 16个字。S3C2410 有两个 FIFO来支持双扫描显示模式。在单扫描模式
3、下,只使用一个 FIFO(FIFOH)。3、LCD 控制器输出信号分析VFRAMEVSYNC:LCD 控制器和 LCD驱动器之间的帧同步信号。该信号告诉 LCD屏新一帧开始了。LCD 控制器在一帧显示完成后立即插入一个VFRAME信号,开始新一帧的显示。VLINEHSYNC-LCD 控制器和 LCD驱动器之间的行同步脉冲信号。该信号用于 LCD驱动器将水平线(行)移位寄存器的内容传送给 LCD屏显示。LCD 控制器在整行数据移人 LCD驱动器后,插入一个 VLINE信号。VCLK-LCD 控制器和 LCD驱动器之间的像素时钟信号。LCD 控制在 VCLK的上升沿处送出数据,LCD 驱动器在 V
4、CLK的下降沿处采样。VMVDEN-LCD 驱动器的 AC信号。VM 信号被 LCD驱动器用于改变行和列的电压极性,从而控制像素点的显示。VM 信号能够和每帧同步,也能够和可变数据的 VLINE信号同步。VD23:0-LCD 像素数据输出端口。4、时序分析需要注意的是:在帧的领域里,我们所说的周期单位是一行;而在行的时候,我们所说的周期单位是 VCLK时钟周期。以 240*320的屏为例,一个 VCLK周期传输一组 VD信号,从而给一个像素着色。要点亮一行,那么要有 240个 VCLK周期将 240个 pixel的VD值输出,而且这 240个周期内 VDEN 应该一直是有效的。现在我们的思路从
5、点扩展到了行,理想情况下,两行之间不需要间隔,也就是说这一行结束马上传输下一行的第一个 pixel的 VD。但是这样做并不好,因为一个点的偏差会造成满盘皆输。因此我们引入了行同步 HSYNC信号,也就是说在传输完一行的数据后,先歇一会儿,等待若干个时钟(我们称之为后插入等待周期);然后我们送一个行同步信号,当然这个信号的有效周期数我们也能控制(我们称之为同步周期);之后呢,我们在等一会,让 LCD 驱动电路准备好接收,我们在把一行的数据发下去(这个等待时间我们称之为前插入等待周期)。下图为证:从图中我们可以看到:HSPW+1、HBPD1、HFPD+1 就是我们分别定义了同步周期、前插入等待周期
6、、后插入等待周期。而 HOZVAL1 则是一行的有效象素数目。这些都可以在寄存器里面进行设置。说完行与行之间的显示,我们就可以扩展到帧与帧之间的显示。我们很容易想到,在帧的领域里面也应该是类似于行的结构,同样包含了同步周期、前插入等待周期、后插入等待周期。上图为证:经过上述的分析,我们可以把 TFT LCD的接口归纳到 8个参数上:HSPW、HBPD、HFPD、HOZVAL、VSPW、VBPD、VFPD、LINEVAL。另外,通过上述分析,我们可以看到,显示一帧图像总共需要的 VCLK周期为:(HSPWHBPDHFPDHOZVAL4)*(VSPWVBPDVFPD LINEVAL4),VCLK
7、是可调的,因此通过选择适当的分频比保证帧率在 60Hz左右就可保证液晶的正常工作了。举例说明:YFARM9-EDU-1 采用的是 Samsung 公司的 1 款 3.5 寸 TFT 真彩 LCD 屏,分辨率为 240*320,下图为该屏的时序要求。于是:VSPW+1=2 - VSPW=1 HSPW+1=4 - HSPW=3VBPD+1=2 - VBPD=1 HBPD+1=7 - HBPW=6VFPD+1=3 - VFPD=2 HFPD+1=31 - HFPD=30LINVAL+1=320- LINVAL=319 HOZVAL+1=240- HOZVAL=2395、LCD 可编程寄存器5.1、L
8、CDCON1LINECNT:行计数器的状态位。只读,不用配置。CLKVAL:确定 VCLK频率的参数。公式为 VCLK=HCLK(CLKVAL+1)2,单位为 Hz。笔者所用的硬件系统 HCLK=100 MHz,640480 的显示屏需要VCLK=20 MHz,故需配置 CLKVAL=1。MMODE:确定 VM的改变速度。在此选择 MMODE=O,为每帧变化模式。PNRMODE:确定扫描方式。选择 PNRMODE=0x3,为 TFT LCD面板扫描模式。BPPMODE:确定 BPP(每像素位数)模式。在此选择 BPPMODE=0xC,为 TFT 16位模式。ENVID:数据输出和逻辑信号使能控
9、制位。选择 ENVID=1,为允许数据输出和逻辑控制。5.2、LCDCON2VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值。LINEVAL:确定显示的垂直方向尺寸。公式:LINEVAL=YSIZE-1=479。VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和行同步时钟间隔宽度的比值。VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。5.3、 LCDCON3HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内 VCLK脉冲个数。HOZAL:
10、确定显示的水平方向尺寸。公式 HOZAL=XSIZE-1。HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内 VCLK脉冲个数。5.4、 LCDCON4 寄存器HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内 VCLK脉冲个数。5.5、LCDCON5 寄存器VSTATUS:垂直方向状态。只读,不用配置。HSTATUS:水平方向状态。只读,不用配置。BPP24BL:确定显示数据存储格式。此处配置 BPP24BL=0x0,为小端模式存放。FRM565:确定 16位数据输出格式。此处配置 FRM565=0x1,为 5:6:5 格式输出。INVVCL
11、K:确定 VCLK脉冲有效边沿极性。如 INVVCLK=0xl,VCLK 上升沿到来时数据传输开始。INVVLlNE:确定 HSYNC脉冲的极性。INVVFRAME:确定 VSYNC脉冲的极性。INVVD:确定数据输出的脉冲极性。INVVDEN:确定 VDEN信号极性。INVPWREN:确定 PWREN信号极性。INVLEND:确定 LEND信号极性。PWREN:PWREN 信号输出允许。ENLEND:LEND 输出信号允许。BSWP:字节交换控制位。如配置 BSWP=0x0,禁止字节交换。HWSWP:半字交换控制位。如配置 HWSWP=0xl,使能半字节交换。S3C2410 TFT-LCD
12、时间再分析S3C2410支持 STN-LCD和 TFT-LCD,这里我们只介绍其对 TFT-LCD的控制。TIMEGEN产生 LCD驱动器的控制信号,如 VSYNC、HSYNC、VCLK、VDEN 和LEND等。这些控制信号与 REGBANK寄存器组中的 LCDCON1/2/3/4/5寄存器的配置关系相当密切,基于 LCD控制寄存器中的这些可编程配置,TIMEGEN 产生可编程控制信号来支持不同类型的 LCD驱动器。VSYNC和 HSYNC脉冲的产生依赖于 LCDCON2/3寄存器的 HOZVAL域和LINEVAL域的配置。HOZVAL 和 LINEVAL的值由 LCD屏的尺寸决定,如下公式:
13、HOZVAL=水平显示尺寸-1 (1)LINEVAL=垂直显示尺寸-1 (2)VCLK信号的频率取决于 LCDCON1寄存器中的 CLKVAL域。VCLK 和 CLKVAL的关系如下,其中 CLKVAL的最小值是 0:VCLK(Hz)=HCLK/(CLKVAL+1)2 (3)帧频率是 VSYNC信号的频率,它与 LCDCON1和 LCDCON2/3/4寄存器的VSYNC、VBPD、VFPD、LINEVAL、HSYNC、HBPD、HFPD、HOZVAL 和 CLKVAL都有关系。大多数 LCD驱动器都需要与显示器相匹配的帧频率,帧频率计算公式如下:FrameRate=1/(VSPW+1)+(VB
14、PD+1)+(LINEVAL+1)+(VFPD+1)(HSPW+1)+(HBPD+1)+(HFPD+1)+(HOZVAL+1)2(CLKVAL+1)/(HCLK) (4)参照 CJM10C0101的参数和公式(1)、(2),可得出 HOZVAL=639;LINEVAL=479。其余主要寄存器的值在下面给出。3 CJM10C0101的逻辑、时序要求2各时间参数见表 1。根据时序要求,我们设定 VM/VDEN信号作 LCD的 ENAB信号,VCLK 信号作 LCD的 NCLK信号。要想得到合适的 VM和 VCLK波形,就要正确设定寄存器的值,根据寄存器的值与 VM和 VCLK波形的关系,我们设定了如下关键寄存器的值:HSPW=10;HBPD=100;HFPD=47;VSPW=1;VBPD=37;VFPD=4S3C2410的 HCLK工作频率为 100MHz左右,因此根据公式(3)设 CLKVAL=1。这些值将在驱动程序中得到具体体现。