LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx

上传人:b****6 文档编号:17246007 上传时间:2022-11-29 格式:DOCX 页数:5 大小:19.16KB
下载 相关 举报
LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx_第1页
第1页 / 共5页
LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx_第2页
第2页 / 共5页
LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx_第3页
第3页 / 共5页
LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx_第4页
第4页 / 共5页
LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx

《LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx》由会员分享,可在线阅读,更多相关《LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx(5页珍藏版)》请在冰豆网上搜索。

LCD驱动调试中部分常见问题的分析及解决办法文档格式.docx

在上电成功以后,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后,dpicontroler的framebuffe地址发生变化。

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

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

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

屏的帧同步问题

现象:

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

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

SYNC_LCM_SUPPORT=TRUE

2.要在lcd_init函数中打开te功能并设置VSYNC模式,若上层帧同步宏SYNC_LCM_SUPPORT=TRUE,但是lcd_init函数中未打开TE功能则会导致不能开机。

3.LCD_IOCTROL函数要配置正确,如下红色部分要注意跟

LCD_INIT中的设置相匹配

caseLCM_IOCTRL_QUERY__FRAME_RATE:

*(kal_uint32*)(Parameters)=60;

//(*)byinitial

setting//需要与lcd_init函数中设置的一样

returnLCM_IOCTRL_OK;

caseLCM_IOCTRL_SET__FRAME_RATE:

returnLCM_IOCTRL_NOT_SUPPORT;

caseLCM_IOCTRL_QUERY__FRAME_MARKER:

caseLCM_IOCTRL_SET__FRAME_MARKER:

case

LCM_IOCTRL_QUERY__SUPPORT_H_V_SIGNAL_FUN

C:

LCM_IOCTRL_QUERY__SUPPORT_V_PULSE_WIDTH:

LCM_IOCTRL_QUERY__SUPPORT_H_PULSE_WIDTH:

returnLCM_IOCTRL_NOT_SUPPORT;

caseLCM_IOCTRL_QUERY__BACK_PORCH:

*(kal_uint32*)(Parameters)=8;

//(*)byinitialsetting//需要与lcd_init函数中设置的一样

caseLCM_IOCTRL_QUERY__FRONT_PORCH:

//(*)byinitialsetting//需要与lcd_init函数中设置的一样

caseLCM_IOCTRL_SET__BACK_PORCH:

caseLCM_IOCTRL_SET__FRONT_PORCH:

caseLCM_IOCTRL_QUERY__TE_EDGE_ATTRIB:

*(kal_uint32*)(Parameters)=

LCM_TE_FAILING_EDGE;

//此处注意用下降沿returnLCM_IOCTRL_OK;

LCM_IOCTRL_QUERY__SUPPORT_READBACK_FUNC:

caseLCM_IOCTRL_QUERY__SCANLINE_REG:

caseLCM_IOCTRL_QUERY__IF_CS_NUMBER:

*(kal_uint32*)(Parameters)=LCD_IF_PARALLEL_0;

returnLCM_IOCTRL_OK;

caseLCM_IOCTRL_QUERY__LCM_WIDTH:

width

caseLCM_IOCTRL_QUERY__LCM_HEIGHT:

*(kal_uint32*)(Parameters)=320;

//(*)bygram

height

caseLCM_IOCTRL_QUERY__SYNC_MODE:

LCM_TE_VSYNC_MODE;

//此处注意用VSYNC模式returnLCM_IOCTRL_OK;

4.如上三点都用到之后若还是有断屏现象,那么就要确认硬件接口TE信号有接出来,包括CPU和LCD。

如下图:

LPTE脚就是已接出的TE信号如果还不能确认屏是否已接出TE脚,那么可以用示波器量出来,方法如下:

要一直有刷屏的状态下才能量出来,故进入到camerapreview界面,然后量取TE脚的信号,如果是比较规律的一个个脉冲方波,那么就已经接出同步信号。

注意:

能量出TE信号前提必须将软件TE打开才行。

5.如果确认了有TE信号输出那么就需要测量一下屏的CS脚和TE脚的信号。

如下图所示,ta和tb的相同,也就是说每帧数据的起始点和te信号之间的相对位置是一定的,而且Tcs不能大于两个Tte,这时候说明同步了。

如果我们测到Tcs大于两个Tte,那么是肯定没有同步到,肯定会有断屏现象的。

此时我们需要将Tcs缩短,或是将Tte加长;

1)缩短Tcs可以将init_lcd_interface(void)函数中的如下几个参数值减小,但是不能太小,太小了可能会引起白屏问题。

SET_LCD_PARALLEL_CE2WR_SETUP_TIME((kal_uint3

2)3);

//0

SET_LCD_PARALLEL_CE2WR_HOLD_TIME

(1);

SET_LCD_PARALLEL_CE2RD_SETUP_TIME

(1);

SET_LCD_PARALLEL_WRITE_WAIT_STATE(3);

//22////1

SET_LCD_PARALLEL_READ_LATENCY_TIME(13);

//10

SET_LCD_ROI_CTRL_CMD_LATENCY

(1);

2)通过降低屏的帧率来加大Tte周期,这里的帧率调整必须要与LCD_IOCTROL函数中设置的一致。

3)如果Tcs在两个Tte之内,但是Ta!

=Tb,那么也可以通过微调屏的帧率来使Ta=Tb。

通过如上方法基本可以做到无断屏现象,但是还有其他很多因素可以调节,比如:

前廊与后廊,tearscanline等等,这

些对帧同步的影响具体还不是很了解,还有待研究。

另外要注意一下:

如果硬件都有有接出TE脚,且上层将TE功能打开,但是底层屏的TE功能未打开,那么就会引起不开机状态,因为在开机时上层搜索屏的TE信号,屏需要返回TE信号,手机才会开机。

当然如果没有焊接屏的话也是不开机的,因为没有屏就不能返回TE信号而不开机。

(这里主要是针对工厂没有焊接屏时需要开机处理时的一些问题,针对这种情况需要在软件中判断是否有焊接屏,有的话上层才打开TE功能,没有就将上层的TE功能关闭,这样不焊接屏是也能开机了)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1