硬件排查第一步:检查LCD接口电压与信号完整性
花屏问题,十有八九出在硬件上。这不是我吓唬你。
我做了这么多年嵌入式,见过太多人一上来就翻LVGL代码、调buffer、改刷新率,折腾半天发现——嗯,是排线松了。或者电压不对。
所以这一章,咱们老老实实从硬件排查开始。先看电压,再看信号。这两步走完,至少能排除掉一半以上的花屏原因。
1. 先测电压:LCD供电是不是在“安全区”?
LCD模组一般需要三组电压:VCC(逻辑供电)、IOVCC(接口电平)、VLED(背光)。任何一个不在规格范围内,都可能直接导致花屏。
我个人习惯,拿到一块新板子,第一件事不是跑demo,而是拿万用表点一下这几个点:
- VCC(3.3V / 2.8V)——主控给LCD的供电,波动不能超过±5%。
- IOVCC(1.8V / 3.3V)——接口电平,必须和MCU的IO电压匹配。
- VLED(背光正极)——背光电压,通常12V~24V,纹波太大会导致横纹闪烁。
我在项目中遇到过一块屏,上电后偶尔花一下,查了半天发现是VCC走线太长,压降到了3.1V。LCD模组在3.0V以下就开始“乱码”了。加粗了电源线,问题解决。
2. 信号完整性:波形“干净”吗?
电压没问题,那就上示波器。重点看这几个信号:
| 信号 | 常见问题 | 典型表现 |
|---|---|---|
| VSYNC(帧同步) | 频率不稳、毛刺多 | 画面上下抖动、撕裂 |
| HSYNC(行同步) | 占空比不对、过冲 | 水平条纹、错位 |
| DCLK(像素时钟) | 抖动大、边沿不陡 | 像素错乱、颜色不对 |
| DATA[0:7](数据线) | 串扰、建立/保持时间不足 | 局部花屏、颜色块错位 |
你想想看,如果DCLK的上升沿抖动超过几十纳秒,LCD控制器采样数据时就会“拿错”电平。说白了,就是数据对不上号,画面自然就花了。
我曾经调试一块480×272的屏,花屏表现为“左半屏正常、右半屏乱码”。用示波器一抓,发现DCLK走线过长,反射严重,边沿出现了“台阶”。在时钟线上串了一个22Ω电阻,波形干净了,花屏消失。
3. 接口时序:MCU和LCD的“握手”对吗?
电压和波形都OK,但花屏还在?那就要看时序了。
MCU和LCD之间是通过特定协议通信的——不管是8080并口、SPI还是RGB接口。每个协议都有严格的时序要求:建立时间(tSU)、保持时间(tHD)、时钟周期(tCYC)等等。
我习惯把LCD数据手册里的时序参数表截下来,和MCU的配置对比着看。举个例子:
// LCD 数据手册要求(8080 并口):
// tSU(数据建立时间) ≥ 15ns
// tHD(数据保持时间) ≥ 10ns
// tCYC(写周期) ≥ 100ns
// MCU 实际配置(STM32 FMC):
// 设置地址建立时间 = 1 个 HCLK(约 6.25ns @ 160MHz)
// 设置数据建立时间 = 2 个 HCLK(约 12.5ns)
// 保持时间 = 1 个 HCLK(约 6.25ns)
// 问题:数据建立时间 12.5ns < 15ns,不满足要求!
// 解决方案:降低 HCLK 或增加 FMC 时序参数
你看,MCU跑得快不一定好。时序不匹配,数据就传不准。花屏只是表象,根因是“握手”没握上。
4. 一张图看懂排查流程
下面这张图,是我自己总结的排查路线。每次遇到花屏,我就按这个顺序走一遍,很少跑偏。
这张图我贴在工作台旁边好几年了。每次花屏,从“花屏出现”开始,按箭头走。电压不对就查电源,波形不对就查走线和匹配,都OK了再碰软件。顺序别搞反。
5. 实战避坑:我踩过的几个坑
- 排线接触不良——我曾经花了两天查代码,最后发现是FPC排线没插紧。重新插拔,好了。所以第一步,先物理检查。
- 地线回路——LCD和MCU板之间地线太细或太长,会导致信号参考地电位不一致。波形看起来正常,但数据就是错。加粗地线或增加地线数量,效果立竿见影。
- 背光PWM干扰——背光PWM频率如果落在音频范围或与帧率接近,会在画面上产生横纹。把PWM频率提到1kHz以上,或者用DC调光,能解决。
- 电平不匹配——MCU是3.3V,LCD是1.8V接口,中间没加电平转换。长期工作可能烧坏LCD,短期表现就是花屏。别省这个芯片。