首页 / 资讯中心 / 文章详情

GMSL相机点不亮?五层排查法从供电到MIPI一步定位

GMSL相机点不亮?五层排查法从供电到MIPI一步定位 ★ FEATURED ARTICLE
GMSL相机点不亮这七个字恐怕能让不少做车载视觉的工程师眉头一皱。我第一次被这套问题缠住时花了两天换线、换模组、换板子最后才发现是供电时序差了一点。后来我把所有踩过的坑整理成一套从前往后的分层排查法从摄像头模组侧出发沿着同轴线、连接器、解串器一路往后端查把供电/地、物理链路、I2C与SerDes、GMSL Link、图像时序五层逐个验证。这篇文章会把这套方法完整讲透里面全是我实际干活时的经验适用于正在调GMSL相机的新人也适合被同样故障反复困扰的工程师。1. 为什么GMSL相机“点不亮”这么常见又这么难查1.1 先把GMSL链路结构在脑子里画出来GMSLGigabit Multimedia Serial Link千兆多媒体串行链路本质是一套高速SerDes技术。摄像头端的图像传感器Sensor输出MIPI或并行数据经过一个串行器Serializer在摄像头端打包成高速串行信号然后通过一根同轴线缆传到主机端的解串器Deserializer解串器再把这些信号还原成MIPI或并口数据交给后端的ISP或SoC处理。这条链路上还有一条容易被忽略的关键路径反向通道。主机端要把Sensor的寄存器配置通过I2C写进去但这个I2C请求要先走到解串器再通过同一根同轴线反向传回摄像头端的串行器最后由串行器以普通I2C方式写到Sensor内部。也就是说“点不亮”不是一个孤立问题链路里任何一个环节掉链子最终都表现为相机没有正常出图。我在调这种系统时习惯把链路拆成五层来看供电与地、物理连接与PoC、I2C与SerDes配置、GMSL Link与信号完整性、图像时序与MIPI配置。每一层都有明确的验证对象和通过标准。只要按照这条线一层一层往下走大部分疑难杂症都能压缩到某一个局部再也不会像无头苍蝇一样到处乱戳。1.2 “点不亮”在不同人嘴里可能代表完全不同的故障同样是“点不亮”现象其实至少有四类。第一类是完全没有反应解串器连Lock状态都建立不起来I2C也读不到任何寄存器。第二类是I2C能访问解串器但访问不到串行器更读不到Sensor的ID。第三类是Lock正常却输出黑屏或者彩条噪声。第四类最磨人上电偶发不亮重启一下或者重新插拔线缆又好了。每一类现象对应的排查发力点完全不同。如果没有分层意识很多人上来就抓一根示波器到处戳戳了半天也没有结论。实际上绝大多数点不亮都可以沿着链路逐层验证、逐层排除最后把故障范围压缩到一个明确层级再集中精力深挖那一层。这也是我今天把这套方法写出来的原因把听起来很玄的点不亮问题变成一份有标准动作的工程排查流程。2. 从前往后的分层法到底怎么分2.1 分层前先准备好这几样东西我建议在动手之前先把排查工具和资料清单过一遍缺一样都可能让定位过程卡壳。首先是原理图、PCB图纸、芯片Datasheet和寄存器手册。没有这些你连哪个引脚是复位、哪个引脚控制链路模式都搞不清楚。然后是万用表、示波器示波器至少两通道能上四通道最好再配一个电流探头或者采样电阻后面测浪涌电流时会用到。I2C总线分析工具也要准备逻辑分析仪能凑合但专用工具能直接解析地址和ACK状态效率高很多。还有两样东西容易被忽略一根确认没有任何问题的同轴跳线和一套确认完好的摄像头模组。它们是替换法的对照组。很多故障靠替换一验就出来了——把怀疑的模组换到正常通道把正常的模组换到故障通道到底是模组坏了还是链路坏了立刻见分晓。2.2 五层模型与每一层的通过标准我用的分层模型是按信号实际走过的路径从前往后排的层级对应环节典型验证手段通过标准第一层供电、地、上电时序万用表、示波器量电压与电流摄像头端电压符合规格时序满足要求第二层连接器、同轴线、PoC导通测试、晃动线缆、压降测试线缆导通良好PoC压降正常第三层I2C与SerDes配置地址扫描、寄存器读写能通过反向通道读到Sensor ID第四层GMSL Link锁定、信号完整性Lock引脚、错误寄存器、眼图Lock稳定不跳变错误计数不增长第五层图像时序与MIPI配置像素时钟、MIPI data lane测量后端SoC收到正确的帧数据核心思想是从前往后逐层验证任何一层不通过就停下来修那一层不要带着侥幸继续往上加配置。但这个顺序不是死板固定的。如果解串器端已经能看到Lock正常而图像还是黑屏那就没必要再回头耗在供电和线缆上直接跳到第五层查时序。所谓分层本质上是帮你建立“哪一层是好的、哪一层是坏的”的判断。3. 第一层供电、地和上电时序先让摄像头活过来3.1 电压不能只量连接器输出端摄像头模组不亮第一件事永远是确认供电。别急着读寄存器先拿万用表直接量模组端的供电引脚。这里有个常见的认知偏差很多车规摄像头模组内部还有一级LDO或DC/DC外部输入电压正常不代表内部各个电压域正常。比如Sensor的AVDD、DOVDD、IOVDD、PLL供电串行器的核心电压这些都在模组内部。有的模组提供内部测试点有的只能靠读回电源状态寄存器来间接确认。如果完全没有任何测试点那就要看模组电流电流为0说明供电断路电流异常偏大比如几百毫安说明有短路或者器件已经损坏。电压纹波也不能忽略。模组在待机和正常工作之间切换时瞬时电流变化很大。如果供电走线过长、滤波电容没放够电压波形会出现掉坑或振铃Sensor初始化到一半就复位了表现就是“寄存器刚写完又丢”。我习惯用示波器直流耦合直接抓摄像头端电压波形注意探头地线要短接在靠近摄像头地的地方否则测出来全是噪声。3.2 上电时序和浪涌电流最容易背锅的“隐形故障”很多Sensor的Datasheet里明确要求模拟电源先进入稳定再给数字电源复位释放需要满足固定的延时。比如一款典型车规Sensor要求AVDD上电后至少等待1ms再拉高复位脚如果时序不满足寄存器配置可能写不进或者写了又丢表现出来就是“I2C能通但图像不出”的怪症状。排查时序必须用示波器同时抓几路关键信号至少是AVDD、DOVDD、RESET、MCLK看各路电压的上升沿先后关系是否满足规格书要求。有条件的话把串行器和解串器两侧电源也一起抓判断电源轨是从哪一侧开始掉电的。浪涌电流是另一个大坑。摄像头模组内部电容多上电瞬间的充电电流可能达到稳定电流的几倍甚至十几倍。如果电源板做了限流保护或者多个模组共用一路电源电压会被瞬间拉到复位阈值以下等于每到一次电就把摄像头打回出厂状态。我之前实测过一款模组启动瞬间峰值电流超过1.2A正常工作只有250mA左右。排查方法是用带电流波形记录功能的电源或者在供电回路中串一个采样电阻用示波器抓电流上升波形确认电压有没有明显跌落。4. 第二层连接器、同轴线与PoC供电链路稳定的第一道关口4.1 手工压接和FAKRA座子问题集中营GMSL相机绝大多数用FAKRA或SMB这类50欧射频连接器。这类连接器最怕两件事芯线没压到底以及屏蔽层没有夹紧。先说最常见的“点不亮”来源。同轴线缆的芯线和插针之间接触不良或者屏蔽层与金属壳体压接不牢是手工压接线最典型的问题。芯线露出过长会顶到前端的绝缘介质里形成短暂短路露出不够pin针接触不到位时好时坏。判断方法其实不复杂用万用表量线缆两端的芯线电阻和屏蔽层电阻正常应该在零点几欧以内再量芯线对屏蔽层的绝缘电阻应该达到兆欧级。如果发现芯线对屏蔽层只有几欧甚至接近短路那基本就是线缆头压坏了直接换线。排查多路相机时还有一个特别容易被忽视的细节线束插错。开发阶段四路相机全用同款连接器很容易把B路插到A路接口。症状非常有迷惑性因为供电和I2C可能都能通但I2C地址或链路分配错乱图像就是出不来。所以排查任何一路点不亮时先确认插头和通道编号一致再做后面的动作。4.2 PoC供电里的电感是个容易被低估的角色PoCPower over Coax同轴供电技术在GMSL链路里很常见。解串器侧把直流电源透过一个偏置电路叠加到同轴线上摄像头端再用电感电容把直流电流从同轴线中分离出来给模组供电。这个偏置电路里的电感是我见过最容易出问题的器件。选型时要求电感的工作频率必须避开GMSL高速信号的频段同时要有足够的饱和电流余量。电感额定电流不够在工作电流偏大时会磁饱和电感量骤降高速信号和电源相互串扰具体表现就是链路能建立但图像偶发抖动或者负载波动时直接断链。判断方法也直接用示波器看电感两端的压差或者摸电感表面温度明显烫手的电感基本是选小了或者已经老化。另外一台解串器带多路摄像头时各路PoC路径的阻抗不匹配会导致电流分配不均。某一路摄像头启动瞬间要的电流大其他路的电压就会被拉低出现“这一路本来正常一插另一路就黑屏”的怪现象。排查时把各路PoC的走线阻抗、电感参数逐项对比优先处理与故障路差异最大的那条线路。5. 第三层I2C与SerDes配置Link之前的“通信生死线”5.1 I2C总线上最容易挂死的几种情况GMSL链路里的I2C是分层管理的。SoC先通过板级I2C和解串器通信解串器再把写Sensor寄存器的请求通过GMSL反向通道转发给串行器最后由串行器用普通I2C和Sensor面对面通信。任何一层断开I2C都会表现为“无应答”。最初的排查点是板级I2C总线。用总线分析工具直接扫解串器地址如果能读到解串器版本寄存器说明MCU到解串器这一段是好的。接下来需要透过解串器的I2C桥接功能去读串行器寄存器。很多解串器都提供地址重映射功能配置好串行器的地址后可以直接读到它的ID。最后才轮到Sensor。哪一步读不到问题就锁在哪一段。I2C总线挂死也非常常见症状是SDA一直被拉低。我遇到过好几次基本都是调试夹或者飞线接触不良导致总线进入死锁状态。处理办法是把总线上的器件逐个断开找出那个把SDA拉低的器件必要时给每颗芯片加独立的复位引脚确保I2C控制器卡死时能单独复位。5.2 SerDes寄存器配置最容易“看起来没问题实际上没配上”串行器和解串器之间的配置必须严格匹配。以常见的GMSL2为例速率档位、视频流格式、I2C口模式、GPIO反转、地址映射这些寄存器任何一个和硬件预期不一致Link都起不来。很多人喜欢把参考源码里的初始化寄存器序列整个抄过来但不同模组、不同板子之间是有细节差异的。比如串行器输入可能是MIPI CSI-2 4-lane也可能是2-lane配置里写错lane数量串行器同样能建立Link但数据lane对不上出图就成了难题。调试方法是对着模组规格书逐项确认初始化序列尤其是PHY层、视频通道和I2C slave地址这几个字段。从默认配置开始先跑通再做减法和加法每次只改一个字段搞清楚变化来自哪里。外设引脚的硬件配置也不能只盯着软件。像LINKEN、SEL、ADDR这些引脚上电时的电平由外部电阻决定直接影响芯片上电后进入的默认模式和I2C地址。如果软件配置还没有接管默认模式和硬件预期不一致就会出现“上电一瞬间有反应初始化后反而没反应”的怪问题。拿万用表量这些引脚的上、下电电平是排查中必须做的一步。6. 第四层GMSL Link信号完整性Lock不等于图像就正常6.1 Lock之后还要看错误计数和视频信号状态很多朋友一看到Lock灯亮就觉得GMSL链路已经通了。其实Lock只说明解串器在物理层检测到了串行器发来的有效高速串行信号格式双方进入了同步状态。但进入同步状态和能正确传输图像是两回事。串行器完全可能把Sensor输出的全零数据照样编码后传上来解串器也老老实实Lock住最终SoC收到的是全零像素或者没有有效帧。所以Lock信号只能作为“物理链路已建立”的判据不能当完整通过标准。排查时还要去看解串器的错误状态寄存器比如CRC错误计数、视频传输错误、寄存器同步失锁位。如果错误计数在不传数据时也在不断增长说明物理层有周期性的信号异常。6.2 线缆衰减与信号完整性物理层的“慢性病”GMSL链路对信号完整性要求不低。同轴线缆的长度、弯折半径、屏蔽层质量、两端连接器阻抗失配都会带来衰减和反射。症状往往不是完全点不亮而是随机性掉链温度升高后点不亮、线缆被踩了一脚后失锁、图像偶尔抽帧再插拔一下又恢复。排查信号完整性最可靠的手段是用示波器看串行器输出端的眼图但绝大多数现场没有这个条件。退一步的办法是先换一根半米长的短跳线看看能否稳定工作。如果能说明问题主要在线缆和连接器链路如果换了跳线还不行再看板级高速layout和供电串扰。我之前处理过一个“上电五分钟就黑屏”的问题最后定位到连接器到PCB板之间的屏蔽层接地过孔被元件挡住本来应该就近接地的地方多绕了一圈地电流噪声耦合进了GMSL差分信号。还有一点务必注意不要忽略相邻线束之间的串扰。多路并行的同轴线束扎得太紧开关电源的PWM噪声会通过线间电容耦合到接收端。处理办法是把强干扰源和信号线束物理隔开确认线束没有贴着电源模块走线。7. 第五层图像时序与MIPI配置最后一道坎往往最磨人7.1 Sensor寄存器配置错误PLL和输出格式最容易错I2C能通到Sensor串行器和解串器也正常Lock了但图像还是黑屏这时候就要去查Sensor侧配置。最容易被忽略的寄存器是PLL配置、输出分辨率、帧率和输出接口模式。举例来说一款Sensor可能支持MIPI 2-lane或4-lane输出如果寄存器里的lane数量没有跟着硬件设计匹配串行器端虽然照常封装数据但MIPI lane数错位解析出来的图像全是乱的。排查办法是把Sensor的初始化序列逐项读回和规格书推荐值比对。尤其注意PLL计算公式里的输入频率MCLK和输出像素时钟的关系MCLK不对会导致所有分频系数全错帧率直接为0。有时问题并不在配置值本身而是配置过程被中断。比如初始化序列里写Sensor寄存器时某一步I2C应答超时了但软件没做重试导致后续寄存器没写进去。这种问题很坑因为读Sensor ID是能读到的看起来链路全通但实际功能没被正确使能。排查时可以在初始化完成后把关键配置寄存器读回比对确认写入生效。7.2 MIPI/CSI接收端参数不匹配需要双向一起调即使Sensor配置正确还有最后一道坎SoC的CSI控制器。很多黑屏其实是SoC端MIPI接收窗口和发送端时序对不上。检查点包括lane数量、通道极性、数据率、虚拟通道ID、像素格式以及帧时序里的HSA、HFP、HBP、VSA、VFP、VBP这些参数。一些SoC的CSI调试工具能直接显示接收到的帧高度和宽度。如果宽度为0或者帧计数不增长说明CSI端没有锁住PLL。这时要在SoC侧调整HS时间对齐窗口或者回到串行器侧调整data-to-clock skew参数两边配合才能对上。这个环节很能体现分层法的作用。有一次我调试环视系统前面四层全部验证没有问题于是把精力完全聚焦到CSI配置结果只用了半个多小时就发现是虚拟通道ID不匹配Sensor端配置输出通道是1SoC端却填成了0就差一个字节图像一直出不来。8. 复盘一个典型“点不亮”案例这套方法怎么落地8.1 现象描述与初始怀疑某次调试一台四路环视系统的模拟项目软件初始化日志显示第4路相机的I2C读写全部超时其余三路正常。最开始怀疑第4路模组坏了于是把第4路和第1路模组互换发现故障没有跟随模组移动依然停留在第4路说明模组本身没问题。接下来把第4路和第3路的同轴线对调故障跟着线移动到了第3路。问题一下子缩小到线缆和插头范围。用万用表量这条问题线缆两端芯线电阻0.3欧左右看起来好像不算完全断路但屏蔽层两端电阻却有十几欧。拆开插头后发现屏蔽层没有压到金属壳体上只靠一小段很细的连接片搭在绝缘层上接触面积太小地回路阻抗过高。重新压接后电阻降到0.05欧第4路立即点亮。这类问题如果一头扎进寄存器扫描或者固件调试里几乎不可能找到。因为从解串器角度看信号似乎还在但地回路差一点点就让I2C反向通道不稳定表现就是“只有这一路读不到”。8.2 按分层法逐步缩小范围的过程实际排查时我是严格按顺序走的。第一步确认第4路模组端供电电压正常没有掉压排除第一层问题。第二步用替换法锁定线缆故障属于第二层。第三步线缆修好以后重新读I2C发现总线能访问模组了但图像仍然黑屏才继续查第五层最后定位到虚拟通道ID不匹配。这套方法的好处在于每次排查只引入一个变量不容易被多故障叠加搞昏头。如果遇到多个症状同时出现我的原则是先做主链路的建立等到Lock、I2C这些基础项都通过以后再处理图像格式这类高层的细节。主链路不通时任何上层配置都可能是无效的这时候抓图像格式没有意义。8.3 三个容易被忽略的细节第一个细节摄像头模组和板卡的连接器端面一定要保持清洁。现场调试中灰尘、油污会让连接器接触阻抗增大尤其在车辆、产线这种环境里问题会时有时无极其隐蔽。拿酒精和细棉签清洁端面有时比重新压接线更有效。第二个细节板级I2C的上拉电源域必须和所有器件兼容。遇到过板级I2C上拉到1.8V但解串器和SoC的I2C引脚是2.8V电平接上后只能勉强工作。正确做法是确认I2C上拉到哪个电压域所有器件都兼容以后再接线不要想当然。第三个细节热插拔最容易伤到的不是Sensor而是串行器的ESD结构。经常带电拔插同轴线时间长了会把输入端打过孔损伤出现“新模组一插就坏、换模组就恢复”的假象。现场能做到的规范操作就是把电源和信号线都断开后再拔插同时给同轴线连接器端做必要的防护。最后再分享一个我的习惯每次排查之前把解串器、串行器、Sensor三方各自的I2C地址、寄存器版本和关键配置都记录下来做成一份对照表。遇到类似问题时直接拿现场数据和正常数据做diff很多“玄学”瞬间就变成一行数据对比的事。这套从前往后的分层排查法我在多个项目里反复用过绝大部分点不亮都能在30分钟内把故障范围缩小到一个明确层级。希望这篇文章能让你下次再遇到GMSL相机点不亮时少走一点我当时走过的弯路。
阅读完成 · 觉得有帮助?
咨询建站