去年夏天我接手一块基于ST7701S的MIPI屏,最后被一个极刁钻的问题卡了整整两天。寄存器配了三遍,初始化序列对着厂商手册一条条核,示波器挂在HS时钟上看眼图也正常,可屏就是偶发性白屏。最后把探头挪到LP信号上才发现,问题根本不在高速通道,而是MIPI LP TX这个低速发送端在关键时刻掉链子。从那以后我就有个习惯:调试任何MIPI接口的屏幕或摄像头,先确认LP状态的发送质量,再去看HS眼图。这篇文章就是把这类经验和判断方法完整写一遍,覆盖LP TX的电气原理、PCB布线、FPGA/SoC状态机实现,以及屏点不亮、花屏时的排查链路。适合正在调MIPI屏、做FPGA MIPI方案,或者从LVDS往MIPI切换的嵌入式工程师参考。
1. 一个容易被忽略的“低速”角色:LP TX到底管什么
1.1 最初接触MIPI时的认知误区
很多同行刚开始接触MIPI时都跟我一样,把它理解成“高速差分接口”,屏调试时第一反应就是看时钟和数据线的HS波形、测差分阻抗、翻眼图。这套思路本身没有问题,但有一个致命盲区:MIPI D-PHY的物理层并不是只有高速模式(HS)这一种状态。在屏幕初始化、寄存器读写、进入HS之前的链路握手等场景中,真正干活的是LP TX。
我最早一次翻车就是这样。拿示波器去量CLK和D0脚,能看到明显的连续HS时钟,数据线上也有差分翻转,但屏幕就是收不到初始化命令。后来单独监控LP发送端的P/N相对GND的电平状态,才发现LP这段压根没按预期切换,初始化包等于没发出去。从那以后我就意识到:HS眼图的前提条件,是LP链路要先把状态机跑对。
1.2 哪些项目环节真正依赖LP TX
LP TX并不是只在屏幕初始化时才出现,它的作用范围比很多人以为的要广得多。大致可以分成这么几类:
- DSI命令模式的初始化序列:绝大多数MIPI屏幕出厂里都有几十甚至上百条初始化命令,这些命令在命令模式下通过LP状态传输。尤其是ST7701S这类常见驱动IC,厂商给的初始化表里每条指令的发送时序都依赖LP TX的稳定工作。
- 进入HS前的状态切换:MIPI链路从LP进入HS,需要严格按照LP-111 → LP-011 → LP-001 → LP-000 → HS-ZERO的顺序切换。这个切换过程的每个中间状态,都必须由LP TX明确驱动出来。
- HS退出后的LP恢复:HS包结束后,链路要回到LP状态。如果退出时序处理不当,数据线会残留一段不确定电平,下一包数据到来时接收端就会误判。
- BTA(Bus Turn Around)和CSI的帧同步/触发:摄像头接口、触控面板回传等场景中,主控和设备端需要切换bus方向,这个过程本质上是双方LP TX的协调博弈。BTA要是握不上,回读寄存器就会超时。
- OLED屏的特殊处理:MIPI OLED屏对电源时序和LP初始状态更敏感,上电瞬间如果LP TX状态不对,OLED的驱动IC会直接进入异常模式,表现就是黑屏或者亮度乱跳。
所以,LP TX看似只是物理层里的一小部分,实际是所有MIPI交互的地基。地基不稳,后面HS速度再快也白搭。
2. 从电平到时序:LP TX的电气特征与传输原理
2.1 一对线上同时存在两套信号
理解LP TX,首先要接受一个反直觉的事实:MIPI D-PHY里的一对差分线,实际同时承载了两套完全不同的信号体系。
高带宽数据传输时,P和N两条线工作在小摆幅差分模式,电压基本在共模电平附近小幅摆动,接收端看的是两条线的电压差,这是HS模式。而在控制信号、初始化命令传输时,这两条线不再是差分关系,而是各自相对GND独立拉高或拉低。比如要表示逻辑1,就由LP TX把P线驱动到接近1.2V,N线驱动到接近0V;表示逻辑0则反过来。接收端的LP-RX分别检测P线和N线的绝对电压,再按照两条线的组合状态解码出对应含义。
这里最容易犯的错误就是拿差分探头去量LP信号。差分探头只关心P和N之差,看波形确实有翻转,但无法判断两条线各自的绝对电平是否落在接收端阈值范围内。一旦其中一条线驱动偏弱,或者上升沿过缓,整体波形可能看起来还在翻转,接收端其实已经超出门限。调试LP TX,我习惯用单端探头分别接P和N,以GND为参考,这样才能看清真实电平。
2.2 LP TX的推挽驱动与逻辑门限
LP TX本质上是一个推挽驱动器。高电平时内部PMOS导通把线上拉到VOH,低电平时NMOS导通把线拉到VOL,输出级不会处于浮空状态。这套结构和普通CMOS电平驱动器相似,但有两个明显差别:
- 电压摆幅比标准3.3V CMOS小,典型高电平在1.2V左右,低电平接近0V。
- 接收端不是简单的单阈值比较,而是带有迟滞的窗口比较器,常见规格里VIH约0.88V、VIL约0.55V,滞后区间能有效避免噪声干扰造成的误判。
迟滞窗口的存在带来了一个非常实用的排查思路:如果LP信号的电平虽然翻转,但高电平只有0.7V、低电平只有0.3V,那么有些接收端还能勉强识别,有些则不行。这就是同一根排线在A板子上点得亮、换到B板子上就点不亮的一类典型原因。测量LP电平,不能只看翻转,要确认VOH和VOL距离门限是否留够余量。
2.3 LP发送速率和边沿为什么不能“越快越好”
很多工程师习惯性地认为数字信号边沿越陡越干净,但对于LP TX这句话不成立。
LP信号本身的发送速率并不高,一般在一个较低的时钟域下工作,远低于HS的线速率。真正要控制的是上升沿和下降沿。如果边沿过陡,瞬态电流会在线对与参考平面构成的回路上激起振铃,振铃一旦超过LP-RX迟滞窗口,接收端可能把同一个电平判断成两个不同状态,初始化命令自然就错乱了。如果边沿过缓,信号停留在阈值附近的时间太长,又容易引入噪声误触发。
实际项目中,LP信号的边沿不仅取决于SoC内部PHY的驱动档位,还取决于线上电容、串阻、FPC走线长度等多个环节。这也是为什么明明代码一样,换了一根更长的排线或改用不同材质的PCB,屏幕就变得时好时坏。做LP TX调试时一定要在线上实测边沿,不要只在芯片引脚附近看理想波形。
3. 硬件与PCB设计:LP TX翻车现场复盘
3.1 源端串阻与驱动强度的配合
MIPI接口的P/N线通常会串接电阻,串阻大小既要考虑HS差分阻抗匹配,也会直接改变LP信号的边沿和振铃表现。
我在部分平台上见过默认串接22Ω的方案,也见过为降低LP过冲把串阻提高到33Ω的情况。串阻大一点,LP边沿会变缓,振铃得到抑制,但过高会让高电平在接收端掉得太多。这里没有“一招鲜”的值,要结合具体SoC的输出级驱动强度和PCB走线长度去实测。调试时我会先保持厂商默认串阻,用示波器看LP VOH和边沿,根据实测再微调。
另外,SoC内部驱动强度寄存器也要一起看。很多平台提供LP驱动强度配置,出厂默认不一定适合你的屏和FPC。遇到初始化概率性失败,我通常会先把驱动强度降一档测试,如果接收端电平余量够且振铃改善,就保持这个配置。如果降档后VOH低于0.9V,就不建议再降了,说明问题出在线上电容过大,不是驱动能力本身。
3.2 同层挖空与参考平面中断的影响
有同行在讨论MIPI布线时会提到“mipi同层挖空”,这句话如果理解成“为了让差分阻抗更高,把信号线同层的铜皮挖掉”,那就埋下了一个很深的坑。
LP信号虽然是低速单端逻辑,但它仍然需要明确的返回电流路径。当P/N线两侧同层铜皮被大面积挖空,高速差分阻抗可能确实好看一些,但LP信号的回流路径被逼到很远的地方,整个回路面积变大,回路电感和寄生电容都会恶化。实际表现就是LP上升沿出现振铃,严重时初始化包会偶发丢失,屏幕出现“冷启不亮、热启正常”的诡异现象。
我处理过一块返修板,D0线对两侧挖空接近1mm,看起来差分阻抗很好,但屏就是时不时点不亮。把挖空区域改小、保留相对完整的铜皮回流路径之后,问题消失。关键认知:MIPI线的阻抗控制不只服务于HS小摆幅信号,也要为LP电流提供低阻抗回路。同层铜皮的挖放需要谨慎,如果一定要优化阻抗,优先通过调整线宽线距和参考层介质实现,而不是靠牺牲回流路径。
3.3 阻抗、线长与LP/HS的取舍
MIPI差分对的阻抗标准常见90Ω到100Ω这个区间,不同平台和屏端IC会有差异。LP信号本身并不需要严格的特性阻抗匹配,问题在于同一物理线对上LP和HS必须共存,所以布线的取舍要以HS阻抗为目标,但用LP稳定性做校验。
具体操作上,我会遵守这几条原则:
- 尽量保证差分对从SoC到屏端连接器的GND参考连续,不要跨分割。
- 需要过孔换层时,紧邻过孔加地孔,减小回流路径突变。对LP而言,地孔距离直接影响回路电感。
- FPC连接器处的stub越短越好。有些结构上不得不走一段较长的焊盘引出线,这段stub会让LP边沿出现台阶,严重时接收端误判。
- 同一组MIPI lane之间拉开适当间距,避免数据lane上的LP边沿串扰到时钟lane。时钟lane是全局基准,时钟lane的LP受干扰,整条链路都会不稳定。
如果你是从LVDS切到MIPI的老工程师,还有一个经验可以分享:LVDS只要关注差分阻抗和偏置电压,MIPI多出来的LP状态逻辑会让“看起来阻抗没问题但就是调不通”的情况多得多。凡是屏不亮先怀疑硬件的人,建议先看P/N线的回流路径,再看HS眼图。
4. FPGA与SoC实现:把LP TX状态机跑起来
4.1 硬核D-PHY与软核/外置PHY的方案差别
做MIPI接口实现,方案上大体分三类。
第一类是SoC内嵌D-PHY硬核,例如瑞芯微RK3588以及不少国产工业SoC,主控内部已经完成了PHY层和协议层的大部分工作,用户只需要在驱动里配置寄存器、设置lane数和初始化时序。这种方案里LP TX的物理驱动由硬核完成,软件层要管的是让LP时序参数匹配屏端需求。
第二类是FPGA里使用厂商提供的MIPI IP硬核,比如紫光同创的FPGA平台在部分型号上提供D-PHY硬核。硬核方案省心,但受限于IP授权和封装管脚,不是每个项目都能用。
第三类是FPGA软核方案,用普通LVDS IO或HP IO加外部PHY芯片实现MIPI协议。这时的LP TX状态机往往要RTL自己写。我见过不少团队在第三类方案上栽跟头,因为FPGA普通IO的推挽输出和MIPI LP要求的“单端互补驱动”、“差分线两端分别独立驱动”不是同一回事。外部PHY芯片能帮你处理物理层,但LP状态机的时序条件仍然需要逻辑层准确配合。
4.2 LP/HS切换状态机里最容易被写漏的分支
如果自己用RTL写D-PHY状态机,最需要专注的地方就是LP到HS的切换顺序。
从LP进入HS的标准链路会经过多个中间组合状态:先是两条线都在高电平(LP-111),然后P线保持高、N线拉低;之后P、N线都拉低;再经过HS-ZERO前同步;最终进入HS差分发送。每个状态之间都有最小保持时间,这个时间不是随便定的,而是接收端解析链路状态转移的最小窗口。写状态机时最常出现的错误,就是只盯着“进入HS后数据对不对”,而忽略了中间状态的保持拍数。
我早期写过一版简易MIPI发送逻辑,状态机缺少中间停留拍数,示波器看进入HS的瞬态,波形确实能起来,但屏端偶尔把HS起始位置判断偏了一两个UI,直接导致首行花屏。后来我按标准时序逐拍枚举状态,把每个转移的最小周期都做成参数可调,联调时才稳定下来。如果你也在写这类状态机,建议把所有时序参数先按最标准的微调值适配,跑通后再逐个压紧,不要上来就设极限值。
4.3 与ST7701S、RK3588常见屏参的时序配合
LP TX的时序不只是物理层状态机的事,还跟屏端驱动IC的参数配置有关。调ST7701S时,厂商经常会给出LP相关时序要求,比如命令模式下的建立时间、保持时间、前后肩参数等。这些参数如果和SoC侧LP TX的默认切换时间不匹配,现象通常是初始化序列执行到某一条命令后屏端不响应,但前面的命令看起来都正常。
RK3588这类平台的MIPI输入调试里,还有一个容易被忽略的问题:deskew calibration通常只校准HS模式下数据lane和时钟lane之间的偏斜,但整个校准过程启动的前提是LP链路已经完成建立。如果LP状态不稳定,deskew校准本身可能跑不完整,HS窗口里的数据采样点就不会处在最佳位置。这和“1080i输入信号花屏”的现场表现是一致的:看似HS问题,根源却在LP层。
屏参时序上,我的建议是拿到新屏参考代码后,不要盲目改成“看起来更合理”的值,先按厂商默认跑通,再用示波器确认LP边沿位置和HS起始位置的对应关系。很多时候屏幕不亮不是参数不对,而是修改过程中破坏了LP与HS的衔接条件。
5. 没信号、花屏、屏幕点不亮:基于LP TX视角的排查链路
5.1 示波器如何测LP信号才可信
LP TX调试第一件事是选对测量方式。我强烈建议:
- 使用单端探头,分别测P和N对GND的绝对电压,不要用差分探头去测LP。
- 探头接地线尽量短,最好用探头自带的短弹簧地线。长鳄鱼夹地线会形成额外电感,测出来的振铃不是真实信号,容易误导你改掉本来没问题的参数。
- 测量点尽量靠近屏端接收侧。SoC引脚处的信号干净不代表经过FPC后仍然干净,LP-RX判断的是接收端的电平。
测的时候重点关注三个指标:高电平VOH是否超过接收端VIH并有足够余量;低电平VOL是否低于VIL;上升沿是否有振铃叠加。如果这三个指标都没问题,那LP TX硬件链路是健康的,下一步再查协议时序。
5.2 横向花屏为什么会牵扯到LP时序
MIPI屏出现横向花屏,业内第一反应往往是数据lane和时钟lane的HS偏斜太大,或者deskew校准不通过。这个方向没有问题,但有一个现象很多人没意识到:如果deskew校准在校准前就因为LP时序不稳定而失败,或者接收端在HS起始位置附近没有完成LP到HS的切换,那么首个HS数据包里的前几个像素就会落在错误采样点上,视觉表现恰恰是屏幕顶部或特定行出现横向花屏。
这类花屏还有一个特征,就是画面上不是整屏花,而是固定横带或错位横线,因为错误集中在每个HS burst的起始位置。排查时可以在示波器上用HS起始信号触发,放大看时钟lane和数据lane进入HS后的前几十个UI,同时对照LP退出瞬间的电平残留。如果发现HS起始位置附近的差分信号没有干净建立,先回查LP退出阶段是否留了足够时间,再谈deskew参数调整。
5.3 “屏调试没信号”的分级排查清单
屏调试遇到“完全没信号、示波器抓不到任何有效内容”时,我习惯按一个固定顺序排查:
- 电源和复位:VDDI、VCI、IOVCC等各路电平是否在屏端实际测量达标,复位释放时机对不对。这一步很多问题根因不是MIPI。
- 时钟lane的LP状态:CLK/P和CLK/N在待机时是否处于合法LP电平,上电后是否有LP时钟请求动作。没有合法LP电平,后续一切免谈。
- 数据lane的LP握手:用示波器看D0/P和D0/N能否在初始化阶段出现LP翻转。如果纹丝不动,对应查找SoC的PHY配置和寄存器使能。
- HS时钟是否出现:只有LP链路建立成功,HS时钟才可能启动。HS时钟没有任何波形,通常说明LP状态机没有顺利转移。
- HS数据内容:最后再解包看数据内容是否匹配屏端初始化序列。
这套顺序的核心逻辑是:LP是HS的前提,时钟是数据的前提。如果直接跳到第5步去查数据内容,很容易漏掉物理层状态机问题。
5.4 bus contention:当多个驱动源同时输出
LP TX还有一个在实机联调里特别隐蔽的问题:总线竞争。
MIPI lane在某一时刻只能由一个驱动源主动输出。主控通过LP TX发送命令时,屏端对应的PHY必须处于接收状态。反过来,屏端通过BTA机制回传数据时,主控侧的LP TX要主动释放总线并进入接收模式。如果某一侧在切换过程中没有及时把输出级变成高阻,两条线上就会出现同时被两个驱动源强拉的短时冲突,这会让电平停在中间地带,造成两边同时误判。
排查bus contention最直接的方法是把P和N的波形同时抓下来,观察切换方向瞬间两个通道有没有出现“同时在中高电平打架”的时间片。正常切换应该是一个通道先释放,另一个通道再接管。如果存在重叠,逐个确认两侧PHY的方向控制寄存器是否按要求置位,FPGA方案里还要检查三态控制门的时序是否覆盖了完整切换窗口。这个问题在纯软件上往往无法直接看到,必须先靠示波器实锤。
6. 调通LP TX之后要盯住的量产指标
6.1 温度漂移与阈值余量
如果产品是嵌入式工业设备,工作环境温度波动可能很大,LP TX的一个隐藏风险就暴露出来了。
LP-RX的阈值窗口和主控LP-TX的VOH/VOL都会随温度变化。常温下单板调试通过,不代表高低温环境下仍然有余量。我在做工业屏项目时遇到过低温-20℃以下偶发无法唤醒的现象,排查下来正是LP高电平在低温下跌落幅度变大,接近接收端VIH阈值。解决办法是重新配置驱动强度档位,把高电平余量拉高。
量产验证阶段,一定要在-40℃、-20℃、常温、60℃、85℃这几档都测LP电平,记录VOH最低点和VOL最高点,并和阈值多留至少0.15V到0.2V的余量。高速眼图大家都会测,但LP电平高低温漂移很多人不测,这往往是量产不良率的隐形来源。
6.2 线束、FPC插拔带来的寄生参数变化
屏和主控板之间如果走FPC排线,排线长度、弯折状态、以及连接器接触阻抗,都会直接影响LP信号。LP的发送速率低,对线长不敏感,但对寄生电容和接触电阻敏感。
线长增加会导致LP边沿变缓、电平被削顶,插拔时连接器氧化还会进一步增加接触电阻。我见过一个试产批次,同一条产线出来的板子,用新排线全部正常,换了稍微弯折过的排线就有一定比例点不亮。原因就是FPC弯折让某些地线接触变差,LP的回流路径阻抗变大,导致接收端电平余量归零。
建议在试产阶段用最长允许的FPC排线和最极限的弯折形态做一次LP电平测试,确认余量充足。如果余量不足,优先优化连接器到PCB的GND引脚数量,或者在PHY侧适当提高LP驱动强度,但前提是VOH不能超过接收端允许的绝对最大值。
6.3 最后分享一个检查LP是否真的发送成功的技巧
调通之后,我常给项目组留一个小技巧:用示波器的触发功能,把触发条件设在LP下降沿上,然后触发捕获整个进入HS的过程。如果每次触发都能稳定看到同样的LP到HS过渡形态,说明LP TX工作一致;如果触发位置随机跳变,或者过渡形态每次都不一样,说明LP层还有隐患。这个手法比单纯看“有没有波形”能多筛掉很多概率性问题。
MIPI LP TX看起来只是物理层的一个环节,但它把电气、PCB、协议状态机、屏端参数、量产可靠性串在了一条链路上。凡是遇到MIPI屏时好时坏、初始化偶发失败、横向花屏的案子,我都建议先把注意力放到这个“低速”发送端上。把LP捋顺了,再去追HS眼图和deskew校准,才是最高效的调试次序。