-
24bit_TFT
1
、时序
LCD
一般需要三个时序信号:
VSY
NC
、
HSYNC
和
< br>VCLK
。
VSYNC
是垂直同
步信号,在
每进行一个帧(即一个屏)的扫描之前,该信号就有效一次,由该信号可以确
定
LCD
的场频,即每秒屏幕刷新的次数(单位
Hz
)。
HSYNC
是水平同
步信号,在每
进行一行的扫描之前,
该信号就有效一次,
由该信号可以确定
LCD
的行频,
即每
秒屏幕从左到右扫描一行的次数(单位
Hz<
/p>
)。
VCLK
是像素时钟信号。
s3c2440
处
理
LCD
的时钟源是
HCLK
,通过寄存器
LCDCON1
中的
CLKVAL
可以调整
VCLK
频率大小,它的公式为:
VC
LK
=
HCLK
÷
[(CLKVAL
+
1)
×
2]
例如,
HC
LK
的频率为
100MHz
,
要想驱动像素时钟信号为
6.4MHz
的
LCD
屏,
则通
过上
式计算
CLKVAL
值,
结果
CLKVAL
为
6.8
,
取整后
(值为
6
)
放入寄存器
LCDCON1
中相
应的位置即可。
由于
CLKVAL
进行
了取整,
因此我们把取整后的值代入上式,
重新计算
VCLK
,得到
VCLK
=
7.1MHz
。
按理说,对于一个已知尺寸(即水
平显示尺寸
HOZVAL
和垂直显示尺寸
LINEVAL
已知)的
LCD
屏,
只要确定了
VCLK
值,行频和场频就应该知道了。但这样还不
行的,
因为在每一帧时钟信号中,
还会
有一些与屏显示无关的时钟出现,
这就给
确定行频和场频带来了
一定的复杂性。如
:
在
HSYNC<
/p>
信号先后会有
水平同步信号前肩(
HFPD
)
水平同步信号后肩(
HBPD
)
出现,在
p>
VSYNC
信号先后会有
垂直同步信号前肩(
VFPD
)
垂直同步信号后肩(
VBPD
)
< br>出现,
在这些信号时序内,
不会有有效像素信号出现
p>
,
另外
HSYNC
和
VSYNC
信号
有效时,其电平要保
持一定的时间
,它们分别叫做
水平同步信号脉宽
HSPW
垂直同步信号脉宽
VSPW
这段时间也不能有像素信号。因此计算行频和场频时,一定要包括这些信号。
< br>HBPD
、
HFPD
和
HSPW
的单位是一个
VCLK
的时间,而
VSPW
、
VFP
D
和
VBPD
的单位
< br>是扫描一行所用的时间。在
s3c2440
中,所有的这
些信号(
VSPW
、
VFPD
、
VBPD
、
LINE
VAL
、
HBPD
、
< br>HFPD
、
HSPW
和
HOZVAL
)都是实际值减
1
的结果。这些值是通过
寄存器
LCDCON2
、
LCDCON3
和
L
CDCON4
来配置,只要把这些值配置成与所要驱动
的
LCD
中相关内容的数据一致即可。例如,我们所要显示的
LCD
屏大小为
320
×
240
,因此
HOZVAL
=
320
-
1
,
LINEVAL
=
24
0
-
1
。
水平同步信号的脉宽、前肩和后肩分别为
30
、
20
和
38
,则
HSPW
=
30
-
1
,
HFPD
=
20
-
1
,
HBPD
=
38
-
1
;
垂直同步信号的脉宽、前肩和后肩分别为
p>
3
、
12
和
15
,则
VSPW
=
3
-
1
,
p>
VFPD
=
12
-
1
,
VBPD
=
15
-
1
。
下面我们就具体计算一下行频(<
/p>
HSF
)和场频(
VSF
):
HSF
=
VCLK
÷
[(HSPW
+
1)
+
(H
SPD
+
1)
+
(HFPD
+
1)
+
(HOZVAL
+
1)]
=
7.1
÷
4
08
=
17.5kHz
VSF
=
HSF
÷
[(VSPW
+
1)
+
(VBPD
+
1)
< br>+
(VFPD
+
1)
+
(LINEVAL
+
1
)]
=
17.5
< br>÷
270
=
64.8Hz
在有些情况下,
s3c2440
p>
的
LCD
时钟信号的默认极性与所控制的<
/p>
LCD
时钟信号的
极性相反,这时可以通
过寄存器
LCDCON5
的相关位来改变某些时钟信号的极性。
2
、显示缓存区
只要把所要显示的数据放入显示缓存区内,
< br>就可以在屏幕上呈现内容。
该缓存区
是我们自己编程时开
辟的一段内存区。
一般我们是通过定义一个与屏幕尺寸大小
相同
的二维数组来开辟该空间的,
这样控制屏幕内容会方便一些,
如
当屏幕的尺
寸为
320
×
240
时,可以定义该缓存区为
LCD_BUFFE
R[240][320]
。由于
s3c2440
支持
16
位和
24
位的非调色板真彩色的
TFT
型
< br>LCD
模式,而
24
位颜色模式
是用
32
位数据来表示的
,所以前面定
义的那个二维数据的数据类型应该是半字整型
或全字整型的。例如,在
< br>24
位颜色模式下,我们想要在尺寸大小为
320
×
240
屏幕的中心处设置为白色像素,则:
LCD_BUFFER[120][160]
=
0x
ff
ffffff
。
p>
在
s3c2440
中,寄存器
LCDSADDR1
和
R2
用于设置显示缓
存区,即把我们定义的那个二维数组告诉
s
3c2440
。其中
LCDBANK
的
9
位数据指定
LCD
< br>的
BANK
,即
显示缓存区的第
30
位到第
22
位地址;
LCDBASEU
的
21<
/p>
位数据
指定了
LCD
的基址,即显示缓存区开始地址的第
21
位到第
1
位;
LCDBASEL
的
21
位数据指定了
LCD
的尾址,
即显示缓存
区结束地址的第
21
位到第
1
位。
例如,
我们想要在尺寸为
320
×
240
的
屏幕上显示
24
位颜色,定义的显示缓存区数组为
LCD
_BUFFER[240][320]
,
则
LCDBANK
等于
LCD_BUFFER
的第
30
位到第
22
位数据值(因为
LCD_BUFFER
表示的就
是数组的首地址),
LCDBASEU
等
于
LCD_BUFFER
的第
21<
/p>
位到第
1
位数据值,由于是用
32
位数据表示
24
为颜
色,
因此每个像素值是
4
个字节,
p>
所以
LCDBASEL
等于
(LCD_BUFFER
+
(240
< br>×
320
×
4
< br>))
结果的第
21
位到第
1
位的数据值。另外寄存器
LCDSADDR
3
有两个内容:
OFFSIZE
和
p>
PAGEWIDTH
。
OFFSIZE
p>
用于虚拟屏幕
的偏移长度,如果我们不使用虚拟屏幕,就把它置为<
/p>
0
;
PAGEWIDTH
定
义了视口的宽,
单位是半字,
如在上面的例子中,
PAGEWIDTH
应该为
320
×
32
÷
16
。
//
需要这么多个
字节
=
==================================================
==============
LCD
提供的外部接口信号:
VSYNC/VFRAME/STV
:垂直同步信号
< br>(TFT)/
帧同步信号
(STN)/SEC
TFT
信号;
HSYNC/VLIN
E/CPV
:
水平同步信号
(TFT)
/
行同步脉冲信号
(STN)/SEC
TFT
信号;
VCLK/LCD_HCLK
:象素时钟信号
(TFT/ST
N)/SEC TFT
信号;
VD[
23:0]
:
LCD
像素数据输出端口
(TFT/STN/SEC
TFT)
;
VDEN/VM/TP<
/p>
:数据使能信号
(TFT)/LCD
驱动
交流偏置信号
(STN)/SEC TFT
信
-
-
-
-
-
-
-
-
-
上一篇:海思vo用户时序配置
下一篇:屏参数设置说明