首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

S3c2440ALCD控制器配置实例

S3c2440ALCD控制器配置实例

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

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



图一
一般TFTLCD时序图


外部引脚信号:

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东华TFTLCD(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);关于信号的极性
图二(东华TFTLCD(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寄存器





32156_200908151220401Xl1u

32156_200908151220401Xl1u

32156_200908151220401Xl1u

32156_200908151220401Xl1u

32156_200908151220401Xl1u

32156_200908151220401Xl1u
返回列表