liao344311

LCD驱动调试中部分常见问题的分析及解决办法

0
阅读(454)

LCD点不亮——无法正确完成初始化:

 

LCD点不亮问题的原因有很多,但出现这个问题后,首先应该判断LCD是否正确完成初始化。最简单的判断方法就是测量LCM的FPC上的电容两端电压。(具体的值可以和模组供应商沟通)

 

如果经过上一步,检测出没有正确完成初始化,接下来首先和模组、IC一起确认初始化代码是否有问题。

 

确认好代码以后还是点不亮,说明是模组无法进行初始化,而不是初始化出错。重新理一遍流程:上电->

 

初始化。上电这个步骤一般不会有问题,如果没有遵循正确的上电时序和RESET的流程的话也比较好排查。

 

那么还能存在哪些问题呢?

 

在上电成功以后,BB会通过LCD串行总线发送LCD的初始化数据,如果这个环节出现问题,那肯定初始化不能成功。在这个过程中能出现问题的就只有SPI

 

的通讯控制这一块了,(通常LCD的通讯接口有CPU和串行总线接口等,手机中较常用的就是串行总线接口,串行总线接口又以SPI接口居多),其实造成

 

SPI通讯不符合LCD模组驱动芯片的要求的原因也是多种

 

多样的:

 

1、虽然都是SPI接口,但是,不同的LCD模组,在控制信号的要求上往往都会有细小的不同,有时候,CPU的SPI 接口甚至都无法产生LCD模组所要求的特定波形时序。有些LCD模组可能还会有特定的势能信号来控制SPI接口工作与否。

 

2、多数LCD驱动芯片其实都是具有读取寄存器和ID号的功能的,但是很多模组在封装的时候往往没有吧芯片的SPI接口的SDO信号线引出来。导致无法通过读取寄存器和ID的方式来判断SPI总线上的通信协议是否正确。

 

那么,如果确定了是SPI通讯控制不满足要求的话,就可以通过修改SPI的读写控制来适配LCD模组IC的要求。

 

如果CPU所提供SPI接口实在没有办法配置到完全和LCD 模组要求的时序波形相同,可以采用CPIO口模拟SPI信号的方式来初始化LCD。

 

最后,如果模组能够将SDO引出就尽量引出,不仅方便调试,而且可以很方便的做不同IC的LCD自适应的兼容。初始化成功,LCD点不亮

 

有的时候LCD点不亮,通过上面讲的方法,测量LCM的FPC上的电容的电压确认初始化正常。即有时候初始化已经成功了,但是LCD还是没有被点亮。这个

 

时候就要仔细的对照LCD模组的规格书来检查了,是否是一些非常规的原因,例如串口和RGB数据接口相互影响或者别的什么原因。

 

见过别人讲的一个案例:某厂商的一款LCD驱动芯片,初始化成功了以后LCD还是点不亮,经查发现,在RGB接口上写入数据前,要通过串口对某一寄存器写

 

入特殊值,但实际上在初始化的代码中已经包含了对该寄存器写值,即使写入这一特殊值以后RGB数据口上仍然写入不了数据。最后发现,对暖气修改以后,不能

 

再写其它的寄存器,否则就会出现问题。当然这也是极个别的现象,不过当你在调试过程中遇到此类问题无法解决的时候,不妨在这个方向上进行检查。LCD图像错位

 

LCD显示在水平方向发生位移,或者在上面或底部有一条几个像素的彩色、白色或黑色条纹。一般来说,出现这种情况,都是因为初始化参数设置不对,和行同步或者场同步信号有关。

 

显示位置有位移或者错位,就检查LCD模组和CPU 上的LCD控制器的行同步与场同步信号的宽度、前后延时、极性的匹配。最可能的就是回扫的前后延时时间不匹配。

 

另外,这种情况通常错位不会很多,如果出现错位了一半的图像之类的情况,通常就是别的原因造成的了。而

 

且有时候,有的LCD的行信号、场信号的设置还和LCD驱动芯片的部分电压参数的取值设置有关。LCD大片图片错位、叠加、重复

 

LCD显示上大范围的图像出现错位、叠加或者重复,出现这种情况一般不会是行同步或者场同步信号的延时引起的,基本可以排除这方面的影响。可以间检查下抽

 

样等功能的参数是否正常,还有就是因为LCD的硬件平台

 

不同,而在时序或者时钟频率上存在差异引起的。碰见这种情况首先应该做的就是先仔细计算DMA传输

 

参数。其它的情况要具体问题具体分析。

 

UBOOT过程中LCD不显示

 

开机的时候在UBOOT过程中LOGO不显示,只有背光亮。这种情况出现的时候如果其它都正常,不妨检查下FLASH

 

的配置。我碰见这个问题的原因最后是

 

FLASH的MCP没有设置正确。FLASH换小以后MCP只有CS0这一片封装,而在配置文件里还是沿用以前的CS0和CS1两片的配置,从而可能会引

 

起各种意想不到的问题。开机LCD亮的瞬间有花屏

 

出现这种问题,一般都是由于LCD在初始化完成后刷新第一副图像未完全准备好的时候背光已经亮了。解决的

 

办法就是在UBOOT时候背光亮之前的延时相应的加长一点问题:RGB接口的屏,在uboot显示正常,进入kernel显示时先花屏几秒钟然后才显示正常;打log显示在uboot阶段,dpi

 

controler 的framebuffe地址一致,进入kernel后,dpi controler 的framebuffe 地址发生变化。

 

1.在调试mipi接口的时候,lcm

 

driver添加了te功能,在进入kernel那一瞬间同步紊乱而出现花屏,解决办法是在uboot的时候不要做te的动作,在进入kernel后再开

 

启同步信号。

 

2.framebuffersize设置过小导致kernel时logo未能正常加载,解决办法是将buffersize改大。

 

屏的帧同步问题

 

现象:在刷屏数据比较频繁(如camera preview界面移动屏幕时)会有一条或多条断屏现象解决方法:

 

1. 开启mak中的帧同步宏:SYNC_LCM_SUPPORT = TRUE

 

2. 要在lcd_init函数中打开te功能并设置VSYNC模式,若上层帧同步宏SYNC_LCM_SUPPORT = TRUE,但是

 

lcd_init函数中未打开TE功能则会导致不能开机。