尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

STM32U5G9 DSI转LVDS驱动板LVDS噪声排查与解决实践

STM32U5G9 DSI转LVDS驱动板LVDS噪声排查与解决实践 最近调一块基于 STM32U5G9 的定制 DSI 驱动板时被 LVDS 噪声折腾了好几天。板子的结构并不复杂STM32U5G9 的 MIPI DSI 接口输出视频流板上放了一颗 DSI 转 LVDS 桥接芯片再接一块 7 寸 LVDS 液晶屏。点亮很容易但显示效果一直不干净屏幕上有稀疏的雪花点偶尔出现横向闪烁条纹。用示波器量 LVDS 差分对能看到数据线上的毛刺和振铃非常明显部分波形已经落入差分门限边缘这就是典型的 Noisy LVDS。如果你也在做类似的自制驱动板遇到 LVDS 噪声、显示异常这类问题可以从链路配置、电源、PCB 走线、测量方法几个维度逐层排查。这篇文章就按我实际调板的顺序把整个排查过程和踩过的坑完整记录下来。1. 项目整体设计与思路拆解1.1 为什么用 STM32U5G9 DSI 转 LVDSSTM32U5G9 属于 ST 新一代低功耗 MCU内置了 MIPI DSI 控制器和对应的 D-PHY 物理层可以直接输出 MIPI DSI 信号。但市面上大量性价比不错的液晶屏仍然以 LVDS 接口为主尤其是 7 到 15 寸的工业屏、医疗屏、车载屏。主控端输出 DSI屏幕端只认 LVDS中间就必须加一颗桥接芯片做协议转换。我手里这块板子的方案是 STM32U5G9 的 DSI 输出接到 SN65DSI83再转换成单链路 LVDS 输出。SN65DSI83 是 TI 的经典桥接芯片支持 4 条 LVDS 数据通道加 1 对时钟最高能带 1080p 级分辨率RGB888/RGB666 都支持PLL 可以独立输出 LVDS 像素时钟适合中小尺寸 LVDS 屏。选择它主要是因为参考设计多、寄存器资料公开、价格也能接受。这里要强调一点DSI 转 LVDS 的方案里桥接芯片只是做协议转换它不负责图像缩放、不负责 gamma 校准、不负责时序修正。所以 STM32U5G9 的 LTDC显示控制器输出的时序必须和屏的规格严格匹配任何一行的前肩、后肩、同步信号宽度不对都会在屏端表现为花屏、条纹甚至无显示。很多人把这种问题误判为 LVDS 噪声其实是因为时序配置错误排查方向一开始就要分清楚。1.2 定制驱动板的特殊性在哪这个项目的重点在 custom DSI driver board也就是自研 PCB而不是用 ST 的原厂评估板或现成的转接小板。定制板的优势是尺寸、接口位置、电源方案都能按产品需求调整但代价是信号完整性、电源完整性、EMC 设计全部要自己扛。如果是用官方 BSP 的评估板板厂已经帮你调好了层叠、阻抗、电源去耦DSI 和 LVDS 的走线长度也经过验证直接跑例程基本不会出大问题。但自研板会引入大量变量供电拓扑变了、走线长度变了、FPC 排线长度变了、ESD 防护器件变了、扩散电容变了。这些变量叠加起来任何一个环节出了问题最终都会翻译成屏端的显示噪声。我的板子采用 4 层板设计层叠是 Top 信号、GND、Power、Bottom 信号主控和桥接芯片放在同一面LVDS 连接器在板边。当时为了控制成本FPC 排线没有订制屏蔽层选用了一根 15cm 的普通 30pin FFC。这个选择后来被证明是噪声问题的一个重要诱因后面细说。1.3 排查前的三个准备正式排查之前先把工具准备齐一台带宽至少 1GHz最好 2GHz 以上的示波器。LVDS 信号翻转速度很快边沿的振铃和毛刺都发生在高频区域普通 100MHz 示波器根本看不清甚至会看到严重的假噪声。一支 1GHz 带宽以上的差分探头。LVDS 是典型的低压差分信号差分摆幅只有 350mV 左右使用普通单端探头很难正确测量也容易引入共模误差。近场探头套件。排查干扰源时非常好用可以在 PCB 上快速定位是哪一部分在辐射能量。还有一点容易被忽略准备一块可以用的同型号或同类别 LVDS 屏。如果手头只有一块屏出问题后很难判断是屏端不良、排线问题、还是驱动板的问题。有条件的话多准备一块交叉验证能省很多时间。2. 先分清是协议层还是物理层问题2.1 DSI 链路配置是不是真的对了第一次看到屏幕上的噪声我的第一反应是 LVDS 差分走线耦合了干扰甚至怀疑桥接芯片焊坏了。但冷静下来之后还是先回到软件配置上把所有 DSI 初始化参数完整过了一遍因为很多显示异常在现象上长得非常像硬件噪声。STM32U5G9 的 DSI 外设配置里有几个关键参数必须与桥接芯片能力匹配。首先是 Lane 数如果 STM32 侧配置成 4 Data Lane桥接芯片却只工作在 1 或 2 Lane 模式链路根本无法建立更谈不上显示。其次是 HS 时钟频率它取决于像素时钟、每像素比特数、Lane 数。我的屏是 1024x60060LTDC 像素时钟约 51MHzRGB888 即 24bpp。如果使用 4 条 DSI 数据 LaneDSI HS 时钟大致是 51MHz × 24 / (4 × 2) 153MHz如果只使用 2 条 Lane这个值会翻倍到 306MHz。无论哪一种DSI 时钟都必须落在桥接芯片允许的范围内。第三个要注意的是 EoT 包和 Bus-Turn-Around。部分 DSI 发送端默认会发送 EoTEnd of Transmission包但有些桥接芯片对 EoT 包的容忍度比较差容易造成链路状态机错乱导致数据包被误解析。实测中我在桥接芯片侧关闭了 BTA 相关功能并调整了 STM32 的 DSI 发送模式后数据错误明显减少。如果你的底层库默认开启 EoT可以在调试阶段关掉试试。如果手头有 MIPI DSI 协议分析仪或者有 DSI Studio 这类软件工具配合硬件采集卡可以抓一下 DSI 包内容直接确认主控发出的像素数据、包结构、时序是否符合预期。这一层确认没问题才能把注意力放到 LVDS 物理链路上。2.2 桥接芯片寄存器配置的真实教训桥接芯片的寄存器配置是另一个重灾区尤其是 PLL 分频和输出时钟。SN65DSI83 这类的桥接芯片PLL 需要根据输入 DSI HS 时钟和输出 LVDS 像素时钟计算出倍频和分频值寄存器写错最直接的后果就是 LVDS 时钟频率偏离屏的规格屏幕会出现严重的闪动或噪声。以我的参数为例LVDS 输出采用单链路 4 通道每通道 7:1 映射。输出像素时钟大约是 51MHz × 7 / 4 ≈ 89MHz。桥接芯片内部 PLL 要产生 89MHz 的 LVDS 输出时钟需要按照 datasheet 里的公式换算成 PLL 分频值。那段换算要根据具体芯片版本和寄存器位域定义来确定不同厂商芯片的寄存器布局完全不一样不要直接照抄网上别人的配置数组。寄存器配置还有一个容易踩的坑桥接芯片通过 I2C 写入配置的时序必须在 DSI 视频流启动之前完成而且要等芯片软复位完成。我一开始在 HAL 库里先启动了 DSI 再刷寄存器导致部分寄存器被芯片内部状态机覆盖画面出现奇怪的随机点。后来统一改成上电后先配置桥接芯片寄存器再启动 LTDC 和 DSI问题就消失了。这个顺序问题往往被忽略。2.3 别让屏幕和桥接芯片背黑锅还有一种情况问题根本不在驱动板而在屏幕端。LVDS 接口有两种常见的数据映射标准VESA 和 JEIDA。很多屏会明确说明自己支持的是哪一种但部分屏厂商规格书写得很含糊需要实际尝试。如果映射模式选错画面颜色会错乱出现杂色、伪轮廓看起来很像数据噪声。交叉验证是最直接的判断方法。把驱动板接到另一块确认完好的 LVDS 屏上如果显示正常说明问题在原来的屏再把新的驱动板接到同一屏上对比如果同样出现噪声说明是驱动板的问题。我当时用第二块屏做了对比确认噪声现象跟屏本身无关才把注意力转回驱动板。3. 物理层排查电源、地、布局3.1 供电链路是最大的噪声源LVDS 是低摆幅差分信号对电源噪声非常敏感尤其是桥接芯片内部的 PLL 电源和 LVDS 输出的 I/O 电源。如果这些电源轨上有明显的纹波LVDS 输出的共模电平和抖动都会变差屏端看到的就是噪声和闪动。我做的第一件事是把板子上所有供电轨的纹波测了一遍。用示波器设置 20MHz 带宽限制测量桥接芯片的数字电源、PLL 电源、LVDS 输出电源和屏的背光/面板电源。测量结果表明面板供电来自一颗 DC-DC输出纹波高达 90mV 左右叠加了明显的开关毛刺。问题更严重的是这条电源轨在布局上离 LVDS 差分走线过近开关噪声直接耦合到了 LVDS 信号上。处理方式比较常规但很有效在 DC-DC 输出到面板供电之间增加一个 LC π 型滤波器截止频率设置在几百 kHz把开关纹波压下去。在桥接芯片的 PLL 电源引脚附近放置 100nF 1μF 10μF 的组合电容形成多级去耦。把电源走线尽量拉开避免大电流开关回路和 LVDS 差分走线平行。整改后再测量面板供电纹波降到了 30mV 左右LVDS 波形上的毛刺肉眼可见地减少屏幕上的雪花点明显变少。3.2 PCB 差分走线与参考平面自研板子最容易被挑战的就是 PCB 布局和走线。LVDS 要求 100Ω 差分阻抗DSI 也要求 100Ω 差分阻抗如果板厂没有按照指定阻抗控制生产信号质量就会打折扣。我查了一下板子设计文件LVDS 差分对的线宽线距按常规 5/5mil 设计但并没有明确标注阻抗要求板厂很可能按普通 50Ω 单端来处理了实际差分阻抗可能在 80Ω 到 120Ω 之间波动。这是噪声问题的深层原因之一。LVDS 走线还要求对组内等长。时钟对和数据对之间如果长度差过大时序偏移会累积表现为屏幕上的随机噪点。理想情况下对内等长控制在 5mil 以内对间等长控制在 50mil 以内。实际手工布线不容易做到这个精度但至少要保证时钟对优先满足等长。参考平面同样重要。如果 LVDS 走线下方是分割的地平面或电源平面信号回流路径会绕路形成很大的回流环面积既增加辐射又容易被外部干扰耦合。检查布线时发现我有一组 LVDS 差分对恰好跨越了电源平面的一条分割线回流路径被切断这是波形上看到低频周期性噪声的直接原因。后续在换层位置补上了地过孔并调整了平面分割回流连续性才恢复。3.3 连接器和排线带来的共模噪声LVDS 差分信号的优势是抗共模干扰但前提是接收端真正以差分方式接收。如果 FPC 排线过长、线间串扰严重或者连接器接触不良共模噪声很容易转换成差模噪声。我最初用的 15cm 普通 FFC 排线没有屏蔽层也没有 信号-地-信号 交替排列。实测下来FFC 靠近 LCD 背光逆变器一侧时噪声明显增大屏幕上的闪纹频率和背光开关频率高度相关。换用 5cm 短排线之后噪声幅度下降许多。后来我专门找了一根带屏蔽层的 FFC对比效果更好。如果产品结构决定了必须使用长排线建议在 LVDS 数据线上加共模扼流圈或者选型时优先选择带屏蔽的 FPC 连接器。还有一种办法是增加 LVDS 信号在桥接芯片侧的驱动能力但这会带来更高的 EMI 辐射属于无奈之选不建议优先使用。3.4 用 FPGA 接收 LVDS 辅助定位如果屏幕端始终显示异常有一种非常实用的定位手段:用 FPGA 板卡或者逻辑分析仪实现 LVDS 接收把桥接芯片输出的 LVDS 信号先接进 FPGA验证时序和数据是否完整。这个思路相当于绕开了未知的 LCD 模组把接收端换成自己可控的设备。具体来说FPGA 中通过 IBUFDS 这样的差分输入缓冲器接收每一对 LVDS 信号然后把高速差分数据转换成并行 RGB 数据。如果是 4 通道 7:1 模式需要正确识别 LVDS 的时钟和数据对齐关系。实现起来有一定工作量但能很明确地判断桥接芯片输出是否有效、PLL 时钟是否稳定、数据是否发生错位。我实测下来FPGA 接收到的 RGB 数据在异常时段有偶发的 bit 翻转这进一步确认了是 LVDS 物理层噪声导致的数据错误。当然如果你的调试机上有逻辑分析仪采样率足够高也可以用单端探头接 LVDS 的各条线做粗略分析。但逻辑分析仪抗干扰能力偏弱探点接触不良时会看到大量假信号所以不能完全替代示波器差分探头的组合。4. 用示波器量好每一根 LVDS 线4.1 差分探头到底该不该买LVDS 信号是差分信号测量时最好用差分探头。差分探头的核心优势是能直接测量两根信号线之间的电压差同时抑制掉共模分量。没有差分探头的话可以用两个同型号的单端探头分别接正端和负端在示波器里做 A-B 数学运算。这个方法在低频段可用但在高频段会因为两个探头的延迟、幅度不一致产生较大误差看到的结果只能作为参考。我建议如果长期做这种视频接口调试差分探头是值得投入的。一支 1GHz 的差分探头价格不低但省下来的调试时间非常可观。如果预算实在有限至少要保证示波器本身带宽足够高否则任何探头都救不了。4.2 看波形摆幅、共模、眼图LVDS 的标准差分摆幅是 250mV 到 450mV共模电压大约在 1.2V 左右。实际测量时正确的方式是把差分探头接到 LVDS 时钟对或数据对上观察波形形状、幅度、边沿质量。我实测时发现LVDS 数据对的波形边沿有非常明显的振铃持续了约 1ns振铃幅度接近 200mV。这种振铃可能来自阻抗不连续、连接器 stub、或者接收端输入电容过大。更严重的是共模电压出现了周期性漂移幅度约 150mV结合频谱分析这个漂移频率和面板电源 DC-DC 的开关频率一致。这说明干扰源是电源而不是信号自身反射。如果示波器支持实时眼图或抖动分析功能可以直接看 LVDS 眼图。没有这个功能也没关系打开无限余辉模式观察波形重叠情况能看到数据跳变的分布范围。眼图张开度差、交叉点不清晰都说明信号质量不好。当时我看到的眼图里信号交叉点明显上下抖动进一步证实了共模噪声混入了差分通道。4.3 近场探头扫干扰源近场探头是一个被很多人忽略的工具但在这类排查中非常好用。把近场探头接在示波器或频谱仪上在 PCB 表面缓慢移动可以定位辐射较强的区域。我的板子上最明显的辐射源是 DC-DC 电感、DSI 时钟走线、LVDS 连接器区域。通过听信号强度变化可以快速判断哪一部分在污染整个链路。当时我用近场探头在 LVDS 走线上方扫描发现靠近桥接芯片引脚的位置噪声相对较小越靠近 FPC 连接器噪声越大说明连接器区域的 stub 和阻抗突变把一部分信号能量转换成了辐射。这个发现直接推动了后续对连接器焊盘和走线过孔的优化。5. 从源头压住噪声的实操套路5.1 供电滤波与电源去耦在电源处理上我的经验是分级处理。首先是 DC-DC 输出级加 LC 滤波LC 的谐振频率要远离开关频率同时考虑负载瞬态响应不能为了压低纹波而牺牲动态性能。我给面板供电加了 10μH 电感和 10μF 电容的组合实测纹波从 90mV 降到 30mV。其次是芯片引脚级去耦。桥接芯片的 PLL 电源引脚对噪声最敏感一般 datasheet 都会给出推荐的电容组合。常见的配置是 100nF 贴近引脚外围再放 1μF 和 10μF 的大电容。大电容不要求离引脚很近但 100nF 必须尽可能靠近电源引脚和地引脚否则高频去耦效果大打折扣。很多人只关注电容值忽略了放置位置导致去耦无效。5.2 终端电阻与共模电感LVDS 发送端驱动能力较强接收端通常内置了 100Ω 终端电阻。对于驱动板这一侧一般不需要额外并联电阻。但如果桥接芯片离连接器很近、走线很短而接收端离连接器很远终端电阻的位置可能不理想需要参考桥接芯片的建议来增加或调整终端。共模电感是抑制共模噪声非常有效的手段。在 LVDS 差分走线靠近连接器处串入共模扼流圈可以抑制电源开关噪声耦合进来的共模分量对差模信号几乎没有影响。选择共模电感时注意额定电流和截止频率要保证它不会影响 LVDS 的边沿速率。我当时尝试加了一颗 120Ω/100MHz 阻抗的共模电感波形上的共模漂移幅度明显下降。5.3 降低速率与调整驱动强度有些时候噪声问题来自系统在过高的速率和过强的驱动强度下工作。如果屏的分辨率和刷新率允许可以适当降低像素时钟或者把 DSI 和 LVDS 的驱动强度调低。驱动强度越高边沿越陡产生的 EMI 和反射越强。我在调试中尝试过把 STM32 的 DSI PHY 驱动电流从最高档调到次高档LVDS 波形边沿略微变缓振铃幅度下降屏端误码概率减小。这个调节空间要参考芯片寄存器手册不能盲目调。最终产品上为了保留余量我把驱动电流调回了出厂推荐值但从 PCB 和电源角度做了根本性修复。5.4 屏蔽与地线处理如果 FPC 排线较长屏蔽层很关键。带屏蔽的 FFC 排线在信号层两侧有接地导体能显著减少排线对外辐射和受扰。另外在 FPC 连接器周围要打好地孔让接地区域形成完整的围墙避免屏蔽层上的噪声无法泄放。机壳地也要注意。如果驱动板和屏幕之间通过金属柱连接金属柱区域形成的地环路可能反而引入杂散电流。我处理的时候在 FPC 连接器金属外壳上并联了 1nF 电容接地把高频噪声导走屏端显示又稳定了一些。这些方法不是什么高深技术但组合起来效果非常明显。6. 最终解法一次完整的排查记录6.1 从现象到根因的推演把整个排查过程串起来看我的 LVDS 噪声问题并不是单一原因造成的而是三个问题叠加面板供电来自 DC-DC纹波大且布局离 LVDS 走线过近导致电源开关噪声直接耦合。LVDS 差分对走线没有按 100Ω 差分阻抗控制还跨越了电源平面分割线信号完整性变差。FPC 排线过长且无屏蔽共模噪声在长线上被放大。这三个问题单独存在时可能不会造成明显显示异常但叠加之后LVDS 差分信号质量下降到屏端误码边缘最终表现为雪花点和闪纹。这种情况在自研板上太典型了所以排查时千万不要只揪住一个点不放。6.2 修改措施与效果对比最终的整改动作包括重新制作 PCBLVDS 差分对按 100Ω 差分阻抗控制调整走线避开电源平面分割缩短 LVDS 连接器 stub 长度在 DC-DC 输出增加 LC 滤波重排 PLL 去耦电容更换 FPC 为 5cm 短线。整套措施做完屏端画面干净清晰再无雪花点。测量数据对比如下表检查项整改前整改后面板供电纹波90mV30mVLVDS 共模漂移幅度150mV30mVLVDS 边沿振铃幅度约 200mV约 50mV屏端显示雪花点、横向闪纹干净稳定6.3 后续扩展把这条链路变得更稳定经过这次调试我对 DSI 转 LVDS 的定制板设计有了一套自己的规范。后续再设计类似板子我会把 LVDS 阻抗控制、电源滤波、FPC 选型直接写进需求清单里而不是依赖后期调试来补救。另外STM32U5G9 的 DSI 驱动能力其实还有不少可调空间。如果后续产品需要支持更高分辨率的屏幕可以考虑切换到双链路 LVDS 桥接芯片或者直接选用原生 DSI 接口的屏省去一层转换。无论怎么选择物理层的设计和验证始终是绕不开的功课。6.4 一点个人的经验体会最后分享一个我自己的习惯做这种带高速接口的定制板不要急着一次性把所有功能全调通先把电源纹波、信号波形、时序配置一项项测出来留好记录再往下走。很多噪声问题在早期就能通过示波器发现拖到整机联调阶段再去抓代价会大得多。调完这块驱动板之后我最大的收获不是让屏幕变干净了而是对那些不起眼的电源去耦电容和排线选型再也不敢掉以轻心。
返回列表