系统结构框图
LCD
控制器系统框图:
REGBANK
有
17
个可编程寄存器和
256×
16
的调色板存储器
,
用来设定
LCD
控制器
。
LCDCDMA
是
一个专用
DMA,
自动从帧存储器传输视频数据到
LCD
控制器
,
用这个特殊的
DMA,
视频数据可不经过
CPU
干涉就显示在屏幕上。
VIDPRCS
接受从
LCDCDMA
来的视频数据并在将其改变到合适数据格式后经
VD[23:0]
将之送到
LCD
驱动器
,
如
4/8
单扫描或
4
双扫描显示模式。
TIMEGEN
由可编程逻辑组成
,
以支持
不同
LCD
驱动器的接口时序和速率的不同要求。
TIMEGEN
产生
VFRAME
、
VLINE
、
VCLK
、
VM
信号等。
数据流描述如下
:FIFO
存储器位于
LCDCDMA
。当
FIFO
空或部分空时
,LCDCDMA
要求从基于突发
传输模式的帧存储器中取来数据
,
存入要显示的图像数据
,
而这个帧存储器是
LCD
控制器在
RAM
中开辟的
一片缓冲区。当这个传输请求被存储控制器中的总线仲裁器接收到后
,
从系统存储器到内部
FIFO
就会成功
传输
4
个字。
FIFO
的总大小是
28
个字
,
其中低位
FIFOL
是
12
个字
,
高位
FIFOH
是
16
个字。
S3C2410
有
两个
FIFO
来支持双扫描显示模式。在单扫描模式下
,
只使用一个
FIFO(FIFOH)
。
输出信号分析
VFRAME
/
VSYNC
:
LCD
控制器和
LCD
驱动器之间的帧同步信号。该信号告诉
LCD
屏新一帧开
始了。
LCD
控制器在一帧显示完成后立即插入一个
VFRAME
信号,开始新一帧的显示。
VLINE
/
HSYNC
:
LCD
控制器和
LCD
驱动器之间的行同步脉冲信号。该信号用于
LCD
驱动器将水
平线
(
行
)
移位寄存器的内容传送给
LCD
屏显示。
LCD
控制器在整行数据移人
LCD
驱动器后,插入一个
VLINE
信号。
VCLK
:
LCD
控制器和
LCD
驱动器之间的像素时钟信号。
LCD
控制在
VCLK
的上升沿处送出数据,
LCD
驱动器在
VCLK
的下降沿处采样。
VM
/
VDEN
:
LCD
驱动器的
AC
信号。
VM
信号被
LCD
驱动器用于改变行和列的电压极性,从而控
制像素点的显示。
VM
信号能够和每帧同步,也能够和可变数据的
VLINE
信号同步。
VD[23
:
0]
:
LCD
像素数据输出端口。
LCD_PWREN
:
LCD
使能信号。如果外接的
LCD
有开
/
关等类似管脚的话,可以与这个信号连接。
这个信号的输出值受
ENVID
控制,即
LCDCON1
的第
0
位。
时序分析
需要注意的是:在帧的领域里,我们所说的周期单位是一行;而在行的时候,我们所说的周期单
位是
VCLK
时钟周期。以
240*320
的屏为例,一个
VCLK
周期传输一组
VD
信号,从而给一个像素着色。
要点亮一行,那么要有
240
个
VCLK
周期将
240
个
pixel
的
VD
值输出,而且这
240
个周期内
VDEN
应该
一直是有效的。现在我们的思路从点扩展到了行,理想情况下,两行之间不需要间隔,也就是说这一行结
束马上传输下一行的第一个
pixel
的
VD
。但是这样做并不好,因为一个点的偏差会造成满盘皆输。因此我
们引入了行同步
HSYNC
信号,也就是说在传输完一行的数据后,先歇一会儿,等待若干个时钟(我们称
之为后插入等待周期);然后我们送一个行同步信号,当然这个信号的有效周期数我们也能控制(我们称
之为同步周期)
;之后呢,我们在等一会,让
LCD
驱动电路准备好接收,我们在把一行的数据发下去(这
个等待时间我们称之为前插入等待周期)。下图为证:
从图中我们可以看到:
HSPW+1
、
HBPD
+
1
、
HFPD+1
就是我们分别定义了同步周期、前插入等
待周期
、
后插入等待周期。
而
HOZVAL
+
1
则是一行的有效象素数目
。
这些都可以在寄存器里面进行设置。
说完行与行之间的显示,我们就可以扩展到帧与帧之间的显示。我们很容易想到,在帧的领域里面也应该
是类似于行的结构,同样包含了同步周期、前插入等待周期、后插入等待周期。上图为证:
经过上述的分析
,
我们可以把
TFT LCD
的接口归纳到
8
个参数上
:
HSPW
、
HBPD
、
HFPD
、
HOZVAL
、
VSPW
、
VBPD
、
VFPD
、
LINEVAL
。另外,通过上述分析,我们可以看到,显示一帧图像总共需要的
VCLK
周期为:(
HSPW
+
HBPD
+
HFPD
+
HOZVAL
+
4
)
*
(
VSPW
+
VBPD
+
VFPD
+
LINEVAL
+
4
),
VCLK
是可调的,因此通过选择适当的分频比保证帧率在
60Hz
左右就可保证液晶的正常工作了。
LCD
可编程寄存器
1.LCDCON1
LINECNT
:行计数器的状态位。只读,不用配置。
CLKVAL
:确定
VCLK
频率的参数。公式为
VCLK=HCLK
/
[(CLKVAL+1)×
2]
,单位为
Hz
。笔者所用
的硬件系统
HCLK=100 MHz
,
640×
480
的显示屏需要
VCLK=20 MHz
,故需配置
CLKVAL=1
。
MMODE
:确定
VM
的改变速度。在此选择
MMODE=O
,为每帧变化模式。
PNRMODE
:确定扫描
方式。选择
PNRMODE=0x3
,为
TFT LCD
面板扫描模式。
BPPMODE
:确定
BPP(
每像素位数
)
模式。在
此选择
BPPMODE=0xC
,为
TFT 16
位模式。
ENVID
:数据输出和逻辑信号使能控制位。选择
ENVID=1
,
为允许数据输出和逻辑控制。
2
、
LCDCON2
VBPD
:确定帧同步信号和帧数据传输前的一段延迟时间,是帧数据传输前延迟时间和行同步时钟间
隔宽度的比值。
LINEVAL
:确定显示的垂直方向尺寸。公式:
LINEVAL=YSIZE-1=479
。
VFPD
:确定帧数据传输完成后到下一帧同步信号到来的一段延迟时间,是帧数据传输后延迟时间和
行同步时钟间隔宽度的比值。
VSPW
:确定帧同步时钟脉冲宽度,是帧同步信号时钟宽度和行同步时钟间隔宽度的比值。
3
、
LCDCON3
HBPD
:确定行同步信号和行数据传输前的一段延迟时间,描述行数据传输前延迟时间内
VCLK
脉冲
个数。
HOZAL
:确定显示的水平方向尺寸。公式
HOZAL=XSIZE-1
。
HFPD
:确定行数据传输完成后到下一行同步信号到来的一段延迟时间,描述行数据传输后延迟时间
内
VCLK
脉冲个数。
4
、
LCDCON4
寄存器
HSPW
:确定行同步时钟脉冲宽度。描述行同步脉冲宽度时间内
VCLK
脉冲个数。
5
、
LCDCON5
寄存器
VSTATUS
:垂直方向状态。只读,不用配置。
HSTATUS
:水平方向状态。只读,不用配置。
BPP24BL
:确定显示数据存储格式。此处配置
BPP24BL=0x0
,为小端模式存放。
FRM565
:确定
16
位数据输出格式。此处配置
FRM565=0x1
,为
5
:
6
:
5
格式输出。
INVVCLK
:确定
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
,使能半字节交换。