s3c2440裸机-LCD编程(一、LCD硬件原理)

2023-08-02  

1.LCD示意图

下图是LCD示意图,里面的每个点就是一个像素点。

它里面有一个电子枪,一边移动,一边发出各种颜色的光。用动态图表示如下:

电子枪是如何移动的?


 有一条CLK时钟线与LCD相连,每发出一次CLK(高低电平),电子枪就移动一个像素。

颜色如何确定?


 由连接LCD的三组线RGB三原色混合而成:R(Red)、G(Green)、B(Blue)确定。

电子枪如何得知应跳到下一行?


 有一条HSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到下一行,该信号叫做行同步信号。

电子枪如何得知应跳到原点?


 有一条VSYNC信号线与LCD相连,每发出一次脉冲(高低电平),电子枪就跳到原点,该信号叫做帧同步信号。

RGB线上的数据从何而来?


 内存里面划分一块显存(FrameBuffer),里面存放了要显示的数据,LCD控制器从里面将数据读出来,通过RGB三组线传给电子枪,电子枪再依次打到显示屏上。

前面的信号由谁发给LCD?


 有S3C2440里面的LCD控制器来控制发出信号。


2.LCD硬件原理图

①是时钟信号,每来一个CLK,电子枪就移动一个像素;

②是用来传输颜色数据;

③是垂直方向同步信号,FRAME(帧);

④是水平方向同步信号,LINE(行);

LED+、LED-背光灯电源

⑥TSYP、TSXP、TSYM、TSXM是触摸屏信号。(下一节会详细讲)

⑦VM接DE是数据使能

3.LCD时序分析

①从一行最开始的像素开始分析,如上图标号①,DE信号开始有效,电子枪每次在CLK下降沿时从数据线Dn0-Dn7上得到数据(Dn0-Dn7上的数据来源于FrameBuffer,后面会讲),然后发射到显示屏上,然后移动到下一个位置。从1 st pixel到last pixel,就这样从一行的最左边,一直移动到一行的最右边,完成了一行的显示,假设一行有x个pixel。可以看到每发送一个pixel,需要1个时钟周期(1/tc)。


②当打完一行的最后一个数据后,会收到Hsync行同步信号,那么电子枪会跳到下一行,如上图标号②,根据时序图,一个Hsync周期,也就是一行数据刷新时间th, 可以大致分为五部分组成:thp、thb、1/tc、thd、thf。


thp:称为脉冲宽度,这个时间不能太短,太短电子枪可能识别不到。

thb:电子枪正确识别到thp后,会从最右端移动最左端,这个移动的时间就是thb,称之为移动时间。

thd:表示显示一行数据的时间

thf:表示显示完最右像素,再过多久Hsync才来。

③同理,当电子枪移动到最后一行时,就会发送一个Vsync垂直同步信号,让电子枪移动回最上边。如上图标号③,根据时序图,一个Vsync周期,也就是一帧数据刷新时间tv, 可以大致分为:tvp、tvb、tvd、tvf。


tvp:Vsync信号的脉冲宽度

tvb:电子枪从最后一行移动到第一行的移动时间

tvf:表示显示完最后一行像素,再过多久Vsync才来。

假设一共有y行,那么LCD的分辨率就是x*y。

下面是LCD显示配置示意图:

从左往右看,可以看到Total width = HSYNC width + HBP + Active width + HFP。当发出一个HSYNC信号后,电子枪就会从最右边花费HBP时长移动到最左边,等到了最右边后,等待HFP时长后下一轮HSYNC信号才会发出。因此,HBP和HFP分别决定了左边和右边的黑框。


HSYNC是行同步信号的脉冲宽度(低电平有效)

HBP表示屏幕左边黑框的宽度(电子枪要花多久才能从最右边移动到最左边)

Active width表示有效数据宽度

HFP表示屏幕右边黑框的宽度(再过多久HSYNC才会发出)

同理从上往下看,Total height = Vsync width + VBP + Active width + VFP。当发出一个VSYNC信号后,电子枪就会从最下边花费VBP时长移动到最上边,等到了最下边后,等待VFP时长后下一轮VSYNC信号才会发出。因此,VBP和VFP分别决定了上边和下边的黑框。 中间灰色区域才是有效显示区域。


VSYNC是帧同步信号的脉冲宽度(低电平有效)

VBP表示屏幕上边黑框的宽度(电子枪要花多久才能从最后一行移动到最上面一行)

Active height表示有效数据高度

HFP表示屏幕下边黑框的宽度(再过多久VSYNC才会发出)

4.FrameBuffer和BPP

FrameBuffer是在内存中的一段区域,这段区域专门用来存放颜色数据的。如下图:

BPP(Bits Per Pixels)表示每个像素占据多少位。 前面的LCD引脚功能图里,有R0-R7、G0-G7、B0-B7,那么每个像素是占据3*8=24位的,
所以硬件上LCD的BPP是确定的.

那么在FrameBuffer中,每个像素在FrameBuffer中,占据多少位BPP(Bits Per Pixels)?

虽然LCD上的引脚是固定的,但我们使用的时候,可以根据实际情况进行取舍,查看我们的硬件原理图,发现我们的LCD硬件上只有R1-R5、G0-G5、B1-B5与SOC相连,5+6+5=16BPP,所以每个像素就只占据16位数据。等效连接图如下:

5.LCD种类

S3C2440芯片手册介绍了LCD控制器支持TFT和STN两种LCD,我们常用的都是TFT材质的,本开发板采用的就是一款TFT材质的LCD.

6.LCD访问框架

如下图,LCD控制器从SDRAM中的FrameBuffer区域取出颜色数据,发送给电子枪,电子枪按照特定的时钟周期将颜色数据显示在LCD上。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。