LCD(一):LCD timing 时序参数总结

LCD timing

关于LCD timing时序参数常见有三种图:Linux对LCD的抽象图数据手册中的示意图Timing时序波形图

1.Linux对LCD的抽象图:

Linux对LCD的抽象图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* include/linux/fb.h */  
struct fb_videomode {  
const char *name; /* optional */  
u32 refresh; /* optional */  
u32 xres;  
u32 yres;  
u32 pixclock;  
u32 left_margin;  /*HBP*/ "在每行象素数据开始输出前,需要要插入的空闲象素时钟周期数"
u32 right_margin;  /*HFP*/ "在每行象素数据结束到LCD行同步时钟脉冲之间,插入的空闲象素时钟数"
u32 upper_margin;  /*VBP*/ "在垂直同步脉冲之后,每帧开头前的无效行数"
u32 lower_margin;  /*VFP*/ "每帧数据输出结束到下一帧垂直同步时钟周期开始前的无效行数"
u32 hsync_len;  /*HSYNC 或 HPW 或 HWH*/ "行同步脉宽,水平同步时钟的脉冲宽度"
u32 vsync_len;  /*VSYNC 或 VPW 或 VWH */ "帧同步脉宽,垂直同步时钟的脉冲宽度"
u32 sync;  "同步极性设置,可根据需要设置FB_SYNC_HOR_HIGH_ACT(水平同步高电平有效)和FB_SYNC_VERT_HIGH_ACT(垂直同步高电平有效)"
u32 vmode;  
u32 flag;  
};

词汇拓展:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
"porch"   沿,(大房子屋檐下的)走廊游廊
"margin"  边缘,(版心外的)空白
"HAdr"  Horizontal Address 水平地址(空间),实际值对应的就是xres,水平有效像素数
"VAdr"  Vertical Address   垂直地址(空间),实际值对应yres,垂直有效行数
"(VAdr + HAdr)"  有效显示数据从主控传输到显示模组上的时期
"blanking" 消隐
"Hblank" 行消隐  实际就是HFP+Hsync+HBP的时间,因为此期间并未有效显示,看做消隐状态
"Vblank" 场消隐  实际就是VFP+Vsync+VBP的时间,因为此期间并未有效显示,看做消隐状态  
"HPW" Hsync Pulse Width 水平同步脉冲宽度 = HSYNC = HWH(Hsync Width)
"VPW" Vsync Pulse Width 垂直同步脉冲宽度 = VSYNC = VWH(Vsync Width)
"HS Blanking" Hsync Blanking 水平同步消隐 = HS Pulse Width + HS Back Porch
"Vs Blanking" Vsync Blanking 垂直同步消隐= Vs Pulse Width + VS Back Porch
"One Horizontal Line"= Hs Blanking (thb) + Horizontal Display Area (thd) + HS Front Porch (thfp)  
"th = (thb+thd+thfp)"   一行有多少个像素时钟(Pixel)周期
"One Vertical Frame "= Vs Blanking (tvb) + Vertical Dsiplay Area (tvd) + Vs Front Porch (tvfp)
"tv = (tvb+tvd+tvfp)"   一帧有多少个行(Line)周期
"bpp" bit per pixel 每个像素的位数,主控端设置bpp实际是<根据面板每像素位数>来设置<framebuffer的颜色深度>,也即每像素数据需要在framebuffer中占多少bit位。

2.数据手册中的示意图:

数据手册中的示意图
概念拓展:

  • Linux对LCD的抽象图是以图像为中心的,而LCD数据手册则以同步信号为中心,参照物不同而已,但内核代码中的left_margin与HBP是说的同一个东西。
  • 水平同步信号有时也成为行同步型号,垂直同步信号有人称为场同步信号或帧同步信号

3.Timing时序波形图:

在这里插入图片描述
在这里插入图片描述
这里需要注意的是:时序信号的极性是否需要翻转,不同的RGB接口屏对时序信号的极性是有要求的:

  • 看下主控LCD控制器(或者转接芯片ICN6211)送出的时序波形,如:
    在这里插入图片描述
  • 再看一下RGB屏的规格书里的时序波形要求,如:
    在这里插入图片描述
  • 综上分析,需要修改主控(或者ICN6211)输出VS、HS、DE的极性,才可以点亮屏幕。主控调整极性,好像是修改fb_videomode结构体中的sync值,具体查阅主控资料。 ICN6211调整VS、HS、DE极性,是设置0x2a寄存器的第0、1、2 bit位:
    在这里插入图片描述
  • Data ENABLE (DE)是数据使能信号,当它为高时,在PCLK的上升沿输出有效数据。

4.时序角度分析显示原理

  • a.显示从矩形左上角的第一行第一个点开始(Vsync脉冲开始的位置),一个点一个点的在LCD上显示,在上面的时序图上用时间线表示就为PCLK,我们称之为像素时钟信号;
  • b.当显示指针一直显示到矩形的右边就结束这一行,那么这一行的动作在上面的时序图中就称之为1 Line;
  • c.接下来显示指针又回到矩形的左边从第二行开始显示,注意,显示指针在从第一行的右边回到第二行的左边是需要一定的时间的,我们称之为行切换,表示为时序图上的HSYNC。
  • d.如此类推,显示指针就这样一行一行(Line)的显示至矩形的右下角才把一副图显示完成。
  • e.然而,LCD的显示并不是对一副图像快速的显示一下,为了持续和稳定的在LCD上显示,就需要切换到另一幅图上,这一副一副的图像就称之为帧(Frame)
  • f.同样的,在帧与帧切换之间也是需要一定的时间的,我们称之为帧切换,表示为时序图上的VSYNC。

参考

1.LCD(RGB)硬件工作原理和控制器 https://blog.csdn.net/qq_18077275/article/details/89381231【学】
2.lcd参数解释及刷新率计算,LCD时序 https://blog.csdn.net/qlexcel/article/details/82806884?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.nonecase 【学】
3.与LCD移植相关的概念https://blog.csdn.net/changqing1990/article/details/78595565 【学】
4.RGB同步信号 DCLK/HS/VS/DE信号介绍https://blog.csdn.net/weixin_30621959/article/details/95411364?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-16.nonecase【学】
5.lcd timing的理解https://blog.csdn.net/dddxxxx/article/details/53905724【学】
(如有遗漏,请与我联系)