一听到屏幕闪,很多人第一反应就是换背光、调刷新率、改PWM占空比。实际上做LCD驱动调试的老手都清楚,大部分闪烁问题并不在背光,而在面板的偏置电压体系——尤其是VCOM、VGH、VGL这三个老熟人。只要你把这三个电压理顺,很多诡异的Flicker能直接在驱动端压下去,根本不用动背光。
这块内容是我这几年调试TFT LCD项目时反反复复用到的核心经验。从最普通的1.8寸128x160小屏,到带GOA的笔记本屏,再到带DC调光的车机屏幕,基本原理都一样:液晶分子对电压极其敏感,TFT开关管要靠VGH打开、靠VGL关死,像素电压与VCOM之间的电势差决定了灰阶亮度。只要其中任何一个电压在帧周期里出现波动、抖动、漂移,人眼就会看到亮度周期性变化,也就是俗称的Flicker。
这篇文章我就把自己在产测、样机调试和量产导入过程中踩过的坑完整写出来,从原理到实操,从示波器到寄存器,尽量做到让你看完也能照着自己的板子去查一遍。适合做MCU驱动LCD的工程师、屏厂FAE、模组厂硬件工程师参考,当然,如果你只是单片机爱好者玩屏遇到闪烁问题,这篇文章同样适用。
1. 三个电压的分工,先从液晶这一面说起
先说个容易混淆的点:标题里提到的VCOM、VGH、VGL在LCD驱动领域是指三路典型的电源或参考电压信号,不是软件里的虚拟串口。网上搜"VCOM"经常冒出来一堆虚拟串口工具,这完全是两码事。在屏的规格书里,VCOM一般叫VCOM或VCOMH/VCOML,是面板公共电极的电压参考;VGH叫Gate On Voltage或VGH(TFT开启电压);VGL叫Gate Off Voltage或VGL(TFT关闭电压)。搞混了这个,后面看规格书都会看错行。
1.1 没有稳定的VCOM,画面就像失去了地平面
LCD显示的基本原理说起来并不复杂:每个像素相当于一个电容结构,像素电极和公共电极之间夹着液晶分子,两个电极之间的电势差决定了液晶分子的偏转角度,偏转角度又决定了背光透过的光量。像素电极上的电压来自源极驱动IC(Source Driver或Source IC),在TFT导通的瞬间写入;公共电极的电压通常由VCOM电源提供,在全面板范围内是统一的参考电位。
所以最终作用于液晶分子两端的是像素电压与公共电极电压的差值。如果VCOM电压在整个面板上不稳定、不均一或者随时间波动,面板每个像素的亮度基准都在变,反映到视觉上就是闪烁、发灰、条纹或者整体亮度漂移。实际调试中最常见的现象是:屏能亮,图像也有,但就是某个灰阶附近特别闪,这种问题排除了背光之后,90%以上都出在VCOM上。
这里有个很多人没意识到的关键点:VCOM的稳定性有两个层面。第一是DC层面的平均值要准确,要在最佳公共电压附近;第二是AC层面要保持低纹波、低噪声,不能在帧周期里跟着数据或gate信号一起抖动。第二个层面往往比第一个更致命,因为平均值错了顶多导致残影或灰阶偏移,但噪声耦合会导致清晰的闪烁。
1.2 VGH和VGL,一个管唤醒,一个管睡死
VGH和VGL主要作用于TFT的栅极。TFT薄膜晶体管本质上是一个受电压控制的开关,栅极电压高于源极一定阈值后,沟道导通,数据线上的像素电压才能写入像素存储电容;栅极电压拉低到某个负值以后,沟道关断,像素电容里存的电荷才能在整帧时间内保持住。
VGH通常是一个正电压,常见在15V到25V之间,具体值取决于开口率、面板分辨率、TFT特性。有的小尺寸MCU屏用的是15V或16V的VGH,大尺寸带GOA的屏可能到30V以上。VGL则是一个负电压,常见的在-5V到-15V之间。VGL要保证TFT在关闭状态下有足够的负压裕量,防止亚阈值漏电,否则像素电荷在一个帧周期内漏掉一部分,画面就会发暗、发花,并且和Flicker绑定在一起出现。
这里我打一个偏生活化的比方:VGH就是"叫醒服务",TFT要打开时给它一巴掌让它彻底醒过来;VGL是"睡死服务",关掉之后要让它睡得死死的,翻身都不行。如果VGH电压不够,TFT打不开或打开不完全,像素写入电压不够,画面偏暗偏色;如果VGL不够负,TFT关不严,像素电荷hold不住,画面发灰、闪烁,而且刷新一慢闪烁越明显。
1.3 三剑客的关系,更像一个耦合系统
很多人以为调VCOM、VGH、VGL是独立的,实际上它们是一个耦合系统。VGH变化会通过TFT的寄生电容Cgs耦合到像素电极,进而影响到实际作用在液晶上的电压;VGL的电压水平会影响TFT关断的瞬态过程,gate信号的下降沿如果太缓,会在像素上产生kickback效应,直接改变有效像素电压,这个在和VCOM配合时就变成了一个很微妙的平衡。
这也是为什么我们在调试时总是说"先定VGH/VGL,再调VCOM":把开关管的开关条件固定住,然后再去调公共电压匹配像素电压的偏移量。否则你VCOM调了半天,VGH一改全部白调。这个顺序问题在这行里吃过亏的人太多了,建议每次拿到新项目都按这个思路来,别跳步。
2. 闪烁背后的物理机制,为什么不是调个电压就完事
先明确一个概念:LCD本身是一个慢响应器件,液晶分子偏转需要时间,通常从几毫秒到十几毫秒不等。而背光是一直亮的,所以人眼感知到的亮度是背光透过液晶分子的时间积分效果。如果液晶分子上的电压在每个帧周期都精确重复,那么时间积分得到的亮度是稳定的;如果每一帧的电压都有一点点不同,时间积分的结果就会产生低频的亮度波动,这就是Flicker。
2.1 像素电荷保持模型,Flicker的源头在存储电容
像素电路的核心就是TFT加存储电容Cst。TFT是开关,Cst是存电荷的小水池。一个帧周期内,TFT打开的时间只有一行扫描的时间,其余时间TFT完全关闭,Cst上的电荷就决定了像素电压。理想情况下Cst是个绝缘电容,电荷不会跑,电压不会变;实际情况是Cst存在漏电通路,TFT关断时也存在亚阈值漏电,液晶本身也有微小的漏电流路径。
如果VGL不够负,TFT的漏电就会变大,Cst上的电压在帧周期内慢慢下跌,像素电压在亮场后逐渐降低,等到下一帧重新写入时又恢复,人眼看到的就是亮度周期性波动。这种现象有个典型特征:闪的频率和帧率一致,但严重程度和显示灰阶有关,通常中灰阶最明显,全黑全白反而看不出闪。这也是为什么产线上测试Flicker都用特定的灰阶图(通常是127灰阶左右)而不是全白画面。
2.2 feed-through和kickback,偷走像素电荷的两个大爷
三剑客里最容易让人忽略的其实是VCOM在动态过程中受到的耦合干扰。TFT在关闭的瞬间,栅极电压从VGH跳变到VGL,这个跳变幅度动辄20V到40V,这么陡的跳变会通过TFT的栅漏寄生电容Cgd耦合到像素电极,造成一个电压下跳,这个效应叫feed-through或kickback。跳变的幅度大约等于ΔV = (VGH - VGL) × Cgd / (Cgd + Cst + Clc),也就是"栅极跳变乘以电容分压比"。
这个下跳电压是每一个TFT关断时都会发生的,理论上所有像素都一样,所以设计者通常会抬高VCOM来补偿这个下跳,让开关切换之后的"有效电压"刚好等于目标灰阶电压。问题在于,寄生电容和液晶电容并不是恒定的,它们随灰阶、温度、工艺偏差变化,所以一秒种世界没有完美补偿,任何跑偏都会导致闪烁或者色偏。实际上,每次调试过程中我们反复在VCOM寄存器里加几个毫伏、减几个毫伏,干的就是这件事。
2.3 极性反转与VCOM,闪烁和寿命之间的钢丝线
LCD不能一直加直流电压,否则液晶会电解老化,所以驱动IC必须不断反转像素电压的极性,这就是frame inversion、row inversion、dot inversion这些名词的由来。不论哪种反转方式,公共电极都需要一个固定的参考电压VCOM,由像素电压交替在VCOM上下摆动形成正负电场。
这时候VCOM就变得很关键了:如果VCOM偏高,正负半周期的电场强度不对称,亮度在一个周期内出现"两凸"或"一高一低",表现出来就是每帧一个暗一个亮,即50Hz或60Hz的闪烁。如果VCOM偏低,同样会出现不对称。只有VCOM落在最佳值上,正负半周期的亮点完全一致,人眼时间积分出来的亮度才完全没有帧频分量。这也是产线DBC(Display Brightness Compensation)和FMA(Flicker Marginal Adjustment)的核心:找到那个让闪烁最小化的VCOM值。
3. 驯服闪烁的调试实战,从仪表到步骤
理论说太多没用,直接上实操。我调试闪烁的思路大致是:先确认背光无频闪,再锁定偏置电压体系,然后用工具量化Flicker,最后在寄存器里固化结果。
3.1 工具准备,别急着碰示波器
仪表方面,一台带宽100MHz以上的数字示波器肯定要,测VGH、VGL、VCOM的纹波和动态;一个高精度电压表或万用表,用来标定DC值;有条件的话弄个亮度计或Flicker分析仪,比如CA-310或类似设备;没有的话用手机相机慢动作也能做定性判断。
示波器测VCOM有几个细节。探头要短地线,一定要用弹簧接地短针,不能用普通鳄鱼夹长地线,否则地线电感会把高频噪声全耦合进来,看到的全是假纹波。VCOM纹波要求通常在几十毫伏以内,具体看IC规格书。测VGL时注意不要直接夹在IC引脚上就完事,建议同时测栅极实际波形,尤其是靠近面板端,重点看关断电平是否稳定,有没有在帧与帧之间出现随数据变化的波动。
3.2 定电压顺序:VGH → VGL → VCOM → 栅极波形
拿到一块新屏,我习惯先按规格书设置VGH和VGL,然后看栅极波形是不是一把到位的方波。发现上升沿或下降沿偏缓,就先检查栅极驱动能力或RC负载,不要急着调VCOM。只有TFT开关波形干净了,VCOM的调试才有意义。
调VGL时有个经验:不是越负越好。VGL太负,栅极关断速度和CP电路功耗都会上升,在某些GOA面板上还会引发goa管子的阈值漂移,反而造成更隐蔽的闪烁问题。常规做法是在规格书范围内往不闪烁的方向一点点加,找到一个干净利落又不过度负压的平衡点。至于VGH,一般直接按规格书给,不需要自己乱加,除非是低温环境下TFT开启能力不足,才会适当提高。
3.3 VCOM粗调与细调,用眼睛和仪器双重判断
粗调阶段可以先显示一个127灰阶或其他中灰画面,手动改VCOMCOM寄存器(有的IC叫VCOM或VCOML/VCOMH配置),每次变化步长可以稍大一些,快速扫一遍找到闪烁最不明显的大致区间,同时伴随色偏观察。细调阶段把步长缩小到10mV甚至5mV级别,用Flicker分析仪读数,寻找闪烁值最小的点。没有分析仪就用相机固定快门时间和光圈,连拍几张看亮度波动,或者直接用手机录一段慢动作视频,通过播放帧的亮度差异来判断。
这里说一个被很多人忽略的点:Flicker的最佳VCOM并不是全亮度范围内都适用,不同灰阶的最佳VCOM可能会有偏移。量产导入时一般以中灰阶为准,如果你发现低灰阶闪得厉害而中灰阶不闪,那通常是Gamma或低灰阶补偿的问题,不能只靠改VCOM解决。反过来如果所有灰阶都闪,那才说明VCOM整体偏了。
3.4 低亮度、DC调光和刷新率切换场景下的调整
现在很多屏支持DC调光或者类DC调光,这类方案中低亮度下的Flicker表现和高亮度完全不同。因为DC调光是通过改变VCOM或数据电压实现亮度调整,低亮度时有效电压非常小,此时几十毫伏的VCOM偏移对显示效果的影响会被放大很多倍。因此低亮度挡位的DC调光参数需要单独标定VCOM偏移,不能用高亮度数值直接代入。
刷新率切换也是一个容易踩坑的点。现在很多NB屏支持144Hz和60Hz之间切换,面板在刷新率切换瞬间会出现短暂的电荷重置或VCOM跳变。如果VGL不够稳,切换后第一帧容易闪一下。建议在切换时序里先给VGL和VCOM一段时间稳定(比如几个帧的blanking),再打开显示内容,能有效解决问题。
4. 常见Flicker问题与排查思路实录
工程实践里Flicker是表象,背后原因五花八门。每次拿到一台闪烁样机,别急着调VCOM和改寄存器,先用眼判断闪烁的类型和范围,能省很多时间。下面是我整理的几类最常见的现象和排查思路。
4.1 全屏均匀闪、局部区块闪、跑马灯式闪,归属各不相同
如果全屏均匀地明暗交替,那几乎可以锁定在公共类问题:VCOM本身不稳、背光频闪、电源纹波影响整体亮度。这时候把屏切换到纯色画面逐灰阶看,同时用示波器看VCOM和电源纹波,很快能找到元凶。如果只是屏幕上半部分或边缘区域闪,那么优先怀疑GOA或gate侧信号在扫描过程中的压降不均衡,或者是VCOM在面板内部的分布电阻不均匀造成的中心到边缘压差。
还有一类是跑马灯式的闪,一条一条从一边向另一边移动,这通常是gate/GIP信号时序问题,而不是VCOM问题。出现这种现象时,重点查scan信号的每行脉宽是否足够、VGH在扫描末端的瞬态跌落是否过大、GOA上拉管是否因为负载不均导致延迟。我曾遇到一个案子,上半屏正常,下半屏闪,最后查到是VGH走线过细,在远端压降过大导致TFT开启不足,加宽铜箔后解决。
4.2 条纹闪烁与显示不均,别把两个问题混为一谈
条纹闪烁一般有两种表现:竖条纹闪和横条纹闪。竖条纹闪通常和Source驱动有关,比如数据极性反转方式设置不当、source端输出异常、或者COF绑定不良;横条纹闪则更多和gate侧相关,比如扫描时序异常、VGH或VGL动态负载波动、panel里栅极走线阻抗不均。这两类问题的排查工具都是示波器,但看的位置不同。
显示不均(Mura)也经常被当成Flicker上报,因为它们都会造成视觉上的"画面不干净"。但Mura更偏向于静态亮度不均,不随时间周期性变化;Flicker是动态明暗交替。判别的简单方法:用相机固定曝光连拍多张,静态Mura在每张照片上位置固定,Flicker会导致整体或局部亮度在照片间变化。
4.3 用手机拍屏看到的摩尔纹和暗带,不一定是屏的问题
这里要单独说一下,因为很多人拿着手机对屏拍,看到一条条暗带就以为是闪烁。这是像素网格和手机相机传感器的采样干涉造成的假象,叫摩尔纹或混叠,不是真闪烁。要判断屏有没有闪,用慢动作视频看屏幕本身的明暗节奏更靠谱,或者关闭相机的抗闪烁功能,看是否有滚动的亮度带。
判断真闪烁还有一个土办法:把眼睛盯住屏幕边缘,快速转动眼球,如果看到残影或一系列明暗变化的"小阶梯",说明存在Flicker;如果没有这种现象,那屏大概率没问题。这个方法在产线上用于快速筛机非常有效,虽然不精确,但胜在快。
4.4 面板重启才恢复的闪烁,多半是电荷残留的锅
有一类闪烁表现为:开机正常,过一段时开始闪,重启之后又好。这种问题优先怀疑电荷残留和电压漂移。VGL在长时间工作后如果发生漂移(常见是负压变浅),TFT漏电变大,像素电容里积累的误差电荷越来越多,闪烁就会越来越明显。还有一类情况是VCOM走线绝缘阻抗下降,湿气大的环境下,公共电极电压被拉偏,也会出现越用越闪。
排查方法是监测长时间工作后的VGL和VCOM实际电压是否漂移,同时观察VGH波纹是否变大。我遇到过一块模组在高温高湿试验后出现闪屏,最后原因是密封胶吸湿导致VCOM走线对地漏电,VCOM从设计值的4.5V掉到了4.2V,重新固化密封胶后恢复正常。这种问题靠软件调参救不回来,只能从硬件可靠性入手。
5. 关于VGH、VGL和VCOM的一些进阶操作细节
前面讲的更多是原理和常见排查,最后写几个调试中真正能提高效率的操作细节和心得,尤其是对"改VGH"这类容易引发争议的操作,我多说几句。
5.1 为什么网上有人热衷于调整VGH追求显示效果
不少玩屏的人,尤其是手工拆屏、改屏的,喜欢通过改VGH来提升画面对比度或刷新能力。原因在于VGH直接决定了TFT导通能力和像素写入的饱和程度,VGH高一点,像素电压写得更快更准,动态画面拖影减少,看起来更"猛"。但面板的TFT和GOA电路都是按设计电压做可靠性和寿命验证的,盲目抬高VGH容易加速器件老化,特别是GOA电路里的TFT长期承受过压,阈值漂移后会引发更复杂的显示异常。
我自己调试时的习惯是,VGH只在规格书上下限范围内调整,超出范围之前先和屏厂工程师确认。如果你在网上下载了一个"改VGH教程"的视频,照着把VGH从20V拉到25V,短期看画面确实亮眼了,但长期可靠性就没有保证了。尤其是车规和工控屏,这种操作基本是红线,碰都不碰。
5.2 消除闪烁的正确姿势,不是硬拉电压而是找到平衡点
很多人遇到闪烁第一反应就是把VGH拉高,让TFT开得更狠,或者把VGL拉低让TFT关得更严,这能解决一部分问题,但不能解决全部。VGH和VGL的调整会影响feed-through幅度,而feed-through幅度变了之后,你的VCOM最佳点也跟着变了。如果你拉了VGH却不重调VCOM,闪烁可能从"漏电性闪烁"变成"耦合性闪烁",换汤不换药。
正确的顺序是:先确定一个合理VGH/VGL组合,保证TFT正常开关,然后全力调VCOM找到最佳点;如果到最佳点闪烁值还不达标,再回头微调VGL,然后重新调VCOM。每一次修改VGH/VGL之后都必须重新标VCOM,这个循环我建议固化到调试SOP里。
5.3 在实测中检验三剑客配合的一个小技巧:看栅极关断时刻
最后分享一个我实测中很管用的检查手法:用示波器同时测栅极信号和VCOM信号,在TFT关断前后对比VCOM线上有没有被耦合出一个尖峰。如果VCOM上的尖峰幅度和栅极跳变明显同步,说明面板内部的VCOM走线对栅极走线存在较大耦合电容,这种情况下你只调VCOM DC值是压不住闪烁的,需要在源极驱动IC的空闲时间插入VCOM重置或者面板端增加补偿电容。
我自己处理过一个类似案例,某款2K分辨率的屏在特定灰阶下有很窄的亮带闪,排查了很久才发现是gate线切换时对VCOM线的串扰尖峰,最后在FPC上给VCOM加了一颗小电容,把尖峰幅度从180mV压到60mV以下,闪烁就消失了。这种"差几十毫伏就闪,补一颗电容就好"的案例在LCD调试中其实是常态,所以别只盯着寄存器,硬件上走线、电容、屏蔽也同样重要。
在产品验证阶段,我通常还会在高温、低温和常温三种环境下分别标定一次VCOM偏移,温度对VCOM最佳值的影响往往比想象中大。很多屏在常温下完美,到了低温一开机就闪,就是因为VCOM在低温下漂移了。把这三个温度点的VCOM偏移量记录下来,写进量产软件的热敏补偿表里,能让产线的直通率高不少。
VCOM、VGH、VGL这三剑客,说到底是LCD偏置电压体系里最核心的三根支柱。它们各自负责的事不同,但在闪烁问题上总是盘根错节地纠缠在一起。我自己的体会是,调试Flicker的能力不是靠记参数背公式练出来的,而是靠一台示波器、一块样机、一个耐心盯屏幕的下午磨出来的。你调得多了,看到闪烁现象的第一反应就会从"这屏坏了"自动变成"我该先看VCOM呢,还是先看VGL呢"——到这一步,你就已经是个会驯服Flicker的人了。