驱动之LCD

2019-04-14 18:57发布

本来想学的更深入一些再来写这些总结,但想想,边学边写,记录成长过程也挺好的。
下面自底向上,了解LCD的整个工作流程。 一、LCD的组成结构和各结构的功能。 (1)、背光板模组:提供光的来源; (2)、上下偏光板,TFT Glass Substrate,液晶:形成偏振光,控制光线的通过与否; (3)、彩 {MOD}滤光片:提供TFT LCD红、绿、蓝(光的三原 {MOD})的来源; (4)、ITO透明导电层:提供透明的导电通路; (5)、Photo Spacer:提供一固定高度給彩 {MOD}滤光片和TFT Glass Substrate。作为灌入液晶时的空间.及作为上下两层Glass的支撑。
二、屏时序分析 (1)、上面时序图上各时钟延时参数的含义如下: VBPD(verticalback porch):表示在一帧图像开始时,垂直同步信号以后的无效的行数。 VFBD(verticalfront porch):表示在一帧图像结束后,垂直同步信号以前的无效的行数。 VSPW(verticalsync pulse width):表示垂直同步脉冲的宽度,用行数计算。   HBPD(horizontal back porch):表示从水平同步信号开始到一行的有效数据开始之间的VCL的个数。 HFPD(horizontal front porch):表示一行的有效数据结束到下一个水平同步信号开始  之间的VCLK的个数。 HSPW(horizontalsync pulse width):表示水平同步信号的宽度,用VCLK计算。 (2)、帧的传输过程 VSYNC信号有效时,表示一帧数据的开始,信号宽度为(VSPW +1)个HSYNC信号周期,即(VSPW +1)个无效行;VSYNC信号脉冲之后,总共还要经过(VBPD+ 1)个HSYNC信号周期,有效的行数据才出现; 所以,在VSYNC信号有效之后,还要经过(VSPW +1  + VBPD + 1)个无效的行;随即发出(LINEVAL+ 1)行的有效数据;最后是(VFPD + 1)个无效的行; (3)、行中像素数据的传输过程 HSYNC信号有效时,表示一行数据的开始,信号宽度为(HSPW+ 1)个VCLK信号周期,即(HSPW+1)个无效像素;HSYNC信号脉冲之后,还要经过(HBPD+1)个VCLK信号周期,有效的像素数据才出现;随后发出(HOZVAL+1)个像素的有效数据;最后是(HFPD +1)个无效的像素; (4)、将VSYNC、HSYNC、VCLK等信号的时间参数设置好之后,并将帧内存的地址告诉LCD控制器,它即可自动地发起DMA传输从帧内存中得到图像数据,最终在上述信号的控制下出现在数据总线RGB上。用户只需要把要显示的图像数据写入帧内存中。 以上参数可以在屏的datasheet里查到。
三、MTK平台驱动参数
    我们能做的工作是根据屏幕规格书调整时序参数。遇到具体问题,如果自己找不到问题的根源,可以找硬件和原厂FAE定位原因,你配合他们调整其他参数。 1、像素时钟的计算公式:
MTK平台有专门的excel表(`PLL setting.xlsx)来计算像素时钟。 2、其他的时序参数查看屏幕datasheet直接填入即可。 3、值得注意的是极性的设置:
A、首先看数据线,当开始传输第一个数据时,如果EN为下降沿,即传输Valid data 时EN低有效。则:Params->dpi.de_pol=LCM_POLARITY_FALLING; 反之亦然; B、VSYNC和HSYNC分别代表一帧数据和一行数据的开始,当一帧以下降沿开始时,设置:Params->dpi.vsync_pol=LCM_POLARITY_FALLING; 反之亦然;当一行以下降沿开始时,设置:Params->dpi.hsync_pol=LCM_POLARITY_FALLING; 反之亦然。 C、PCLK的极性没有固定的要求,主要是看其与data的关系,即保证latch到正确的数据,这一点和sensor的PCLK设置相同。当开始传输第一个数据时,如果PCLK为下降沿,即在下降沿latch数据时,最好设置:Params->dpi.clk_pol=LCM_POLARITY_FALLING; 反之亦然。   四、调试LCD步骤 1、  点亮显示屏   1.1、查看log,(MTK平台关键字为“LCM Auto Detect”)确保LCD驱动加载成功。   1.2、用示波器查看DVDD、(AVDD、VGH、VGL、VCOM)(有些接口的屏内置了这些电压)各组电压值和上电时序是否符合规格书要求。如果电压值不对,需查看硬件原理图分析电压来源。可以找硬件协助分析。   1.3、用示波器查看reset脚拉起时序是否符合规格书要求。如果未拉起,可以查看硬件原理图,确定GPIO配置正确。如果拉起时序不对可在驱动中,做相应的延时和反复拉起操作。   1.4、查看硬件原理图确保背光使能脚的GPIO配置正确   1.5、用示波器查看是否有图像的差分信号,至此LCD应该能够正常点亮。   2、  调试休眠唤醒效果   2.1、根据规格书说明的上下电时序,用示波器检查DVDD,Reset,AVDD,VGL,VGH,背光使能脚的时序是否符合要求。如果不符合要求可以在驱动中调节相应的上下电顺序和加相应的延时。如果VGL,VGH上电时序不对,要找硬件更换相应的上下拉电阻或者电容。   2.2、确保休眠时先关背光,唤醒时最后开背光,效果比较好。   3、  调试显示屏显示效果   3.1、根据规格书配置以下参数: FRAME_WIDTH、FRAME_HEIGHT、HSYNC_PULSE_WIDTH 、HSYNC_BACK_PORCH、HSYNC_FRONT_PORCH、VSYNC_PULSE_WIDTH、VSYNC_BACK_PORCH、VSYNC_FRONT_PORCH   3.2、根据规格书配置Dclock频率和极性,保证刷新率大于等于60hz   3.3、根据规格书配置图像数据的位数   3.4、微调VCOM电压值   3.5、用示波器查看AVDD是否存在纹波,如果存在找硬件协助加电容进行滤波。   3.6、用示波器查看Dclock的波形是否为正弦波,确保波峰,波谷的值符合LCD要求。典型的波峰需要大于等于0.7*DVDD,波谷小于等于0.3*DVDD,如果不符合要求找MTK协助,修改波形。                     五、常见问题 1、  屏不亮 参照点亮显示屏步骤查找原因。   2、  花屏 可能原因是VGH和VGL电压值不符合要求。可能是VGH,VGL端的限流电阻过大,导致VGH端的电流不够大。可以跟换限流电阻增强驱动能力。   3、  开机或者唤醒时,闪一下白屏 可能原因是背光亮早了。可以在背光亮之前加延时。   4、  开机后,随机出现花屏,白屏,黑屏的现象,进入主界面后,休眠唤醒又正常。 可能原因是开机时MT8193初始化失败。很有可能是touch panel 驱动IC和MT8193 共用一条总线,preloader 阶段,TP需要提前供电,否则会拉住I2C,导致MT8193初始化时 I2C通信超时,无法在预计的时间内正常初始化。可以优先给TP供电。   5、  将机器开着保持画面不动10分钟,出现残影现象。 可能原因VCOM电压不符合要求。可以尝试降低VCOM电压值。   6、  画面整体平移。 可能原因是分辨率设置不对或者帧场同步的极性不对。可以根据规格书修改分辨率和帧场同步的极性。   7、  画面一直有轻微的竖条纹。 可能原因是AVDD不干净有纹波,可以尝试加大电容滤波。   8、  显示屏颜 {MOD}偏绿。 可能原因是提供背光的灯颜 {MOD}偏绿。可以和供应商联系。   9、  背光有轻微的闪动。 可以尝试提高刷新率改善。   10、画面上出现蓝 {MOD}噪点 可能原因是Dclock不符可要求导致像素丢失。解决方法请参照软件知识库m3g035显示屏蓝 {MOD}噪点调试报告   11、休眠唤醒后出现概率性无黑屏花屏。 可能原因是VGH和VGL的电容在休眠之后放点时间不够,再唤醒时,电容仍在放电。导致LCD上电时序不对。可以尝试硬件上将VGL,VGH端的电阻换小,让电容放电时间缩短或者软件上,唤醒前,加延时。让电容放足电。