典型TFT驱动参数详解

S3c2440ALCD控制器配置实例

本文所用的是东华TFT液晶屏(WXCAT35),配置为常用的16BPP(5:6:5)模式。

先看一下TFT屏的操作时序图:

图一 一般TFT型LCD时序图

外部引脚信号:

VSYNC: 垂直同步信号,表示扫描1帧的开始。

HSYNC: 水平同步信号,表示扫描1行的开始。

VDEN:数据使能信号。

VD[23:0] : LCD像素数据输出端口。

VCLK:像素时钟信号。

寄存器参数:

VSPW:垂直同步信号的脉宽,单位为1行(Line)的时间

VFPD: 垂直同步信号的前肩,单位为1行(Line)的时间

VBPD: 垂直同步信号的后肩,单位为1行(Line)的时间

LINEVAL :垂直显示尺寸-1,即屏行宽-1

HBPD:水平同步信号的后肩,单位为1VCLK的时间

HFPD:水平同步信号的前肩,单位为1VCLK的时间

HSPW:水平同步信号的脉宽,单位为1VCLK的时间

HOZVAL:水平显示尺寸-1,即屏列宽-1

由上图可知:

扫描一帧所需的时间:

=((VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1))个时间。

扫描一行所所需的时间:

= ((HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1))个VCLK时间。

而一个VCLK时间由LCD寄存器LCDCON1内的CLKVAL决定:

=HCLK/[2*(CLKVAL+1)]

因此扫描一帧所需的时间:

T=[(VSPW+1)+(VBPD+1)+( LINEVAL+1)+(VFPD+1)]* [(HSPW+1)+(HSPD+1)+(HFPD+1)+ (HOZVAL+1)]* HCLK/[2*(CLKVAL+1)]

即帧频率为:1/T

注意:以上的时序图为一般TFT的时序图。实际TFT对应的时序图时序可能不一样(比如极性,符号等)。下文中详述。


2东华TFT型LCD(WXCAT35)时序图

//2440A寄存器参数

#define MVAL        (13)

#define MVAL_USED    (0)                 //0=each frame   1=rate by MVAL

#define INVVDEN         (1)                 //0=normal       1=inverted

#define BSWP            (0)                 //Byte swap control

#define HWSWP           (1)                 //Half word swap control

#define PNRMODE       (3)              // 设置为TFT屏

#define BPPMODE        (12)               // 设置为16bpp模式

//东华屏参数

#define VBPD              (3-1)                     //12 垂直同步信号的后肩   参数见 东华pdf

#define VFPD              (14-1)            //4 垂直同步信号的前肩

#define VSPW              (15-1)            //5垂直同步信号的脉宽

#define HBPD              (38-1)            //(22)水平同步信号的后肩

#define HFPD              (20-1)            //(33)水平同步信号的前肩

#define HSPW              (30-1)            //(44)水平同步信号的脉宽

#define CLKVAL_TFT (6)

//屏大小

#define LCD_XSIZE_TFT    (240)//屏实际列数

#define LCD_YSIZE_TFT    (320)// 屏实际行数

#define SCR_XSIZE_TFT    (240) //虚拟屏列数

#define SCR_YSIZE_TFT    (320) //虚拟屏行数

#define HOZVAL_TFT   (LCD_XSIZE_TFT-1)

#define LINEVAL_TFT  (LCD_YSIZE_TFT-1)

以上有关东华屏参数设置,在PDF中如下所示:

我的板子设置HCLK=100M因此CLKVAL= int(HCLK/(VCLK*2)-1),其中VCLK即上图的DCLK=6.4M, CLKVAL="int"(100/12.8-1)=int(6.8)=6

因此 VCLK = HCLK/[(CLKVAL+1)x2]= 100/2*(6+1)= 7.14MHz

VFRAME=HCLK/[(CLKVAL+1)x2]/{(VSPW+1+VBPD+1+LCD_YSIZE_TFT+VFPD+1)*(HSPW+1+HSPD+1+HFPD+1+LCD_XSIZE_TFT)}=64.4HZ

 

注意:有些液晶屏给的参数单位可能不一样,需要自己计算。

方法如下:

VBPD:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间隔宽度的比值,如图,VBPD=t3t6=1.02 mS31.77μs=32

VFPD:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,

是帧数据传输后延迟时间和行同步时钟间隔宽度的比值,如图,VFPD=t5t6=0.35 ms31.77μs=11

VSPW:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。如图,VSPW=t2t6=0.06 ms31.77μs=2

HBPD:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内VCLK脉冲个数,如图,VBPD=t7×VCLK=1.89 μs×25MHz=47

HFPD:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间内VCLK脉冲个数,如图,HFPD=t9×VCLK=0.94 μs×25 MHz="24"

      HSPW:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内VCLK脉冲个数,如图,HSPW=3.77μs×25 MHz="94"

 


 

S3C2440A LCD控制器配置

1. LCDCON1寄存器

 

rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;

其中:CLKVAL_TFT = 6MMODE = MVAL_USED = 0PNRMODE=3BPPMODE=12

ENVID=0(关闭视屏输出,需要开启显示是设为1)

2. LCDCON2寄存器

rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW); 相关值见上文宏定义

3. LCDCON3寄存器

rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD); 相关值见上文宏定义

4. LCDCON4寄存器

rLCDCON4=(MVAL<<8)|(HSPW); 相关值见上文宏定义


5. LCDCON5寄存器

rLCDCON5 = (1<<11) | (1<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3)  |(BSWP<<1) | (HWSWP);关于信号的极性 图二(东华TFT型LCD(WXCAT35)时序图)

其中BSWP与数据存放有关见下文。

6. LCDSADDR1寄存器

volatile unsigned short LCD_BUFFER[SCR_YSIZE_TFT][SCR_XSIZE_TFT];//全局变量

#define M5D(n)                          ((n) & 0x1fffff)     // To get lower 21bits

 

rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);

 

7. LCDSADDR2寄存器

rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );

//单位为字节一个点16bit=2字节

 

8. LCDSADDR3寄存器

rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);

// 1=*16bit/半字=16/16

 

LCD初始化程序:

void Lcd_Init(void)

{

       //引脚功能初始化

       rGPCUP  = 0x00000000;

       rGPCCON = 0xaaaa02a9;

        

       rGPDUP  = 0x00000000;

       rGPDCON=0xaaaaaaaa; //Initialize VD[15:8]

       rLCDCON1=(CLKVAL_TFT<<8)|(MVAL_USED<<7)|(PNRMODE<<5)|(BPPMODE<<1)|0;

           // TFT LCD panel,16bpp TFT,ENVID=off(Disable the video output and the LCD control signal)

       rLCDCON2=(VBPD<<24)|(LINEVAL_TFT<<14)|(VFPD<<6)|(VSPW);

       rLCDCON3=(HBPD<<19)|(HOZVAL_TFT<<8)|(HFPD);

       rLCDCON4=(MVAL<<8)|(HSPW);

       rLCDCON5 = (1<<11) | (1<<10) | (1<<9) | (1<<8) | (0<<7) | (0<<6) | (1<<3)  |(BSWP<<1) | (HWSWP);

       //5:6:5

       rLCDSADDR1=(((U32)LCD_BUFFER>>22)<<21)|M5D((U32)LCD_BUFFER>>1);

       rLCDSADDR2=M5D( ((U32)LCD_BUFFER+(SCR_XSIZE_TFT*LCD_YSIZE_TFT*2))>>1 );//单位为字节 一个点16bit=2字节

       rLCDSADDR3=(((SCR_XSIZE_TFT-LCD_XSIZE_TFT)/1)<<11)|(LCD_XSIZE_TFT/1);// 1=*16bit/半字=16/16

       rLCDINTMSK|=(3); // MASK LCD Sub Interrupt

       rTCONSEL &= (~7) ;     // Disable LPC3480

       rTPAL=0; // Disable Temp Palette

}

 

16BPP模式特点:

内存数据格式:

 

 

 

 

 

 

 

数据引脚输出:没有用到的引脚可用作GPIO

系统结构图:

 

 

要显示图像,只要向LCD_BUFFER[]先入像素数据(R(5):G(6):B(5))。LCD控制器会自动通过DMA读取数据送往TFT LCD显示。

这里介绍一个Bmp2RGB.exe,次程序可将bmp图转换为RGB(5:6:5)格式的c格式的数组。

Bmp2RGB下载

TFT屏时序分析  

下图是TFT屏的典型时序。其中VSYNC是帧同步信号,VSYNC每发出1个脉冲,都意味着新的1屏视频资料开始发送。而HSYNC为行同步信号,每个HSYNC脉冲都表明新的1行视频资料开始发送。而VDEN则用来标明视频资料的有效,VCLK是用来锁存视频资料的像数时钟。
并且在帧同步以及行同步的头尾都必须留有回扫时间,例如对于VSYNC来说前回扫时间就是(VSPW+1)+(VBPD+1),后回扫时间就是(VFPD+1);HSYNC亦类同。这样的时序要求是当初CRT显示器由于电子枪偏转需要时间,但后来成了实际上的工业标准,乃至于后来出现的TFT屏为了在时序上于CRT兼容,也采用了这样的控制时序。

YFARM9-EDU-1采用的是Samsung公司的1款3.5寸TFT真彩LCD屏,分辩率为240*320,下图为该屏的时序要求。
 
 
 
通过对比图3-4和图3-5,我们不难看出:
VSPW+1=2 -> VSPW=1
VBPD+1=2 -> VBPD=1
LINVAL+1=320-> LINVAL=319
VFPD+1=3 -> VFPD=2

HSPW+1=4 -> HSPW=3
HBPD+1=7 -> HBPW=6
HOZVAL+1=240-> HOZVAL=239
HFPD+1=31 -> HFPD=30
以上各参数,除了LINVAL和HOZVAL直接和屏的分辩率有关,其它的参数在实际操作过程中应以上面的为参考,不应偏差太多。 
LCD控制器主要寄存器功能详解
(1)LCDCON1
LINECNT :当前行扫描计数器值,标明当前扫描到了多少行
CLKVAL :决定VCLK的分频比。LCD控制器输出的VCLK是直接由系统总线(AHB)的工作频率HCLK直接分频得到的。做为240*320的TFT屏,应保证得出的VCLK在5~10MHz之间
MMODE :VM信号的触发模式(仅对STN屏有效,对TFT屏无意义)
PNRMODE :选择当前的显示模式,对于TFT屏而言,应选择[11],即TFT LCD panel
BPPMODE :选择色彩模式,对于真彩显示而言,选择16bpp(64K色)即可满足要求
ENVID :使能LCD信号输出
VBPD , LINEVAL , VFPD , VSPW 的各项含义已经在前面的时序图中得到体现,这里不再赘述。
HBPD , HOZVAL , HFPD 的各项含义已经在前面的时序图中得到体现,这里不再赘述。
HSPW 的含义已经在前面的时序图中得到体现,这里不再赘述。
MVAL 只对 STN屏有效,对TFT屏无意义。




你可能感兴趣的:(ARM)