3. 车载显示系统架构

显示链路调试,说白了就是让主芯片和屏幕“说上话”。

我见过不少项目,代码编译通过、驱动加载成功,屏幕就是不亮。或者亮了,但闪屏、花屏、有水波纹。这时候,万用表帮不了你,得靠示波器和协议分析仪上场。

这一章,我把实际项目中踩过的坑和常用的调试手段拆开来讲。你跟着走一遍,心里就有底了。

3.1 LVDS信号测量与眼图分析

LVDS(低压差分信号)在车载座舱里用得特别多,尤其是分辨率在720P到1080P之间的屏幕。它的优点是抗干扰强、传输距离远。但缺点也很明显——一旦信号质量下降,排查起来很费劲。

3.1.1 测量前的准备

我个人习惯,先确认以下几点:

  • 差分探头:必须用有源差分探头,带宽至少1GHz。普通单端探头测LVDS,测出来全是噪声。
  • 接地方式:探头接地线越短越好。我见过有人用长地线夹子,结果测出来的眼图全是闭合的。
  • 触发设置:用数据时钟作为触发源,不要用数据线本身触发。
小技巧:测量前先把屏幕点亮,显示一个纯色画面(比如纯白或纯红)。这样LVDS数据线会输出固定图案,方便观察。

3.1.2 眼图分析的关键指标

眼图是衡量信号质量的“心电图”。我一般盯着这几个参数看:

参数 合格范围 常见问题
眼高(Eye Height) ≥ 200mV 信号衰减、阻抗不匹配
眼宽(Eye Width) ≥ 0.6 UI 时钟抖动、串扰
抖动(Jitter) ≤ 0.3 UI 电源噪声、PCB走线过长
共模电压 1.2V ± 0.1V 端接电阻虚焊、驱动芯片损坏

我曾经遇到一个项目,屏幕在高温下出现横纹。查了半天,发现是LVDS的共模电压在85°C时漂到了1.35V。换了一颗驱动芯片,问题解决。

3.1.3 眼图闭合的常见原因

  • PCB走线等长没做好:LVDS是差分对,对内等长误差要控制在5mil以内。我见过有人用自动布线,结果一对线差了30mil,眼图直接闭合。
  • 端接电阻不对:LVDS标准端接是100Ω。有些设计用了120Ω,信号反射严重。
  • 电源纹波太大:LVDS驱动芯片的供电纹波要控制在50mV以内。纹波大了,抖动就大。
注意:测量LVDS时,不要用手直接触碰探头前端。人体静电可能会损坏驱动芯片。我习惯戴防静电手环,或者先触碰机箱外壳放电。

3.2 MIPI DSI协议抓包

MIPI DSI在车载座舱里越来越普及,尤其是2K、4K分辨率的大屏。它的调试比LVDS复杂,因为除了物理层,还有协议层。

3.2.1 抓包工具的选择

我常用的方案有两种:

  • 逻辑分析仪:适合抓取LP(低功耗)模式下的命令。比如初始化序列、睡眠唤醒命令。
  • MIPI协议分析仪:适合抓取HS(高速)模式下的数据。比如图像数据、视频流。

说实话,逻辑分析仪便宜,但只能看个大概。真要定位问题,还是得上协议分析仪。

3.2.2 关键抓包内容

我一般会抓这几类数据:

  1. 初始化序列:检查DCS命令是否发送正确。比如0x11(退出睡眠)、0x29(打开显示)。
  2. 视频时序:检查HSA、HBP、HFP、VSA、VBP、VFP这些参数是否和屏幕规格书一致。
  3. CRC校验:检查数据包是否有CRC错误。CRC错误多了,屏幕会闪。
  4. EoTp包:检查传输结束是否正确。有些屏幕对EoTp很敏感,少了它就不工作。
经验之谈:我曾经遇到一块屏幕,初始化序列发完,屏幕就是不亮。抓包一看,发现0x11命令后面少了一个5ms的延时。加上延时,屏幕就亮了。很多屏幕对时序要求很苛刻,不能只看命令,还要看命令之间的间隔。

3.2.3 常见协议问题

现象 可能原因 排查方法
屏幕不亮 初始化序列错误、LP模式通信失败 抓取LP命令,检查DCS命令和延时
花屏 HS模式下数据错位、CRC错误 抓取HS数据,检查CRC和EoTp
闪屏 视频时序参数错误、帧率不匹配 抓取视频时序,对比规格书
触摸无响应 DSI命令未正确发送到触控IC 检查I2C或SPI通信,确认触控IC初始化

3.3 显示时序参数验证

显示时序参数,是屏幕能正常显示的基础。参数错了,屏幕要么不亮,要么显示异常。

3.3.1 时序参数的含义

我习惯把时序参数分成三组:

  • 水平时序:HSA(水平同步开始)、HBP(水平后肩)、HFP(水平前肩)、HACT(有效像素)。
  • 垂直时序:VSA(垂直同步开始)、VBP(垂直后肩)、VFP(垂直前肩)、VACT(有效行数)。
  • 时钟参数:像素时钟频率、DSI时钟频率。

3.3.2 验证方法

我一般用示波器测量像素时钟,然后用逻辑分析仪抓取DE(数据使能)信号。通过DE信号,可以反推出水平时序和垂直时序。

// 伪代码:根据DE信号计算时序参数
H_total = 测量DE信号一个周期内的像素时钟数
H_act = 测量DE高电平期间的像素时钟数
H_blank = H_total - H_act
// H_blank = HSA + HBP + HFP

V_total = 测量DE信号一个垂直周期内的行数
V_act = 测量DE高电平期间的行数
V_blank = V_total - V_act
// V_blank = VSA + VBP + VFP
小技巧:如果屏幕规格书没有给出HSA、HBP、HFP的具体值,只给了H_total和H_act,你可以尝试平均分配H_blank。比如H_blank=100,可以设HSA=10、HBP=45、HFP=45。大多数屏幕都能接受这种分配。

3.3.3 常见时序问题

  • 像素时钟频率不对:频率高了,屏幕显示不全;频率低了,屏幕显示慢。
  • HBP或HFP太小:会导致图像左移或右移。
  • VBP或VFP太小:会导致图像上移或下移。

我记得有一次,客户反馈屏幕显示偏左。我查了时序参数,发现HBP设成了10,而规格书要求至少20。改成20后,显示就正常了。

3.4 知识结构图

下面这张图,把显示链路调试的核心内容串起来了。你可以把它当作调试时的检查清单。

显示链路调试知识结构图 显示链路调试知识结构 LVDS信号测量 MIPI DSI协议抓包 显示时序参数验证 关键测量项 • 眼高 / 眼宽 / 抖动 • 共模电压 / 差分摆幅 • 端接电阻 / 走线等长 关键抓包内容 • 初始化序列 / DCS命令 • 视频时序 / CRC校验 • EoTp包 / LP模式通信 关键验证参数 • HSA / HBP / HFP / HACT • VSA / VBP / VFP / VACT • 像素时钟 / DSI时钟 调试优先级 先测物理层(LVDS/MIPI)→ 再抓协议层 → 最后验证时序

3.5 调试流程总结

调试显示链路,我一般按这个顺序来:

  1. 先看物理层:用示波器测LVDS或MIPI的差分信号,确认眼图合格。
  2. 再看协议层:用协议分析仪抓包,确认初始化序列和视频时序正确。
  3. 最后验证时序:用逻辑分析仪测DE信号,反推时序参数,和规格书对比。

这个顺序,能帮你快速定位问题。不要一上来就怀疑驱动代码,很多时候是硬件链路的问题。

避坑提醒:我曾经跳过物理层,直接抓协议包。结果抓了半天,发现是LVDS的共模电压不对。从那以后,我坚持先测物理层。物理层没问题,再往上查。

显示链路调试,说白了就是“眼到、手到、心到”。眼到——看波形、看眼图;手到——抓包、测时序;心到——理解协议、理解参数。三者缺一不可。