linux LCD驱动开发之原理时序分析(二)

Table of Contents

一、LCD显示图像原理:

2.1、物理屏、 虚拟屏认识

2.2、扫描原理

二、LCD时序分析:

2.1、控制信号:

2.2、重要的时间参数:

2.3、帧的传输过程

2.4、行中像素数据传输过程

三、专业术语(英文解释):


一、LCD显示图像原理:

硬件接口见:https://blog.csdn.net/shenlong1356/article/details/103669398

参考http://wiki.100ask.org/%E7%AC%AC017%E8%AF%BE_LCD%E7%BC%96%E7%A8%8B

2.1、物理屏、 虚拟屏认识

1. 物理屏:真实屏幕,如一个笔记本 1024*768 分辨率大小的屏,在 32BPP 时候占用的内存是 1024*768*4 , 内存不是太大。
2. 虚拟屏:为实际屏提供显示数据内存,物理屏占用的内存属于虚拟屏内存一部分,如一台笔记本有一个独立显卡 2G,则这个显卡的虚拟屏内存大小是 2G。
3. 为什么虚拟屏要大于物理屏?在实际显示图像时,都不静态的,都时刻变化的,每一屏图像都不一样,如果物理屏内存大小和虚拟屏内存大小相同,也就是显存只能存放一屏数据,要更换下一屏时候就需要一边运算一边显示,这样会显示不流畅。如打大型 3D 游戏。虚拟屏比物理屏大,可以先提前把要显示的图像数据解码存放在虚拟中,要切换图像,只需要把物理屏的显示基地址修改一下就可以实现快速切换。

2.2、扫描原理

想象有一个电子枪,一边移动,一边发出各种颜色的光。这里有很多细节问题,我们一个一个的梳理。

  • 1. 电子枪是如何移动的?

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

  • 2. 颜色如何确定?

答:由连接LCD的三组线:R(Red)、G(Green)、B(Blue)确定。

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

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

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

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

  • 5. RGB线上的数据从何而来?

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

  • 6. 前面的信号由谁发给LCD?

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

总结:

1、cpu初始化一块显存显存(FrameBuffer)  ,

2、建立 显存(FrameBuffer)和LCD控制器的关系

3、LCD控制器向LCD驱动器发出控制信号和显示的数据

4、LCD驱动器给显示面板发送模拟信号控制面板在何处显示什么颜色的点

二、LCD时序分析:

 

2.1、控制信号:

  • Vsync      帧(垂直)同步信号,一帧数据就是填充一个屏幕画面的数据,相当于一幅图片,Vsync 一个脉冲代表一帧,一帧(一个画面)显示完毕后,接着发出Vsync  同步信号,扫描枪头回到顶端位置,准备显示下一帧数据
  • Hsync     行同步信号,一个Hsync脉冲代表显示一行数据,一行像素显示完毕后发出下一行Hsync控制信号,接着回到下一行开始重新开始扫描
  • CLK      在有效的时钟内,每个像素点就是一个时钟脉冲
  • VDEN:视频数据输出使能,信号有效时候,数据线 VD 的数据有有意义。
  • VD: RGB 数据线,一般是 24 根,分别用来传递 RGB 颜色数据

2.2、重要的时间参数:

VSPW(vertical sync pluse width):表示垂直同步脉冲的宽度,单位是行
VBPD(vertical back porch) :垂直后沿(肩) 信号
VFPD(vertical back porch) :垂直前沿(肩)信号
HSPW(vertical sync pluse width):表示水平同步脉冲的宽度,单位是点(像素)
HBPD(vertical back porch) :水平后沿(肩)信号
HFPD(vertical back porch) :水平前沿(肩)信号
LINEVAL:物理屏的真实高度,单位是行
HOZVAL:物理屏的真实宽度,单位是点

2.3、帧的传输过程

1) VSYNC 信号有效时, 表示一帧数据的开始, 信号宽度为( VSPW+1)个 HSYNC 信号周期,即( VSPW+1)个无效行;
2) VSYNC 信号脉冲之后,总共还要经过( VBPD + 1)个 HSYNC 信号周期,有效的行数据才出现; 所以, 在 VSYNC 信号有效         之后,还要经过( VSPW +1 +VBPD +1)个无效的行;
3) 随即发出( LINEVAL + 1)行的有效数据;
4) 扫描完成( LINEVAL + 1)行后, 最后是 VFPD + 1)个无效的行;
 

2.4、行中像素数据传输过程

1) HSYNC 信号有效时,表示一行数据的开始,信号宽度为( HSPW+1)个 VCLK 信号周期(一个 VCLK 扫描一个点),即(            HSPW +1)个无效像素;
2) HSYNC 信号脉冲之后,还要经过( HBPD+ 1)个 VCLK 信号周期,有效的像素数据才出现;
3) 随后发出( HOZVAL+ 1)个像素的有效数据;
4) 最后是( HFPD+ 1)个无效的像素;
3. 将 VSYNC、 HSYNC、 VCLK 等信号的时间参数设置好之后,并将帧内存的地址告诉 LCD 控制器,它即可自动地发起DMA传输      从帧内存中得到图像数据,最终在上述信号的控制下出现在数据总线VD[23:0]上。用户只需要把要显示的图像数据写入帧内存中。
 

当发出一个HSYNC信号后,电子枪就会从最右边花费HBP时长移动到最左边,等到了最右边后,等待HFP时长HSYNC信号才回来。因此,HBP和HFP分别决定了左边和右边的黑框。

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


再来解决最后一个问题:每个像素再FrameBuffer中,占据多少位BPP(Bits Per Pixels)? 前面的LCD引脚功能图里,R0-R7、G0-G7、B0-B7,每个像素是占据3*8=24位的,即硬件上LCD的BPP是确定的。

虽然LCD上的引脚是固定的,但我们使用的时候,可以根据实际情况进行取舍,比如我们的JZ2440使用的是16BPP,因此LCD只需要R0-R4、G0-G5、B0-B4与SOC相连,5+6+5=16BPP,每个像素就只占据16位数据

 

三、专业术语(英文解释):

horizontal                         水平

vertical                             垂直

pixels                               像素

 panel                                面板

 pallet                              调色

 non-palletized                  无调色

dedicated                        专用的

 generate                        发生

register sets                     寄存器组

intervention.                   干涉,介入

 data flow                          数据流

 is present in                 存在于

 partially                          部分

arbitrator                           仲裁

successive                      连续的

 In case of                       万一,假如

burst memory transfer mode       突发传输模式

without allowing                不允许

mastership                         控制权

Dummy Bit                           无效位

 toggle rate                           反转效率

indicate                            保存,指示表明           

发布了137 篇原创文章 · 获赞 106 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/shenlong1356/article/details/103685589
今日推荐