首页 » 软件开发 » 嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法(调试分析显示屏幕驱动)

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法(调试分析显示屏幕驱动)

萌界大人物 2024-07-25 00:00:59 0

扫一扫用手机浏览

文章目录 [+]

废话不多说,直接上干货:

下面是MTK显示流程框图:

MTK显示流程

嵌入式老鸟经验:安卓MTK平台LCD驱动调试常见问题分析及解决办法(调试分析显示屏幕驱动) 软件开发
(图片来自网络侵删)

一般的LCD显示接口类型:

1. 并行接口:

MCU接口,LCD模组须有自己的GRAM。

RGB接口,通过时钟同步来实现同步传输,此模式不需要LCD有GRAM来缓存数据。

2. 串行接口:

SPI接口。

MDDI接口,高通公司的一种接口方式,传输率高,功耗低。

DSI MIPI接口,MIPI联盟推出的一种高速低耗接口。

LCD调试要注意以下问题:

1. gamma是否超标。

2. 刷新率是否合适。

3. flicker现象是否严重或能否轻易察觉。

4. ESD是否合格。

5. 背光调节是否存在问题,特别是自动调节是否有不平滑现象,或者亮度调定某个范围屏幕出现闪烁等。

6. 图片显示是否有失真的现象。

7. 是否有噪点等问题。

下面是在项目上遇到的实际问题,灰常干货:

遇到的问题:

1. ESD问题。

问题描述:正反打静电,屏幕出现花屏或黑屏。

问题分析:LCD有可能被打死了,或者与LCD连接的时钟或数据线被打乱,造成数据乱,显示花屏。

解决方案:mtk平台有一个时刻检测LCD是否受到静电干扰的线程,一旦发现问题会重新初始化LCD,具体的实现可参考MTK提供的文档<DSI Video Mode Support v1.0.pdf>.

2. TP失效。

问题描述:manggo项目上出现TP偶尔失效的现象。
有时开机就无法操作tp,有时开关屏幕就出现无法操作屏幕,有时长时间的使用也会偶尔出现tp失效。

问题分析:通过与TP FAE沟通了解,能够影响TP的主要因素是LCD的Vcom信号。
同时,通过同LCD FAE沟通也了解到,LCD的刷新率可能也会对TP造成影响。

解决方案:LCD的vcom信号通过修改调节LCD相关寄存器得到一定的优化,同时TP那边也通过调节固件参数,TP失效的出现几率有所降低,最后再将LCD的刷新率降低一些但不影响绝对实用,问题得到基本解决,测试也再没发现此问题。

备注:此问题出现在video模式的LCD屏幕上,暂时在command模式的屏幕上没有发现,同时与之搭配的TP也是很低廉的,做工也不是很精细,或许也是其原因。

3. 噪点。

问题描述:在bear项目上遇到的噪点问题,就是看上去麻点,看上去“很脏”,这个在用户体验上很不好。

问题分析:通过与MTK沟通了解,最终锁定在MTK自己的为实现去除contour现象,就我们肉眼观察最直接的就是像梯田一样,一圈圈的,这种现象在一张渐变色彩的图片上观察最为明显,但用户体验要好很多。
对于contour现象,只是在LCD的分辨率低于24bits时才会出现,因为本身的操作系统都是以24bits—RGB888真彩存储的,最终处理后到LCD显示,如果LCD低于24bits就会砍掉多余的位,这样显示起来就会失真。

解决方案:①换屏幕,提高到24bits真彩的。
②取消MTK自有的去噪功能,同时接受contour现象。
最终选定为第二种,因为成本。

4. 屏幕闪烁。

问题描述:bear项目上遇到的问题。
在将背光调到最低时,仔细观察屏幕会看到在闪烁。

问题分析:因LCD背光控制通过PWM,PWM通过占空比来实现对亮度的调节。
PWM可通过调节频率来降低这种闪烁的几率。

解决方案:提高PWM频率的同时,对背光调节的亮度范围重新设定,使其避开了会出现问题的值范围。

5. Yoko项目出现的开机logo显示不正常问题。

问题描述:LCD在uboot中显示不了bootlogo,但是在kernel中重新初始化LCD寄存器的话是可以显示正常,以后都正常。

问题分析:首先怀疑是uboot中初始化代码的问题,但是kernel和uboot都是用的同一份代码,所以应该不是这个问题。
但是可以比较确定是LCD初始化有问题,我们就会考虑上电是否正确,上电时序是否正确等等。

解决方案:通过排查,发现在uboot中有一个电压并没有在IC初始化前上好,这个问题解决了,但是uboot显示的问题还没解决,通过上电时序排查,在LCD的3个电压全部上好后100ms,IC寄存器开始初始化,一般来说,上好电后,IC的正常工作至少应该要几百毫秒,所以怀疑是上电后IC没正常工作就开始寄存器设置了。
将IC初始化时间延后,问题解决。

要做好LCD的性能调试,需要对LCD驱动架构以及LCD的芯片参数有很好的了解,才能对症下药。

本文只是自己在调试过程中遇到的一些问题以及解决思路,不具有通用性,针对有缘人,请佛系阅读,喜欢的话,请三连,后面有时间会多写写Linux内核驱动开发、inux调试及性能优化、嵌入式开发中经常用到的软件开发技能栈,比如netlink、mmap、dma、大数据传输、中断、多线程调度优化等常用必备技能,关注皮皮哥,少走弯路。

标签:

相关文章

语言中的借用,文化交融的桥梁

自古以来,人类社会的交流与发展离不开语言的传播。在漫长的历史长河中,各民族、各地区之间的文化相互碰撞、交融,产生了许多独特的语言现...

软件开发 2025-01-01 阅读1 评论0

机顶盒协议,守护数字生活的新卫士

随着科技的飞速发展,数字家庭逐渐走进千家万户。在这个时代,机顶盒成为了连接我们与丰富多彩的数字世界的重要桥梁。而机顶盒协议,作为保...

软件开发 2025-01-01 阅读1 评论0

语言基础在现代社会的重要性及方法步骤

语言是人类沟通的桥梁,是社会发展的基础。语言基础作为语言学习的基石,对于个人、社会乃至国家的发展具有重要意义。本文将从语言基础在现...

软件开发 2025-01-01 阅读2 评论0

粤语电影,传承文化,点亮时代之光

粤语电影,作为中国电影产业的一朵奇葩,以其独特的地域特色、丰富的文化内涵和鲜明的艺术风格,赢得了广大观众的喜爱。本文将从粤语电影的...

软件开发 2025-01-01 阅读5 评论0

苹果游戏语言,塑造未来娱乐体验的基石

随着科技的飞速发展,游戏产业逐渐成为全球娱乐市场的重要支柱。在我国,游戏产业更是蓬勃发展,吸引了无数玩家和投资者的目光。而在这其中...

软件开发 2025-01-01 阅读1 评论0