驱动之路#05:如何调试 LCD?

在嵌入式开发中,LCD 调试是绕不开的外设,因为大多数嵌入式产品都需要通过 LCD 与用户进行交互。通过前面 LCD 系列文章,我们已经很清楚 LCD 的工作原理以及流程。今天分享我个人的 LCD 调试思路,仅供参考。

调试流程

当我们拿到一块 LCD 屏幕,首先确认硬件的电压以及线序。硬件确认没问题后,接上屏幕查看背光是否点亮。背光不亮,需要先解决背光问题再往下。然后根据 LCD 参数配置 dts 屏参、复位/使能脚以及时钟等,并确认使用的具体屏驱动以及其加载情况。最后就是根据 log 以及现象解决问题。

说明:全志平台的显示分为 uboot 和内核阶段(这话具有时效性),需要同时修改这两个阶段的 dts。而 RK 平台显示共用一份屏参(参考本系列《RK 调屏,为何无需修改 uboot dts?》),因此调试时只需关注内核阶段即可。

排查思路

排查时一定要遵循"先硬件后软件,先基础后细节"的原则。千万不要跳过简单步骤,不然你很有可能折腾半天软件,却发现硬件是虚焊。硬件是基础,这一步没搞定,后续软件调试都是白费(切记!)。因此我的排查建议是,出现问题第一时间先怀疑硬件(胜率高达 80%),确保硬件没问题再排查软件。

对了,还有一点就是要善用交叉验证,尽量避免拿着一个坏了的 LCD 屏在那折腾半天。

最后说句废话:具体问题具体分析。不过实际情况确实如此,这里无法列出所有情况,只能提供一些常见问题的排查思路。

背光不亮

  1. 使用万能表,对应原理图确认硬件各路电压;

  2. 使用示波器,确认 PWM 背光脚是否有波形输出,并确认用户层是否存在并可控的背光节点;

  3. 如以上两步都没有问题,换一个屏幕。

背光亮,但黑屏、花屏或乱码

  1. 如果是 MIPI 接口,跟屏厂确认屏参以及 init code,没问题就往下;

  2. 确认配置的时钟频率、像素格式是否正确;

  3. 示波器抓一下时钟波形,确认是否有输出;如有,那换个屏测试。如没有,继续往下排查。

  4. 确认显示链路、图层是否正确,这个一般可以通过 log 查看。不同平台显示链路和图层会有所差异,具体排查手段参考原厂资料(全志平台要特别留意 uboot )。

  5. 使用示波器抓数据脚波形,确认是否有数据在发送;如有,换屏。

关于 LCD 调试你又有哪些独到的见解或经验?欢迎留言交流。

(完)

相关推荐
用户83514140494912 小时前
const的四种位置,含义完全不同
嵌入式·源码
Zevalin爱灰灰2 天前
Linux入门第二部分(ARM裸机篇) 第二章 Cortex-A7 MPCore架构与ARM汇编基础
linux·汇编·arm开发·嵌入式
Zwawa2 天前
串口命令如何从字符串长成协议:帧头、长度、校验和与状态机
c语言·单片机·嵌入式
小李不想当小白2 天前
BKP备份寄存器与RTC实时时钟(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
La Pulga2 天前
【FreeRTOS源码学习笔记】链表的实现
数据结构·笔记·stm32·mcu·链表·嵌入式·freertos
凉、介2 天前
深入理解 ARMv7-A | Generic Timer
笔记·学习·嵌入式·arm
La Pulga2 天前
【FreeRTOS源码学习笔记】任务创建
笔记·stm32·mcu·学习·嵌入式·freertos·实时操作系统
Zevalin爱灰灰3 天前
Linux入门第二部分(ARM裸机篇) 第一章 开发环境搭建与了解
linux·arm开发·嵌入式
菜鸟小芯3 天前
【Quectel Pi M2 实战】Day3 USB 摄像头图像采集:拍照、录像与踩坑记录(V4L2 + FFmpeg)
ffmpeg·嵌入式
Zwawa3 天前
串口为什么会丢字节:从轮询到中断和环形缓冲区
c语言·单片机·嵌入式