ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

GMSL调试核心:CFG0/CFG1引脚如何配置I2C地址与模式

GMSL调试核心:CFG0/CFG1引脚如何配置I2C地址与模式 做GMSL方案的车载摄像头、激光雷达或者域控项目调试时第一阶段基本都卡在同一个地方I2C扫不到设备。这时候硬件工程师会让你先量一下CFG0和CFG1的电平很多人第一次听这两个引脚名是懵的。GMSL的Strapping Pins CFG0/CFG1说的就是在串行器或解串器芯片上靠外部上下拉电阻设定芯片地址、工作模式等信息的硬件配置引脚。这篇文章就把这两个引脚讲透从原理到实操再到我调板时踩过的坑一次说清楚。这类内容适合正在做GMSL相关项目的人看特别是硬件工程师、嵌入式驱动工程师和做车载摄像头模组的同学。如果你只是听说过GMSL但还没开始用也能通过这篇文章建立完整的硬件配置认知框架。1. 为什么做GMSL配置时躲不开CFG0/CFG11.1 GMSL方案到底是什么它和普通I2C设备有什么不同GMSL全称是Gigabit Multimedia Serial Link也就是千兆多媒体串行链路由Maxim Integrated现在属于ADI提出后来在车载高清摄像头、激光雷达、毫米波雷达这些传感器数据传输场景里成了事实标准。它最核心的特点是用了同轴电缆一根线把摄像头的MIPI CSI-2视频信号、I2C控制信号、GPIO触发信号全部打包成高速差分串行数据在一条同轴线上同时双向传输。视频下行带宽高控制信号上行低速两者用不同频段复用在同一根同轴电缆里这技术细节以后聊POCPower over Coax同轴电缆供电的时候再展开。和普通I2C设备最大的区别在于GMSL链路里有两类芯片靠近摄像头传感器一侧的叫串行器也就是Serializer通常标记为MAX96717、MAX96715这些型号靠近域控或SoC一侧的叫解串器也就是Deserializer常见型号是MAX96755、MAX96712这类。域控的I2C控制器只能直接访问解串器而解串器要访问远端串行器必须通过GMSL链路把I2C数据包封进高速串行流里转发过去。这就带出一个关键问题一条GMSL链路上有两颗芯片每颗都需要有自己独立的I2C地址否则控制器没法区分当前到底在和谁通信。默认情况下同一型号的串行器和同一型号的解串器出厂地址是一样的这不炸了两片全叫0x40总线上写谁呢解决这个问题的方案之一就是芯片在复位释放的瞬间把特定IO引脚的电平锁存下来用于改变芯片内部寄存器里的地址映射这些引脚就是Strapping Pins其中最重要的一对就是CFG0和CFG1。1.2 为什么用硬件引脚而不是纯软件配置不少人会问既然芯片内部有寄存器为什么不能上电后直接用软件改地址非要板子上拉几个电阻这里面的逻辑很现实。第一芯片刚上电时I2C从机还没有一个独立的地址就算软件想写寄存器也不知道往哪个地址写这是鸡生蛋的问题。第二GMSL链路建立本身就需要先通过I2C配置链路一旦不通远离控制器的那颗芯片完全无法被访问你必须给它一个出厂就能被识别到的地址。第三硬件Strapping Pin在芯片复位释放时被采样这个机制不依赖任何固件和驱动属于“裸机可识别”级别哪怕后面固件崩溃了只要硬件连接还在地址就不会变。用硬件引脚做地址分配的思路在生活中其实很常见。就像每家每户的信箱编号——不是等邮递员来了再临时问“你家几号”而是门牌号早就钉在门上了。Strapping Pin就是这颗芯片的“门牌号”它在上电那一瞬间被锁存下来之后整个运行周期都有效除非硬件重新复位。当然不是所有GMSL芯片都只靠CFG0/CFG1两个引脚有些芯片会有CFG0到CFG7八个引脚用于表达更复杂的配置信息但原理完全一致。大多数主流串行器和解串器产品里CFG0/CFG1组合是最核心的两个配置位所以我下面都以这对引脚为主来做拆解。2. CFG0/CFG1引脚的功能与配置规则2.1 引脚电平如何转化为地址和模式把CFG0/CFG1引脚接高电平VIO或者接低电平GND给芯片一个确定的逻辑值芯片在复位释放时将这两个逻辑值锁存到内部寄存器中。这个锁存过程通常发生在芯片的复位引脚从低拉高、电源电压达到门限之后的一段固定时间内具体时间窗口每颗芯片略有差异常见的是几十微秒到几百微秒。过了这个采样窗口你再怎么拨动这两个引脚的电平都不会改变当前地址必须重新复位才能重新采样。这两个引脚能编码的状态是两两组合每种组合可以对应一个独立的I2C设备地址也可以对应一种工作模式或者一条GMSL链路的物理顺序。不同的芯片型号、封装、版本映射关系都可能有差异所以做设计时第一件事永远是查对应型号的数据手册去找到“Configuration Pins”或“Strapping Pins”那一章把映射表抄出来。网上很多方案是拿MAX96717配MAX96755来做的如果你也用的是这两个可以直接参照后面章节的地址配置方法但换型号就要重新确认。这里有一个非常重要的概念Strapping Pin锁存的是“地址映射”不是“最终地址”。什么意思芯片内部地址寄存器里面有一个I2C目标地址寄存器Strapping Pin的值一般会决定这个目标地址是从默认值开始加偏移还是直接切换到另一个预设值。比如某些解串器上CFG0/CFG1两个引脚接法对应关系是这样的CFG0接高、CFG1接低时设备地址从默认0x80偏移到0x82反过来CFG0接低、CFG1接高时偏移到0x84。注意有些芯片数据手册里会把I2C地址写成7位格式比如0x40而实际总线通信时是8位格式等于0x80因为最低位是读写标志位。这是我调试时最容易犯糊涂的地方后面讲到排查问题的时候再详细说。2.2 不同芯片型号的典型配置组合参考为了让大家有一个直观的参考我整理了常见GMSL串行器和解串器关于CFG0/CFG1的典型配置逻辑但请务必以你手里那颗芯片的官方数据手册为准这里只是帮你建立找规律的思路。CFG0电平CFG1电平典型含义以常见串行器为例典型含义以常见解串器为例低GND低GND设备地址0x40默认值设备地址0x80默认值低GND高VIO设备地址0x42设备地址0x82高VIO低GND设备地址0x44设备地址0x84高VIO高VIO设备地址0x46设备地址0x86看到这个规律了吗CFG0和CFG1组合起来相当于一个两位的二进制数接低算0接高算1。串行器这边组合值作为一个偏移叠加到默认地址0x40上偏移量等于组合值的两倍解串器这边默认地址通常是0x80但偏移规则要具体情况具体分析。有一些芯片的CFG引脚不仅影响I2C地址还会影响GMSL链路速率模式、GPIO功能映射、I2C速率上限等参数配置之前需要通读寄存器手册。我的建议是在原理图设计阶段就把CFG0/CFG1的期望电平用表格方式标注在原理图上比如“CFG0: 1上拉到VIO”、“CFG1: 0下拉到GND”并且把这个表和固件配置地址写到一块。这样后面硬件调试、软件联调的时候两边拿着同一份表格能省掉大量靠猜来排查地址的时间。2.3 上拉下拉电阻值和电平精度的工程取舍CFG0/CFG1的电平不是直接把引脚接到VIO或GND那么简单一般在引脚和电源或者地之间串联一颗电阻。从电路功能上讲直接接死其实也能工作但串联电阻主要是为了调试灵活性和兼容性考虑。电阻阻值的选择上4.7kΩ到10kΩ是常见区间。为什么不能太大因为引脚内部通常有一个小的下拉电流源或者漏电流电阻太大时引脚上的压降会大到把逻辑电平拉到不确定区域。我见过有人用100kΩ上拉到3.3V结果实测引脚下降到1.1V而芯片的高电平门限是2.0V直接导致采样的逻辑值错误设备地址完全不对。反过来电阻也不能太小否则静态功耗增大在汽车电子这种对静态电流有严格要求的场景会造成不必要的电量损耗。另外有个容易被忽略的点CFG0/CFG1的电平参考电压是VIO引脚电压不是芯片主电源电压。如果VIO接的是1.8V那么CFG引脚的高电平就是1.8V低电平是0V。用3.3V上拉去配1.8V的VIO轻则采样逻辑异常重则超过引脚绝对最大额定值。所以设计时上拉电阻的另一端一定要接到VIO别想当然地接到3.3V或者5V上。3. 实战从原理图到PCBA的完整配置流程3.1 设计前的确认清单别漏掉的那张映射表新做一个GMSL摄像头方案时硬件原理图阶段就要把CFG0/CFG1的配置定下来。但很多工程师习惯先把原理图丢出去等到板厂已经开工了才发现地址配错了。这其实是流程管理的问题因为CFG0/CFG1虽然只是两颗电阻的接法但它的影响范围覆盖整个链路通信改起来牵一发动全身。我一般的流程是先建一个引脚配置确认清单至少包含以下几项串行器型号、封装、引脚编号确认CFG0/CFG1对应哪些封装引脚解串器型号、封装、引脚编号目标I2C地址串行器是多少解串器是多少和SoC端地址是否冲突CFG0/CFG1组合值与目标地址的映射关系必须从数据手册里摘录原文VIO电压等级上拉电阻接哪一路电源该配置是否影响GMSL链路模式或其他功能这张表单我建议在原理图评审阶段就发给硬件、软件、系统三个人同时过一遍。软件这边还好说反正API接口层可以适配不同地址怕就怕硬件改了一颗电阻软件不知道还是拿旧地址去扫描结果白白查了两天找不到原因。3.2 原理图阶段两颗电阻怎么摆都有讲究确认了映射关系之后原理图设计就是画两颗电阻的事一颗上拉到VIO一颗下拉到GND。这时候有几个细节需要考虑。第一CFG0和CFG1的走线要尽量短直接从芯片引脚拉到电阻端。虽然这是静态电平信号不像I2C那样讲究信号完整性但如果走线太长且旁边有高速开关电源可能耦合噪声导致复位释放瞬间采到错误电平。第二上电瞬间电源的爬升斜率要关注如果VIO爬升太慢芯片复位释放时VIO还没到高电平门限这时CFG引脚即使上拉了也可能被采为低电平。这个问题的典型处理方法是把复位RC延时调大一点确保复位释放发生在VIO稳定之后。第三两个引脚不要为了对称美观就照搬参考设计而要根据实际芯片封装引脚排布来决定避免过孔太多、绕线太长。原理图里建议加注释说明这两颗电阻的用途比如“R120: CFG0 pull-up to VIO, I2C addr0x42”。这个注释在PCB Layout评审、生产测试、后期维护阶段都能帮大忙。我接手过一块别人画的板子上面一堆电阻没有网络名没有注释为了确认CFG0为什么上拉只能拿着万用表一颗颗点效率极低。3.3 焊板后实测验证怎么确认引脚真的锁存对了板子焊接完成、准备上电调试时不要急着接摄像头或者加载驱动先手动验证CFG0/CFG1是否被正确锁存。我的标准流程是这样的先用万用表测CFG0/CFG1引脚对GND的电压确认硬件连接无误该高的高、该低的低。注意这里测的是芯片引脚本身的电压不是电阻另一端的电源电压防止电阻虚焊导致引脚悬空。然后给系统上电用I2C扫描工具扫描总线。市面上常见的USB转I2C调试器都可以比如Aardvark、Total Phase或者直接用树莓派的I2C接口也行。扫描结果里应该能看到目标设备地址出现在总线上。如果扫描出来的地址和设计值不一致先别怀疑寄存器配置大概率是Strapping Pin采样出了问题。重新断电用万用表再量一次引脚电压确认之前的设计值无误。如果电压都对但地址不对那就需要把这个芯片的复位引脚手动拉低再拉高重新触发采样同时用示波器抓复位释放时刻CFG引脚的电平波形看是否有毛刺。实测下来CFG0/CFG1配错地址导致的典型现象是I2C扫描总线上多了一个地址或者少了一个地址。多了一个地址通常是串行器被分配了和总线上其他设备相同的地址少了一个地址通常是引脚悬空或者电平不确定芯片内部把这个值判成了保留组合。3.4 I2C地址冲突检查一上总线就有两台设备响应GMSL系统里最大的隐患之一就是I2C地址冲突。一块域控板上可能同时接多路摄像头每路串行器、每路解串器都要有独立地址。虽然GMSL的转发机制可以做到在物理层隔离I2C请求但如果地址分配不合理同一I2C总线上两个设备响应同一个地址控制器收到的数据就是两个设备响应结果的叠加通信数据完全不可信而且表现非常随机。我用过一个四路摄像头方案四个解串器集成在一颗四通道芯片里地址用内部寄存器配置外部只需要给每个通道配置串行器地址。四颗串行器型号相同、默认地址一样就必须靠每颗芯片旁边的CFG0/CFG1组合来错开。四颗串行器的地址分配方案可以这样设计第1路串行器CFG0接地CFG1接地地址0x40第2路串行器CFG0接地CFG1接高地址0x42第3路串行器CFG0接高CFG1接地地址0x44第4路串行器CFG0接高CFG1接高地址0x46但要注意不是所有芯片都支持四个地址有些芯片只有三个有效组合其中一个组合是屏蔽地址或者测试模式。所以设计前要仔细确认数据手册里的地址映射表不要想当然认为四个组合一定对应四个地址。还有一个容易踩的坑很多SoC的I2C控制器本身也在总线上占用一个地址或者总线上还有其他传感器共用这条总线。GMSL设备的地址范围通常集中在0x40到0x4F、0x80到0x8F这些区域规划地址时要先把总线上所有设备的地址列出来做成一张地址分配表避免冲突。这张表要同步给软件团队驱动初始化时就按这张表来枚举设备。3.5 多路摄像头场景下的地址规划实战多路摄像头场景比单路复杂得多我举个具体的四路方案来演示完整规划过程。假设SoC通过一条I2C总线控制一颗四通道解串器这颗解串器的I2C地址由自身引脚和寄存器共同决定设为默认地址0x80。四路串行器地址通过CFG0/CFG1分别配置为0x40、0x42、0x44、0x46。理论上SoC访问0x80时和四颗串行器直接通信吗不行还要在解串器里配置一个I2C地址转发表把远端串行器的地址映射到解串器内部的不同通道。这个映射关系到GMSL机制的一个核心概念在解串器内部四个通道地址可以各不相同比如把通道0的串行器映射成0x40通道1映射成0x42以此类推。驱动初始化时会依次访问0x40、0x42、0x44、0x46但实际上这些请求都被解串器截获根据对应通道转发到远端的串行器。所以串行器的CFG0/CFG1地址必须和驱动初始化时的通道枚举顺序精确匹配否则链路建链后无法正常通信。我在一次实际项目里就遇到这种事三路摄像头前两路图像正常第三路黑屏。查了半天最后定位到第三路串行器的CFG0/CFG1电阻在贴片时被贴错位置实际地址是0x44但软件按0x46去访问自然没反应。这个案例再次印证了CFG0/CFG1的硬件连接必须和软件地址表保持完全一致的结论。4. 常见问题与排查技巧实录4.1 设备扫描不到先查地址还是先查链路I2C扫不到GMSL设备时很多人第一反应是查链路配置、查寄存器但我会先查地址。为什么因为地址查询成本最低一个I2C扫描命令就能搞定却能排除一大半问题。具体排查顺序如下用I2C扫描工具扫描整个地址空间看是否有设备应答如果扫描结果为空优先用示波器或万用表确认SDA、SCL线序是否正确、上拉电阻是否焊接如果SCL有波形、SDA无应答再回头量CFG0/CFG1引脚电压确认地址是否和预期一致如果CFG引脚电压正常再查解串器的LOCK引脚或寄存器确认GMSL链路是否已经建链如果链路未建链需要查串行器侧的电源、时钟、复位以及同轴线缆连接这个顺序能帮你快速定位问题层级先排除地址配置问题再排除链路物理问题最后才深入到协议和寄存器配置。很多新手容易跳过第一步直接开始查寄存器结果发现一切正常但就是不通最后才想到是地址配置被贴反了浪费时间。4.2 I2C地址是0x40还是0x807位和8位格式别搞混GMSL芯片数据手册里对I2C地址的标注有两种习惯一种是写7位地址比如0x40另一种是写8位地址比如0x80。这两种写法差一位原理上是同一个设备但如果你在驱动程序里写错了就会出现永远扫不到设备的诡异现象。最简单的换算方法8位地址等于7位地址左移一位最低位是0表示写操作是1表示读操作。比如7位地址0x40对应8位地址0x807位地址0x62对应8位地址0xC4。很多Linux内核里的I2C子系统API默认使用7位地址而数据手册寄存器表里可能写的是8位地址这中间需要一次转换。我踩过的坑是某款解串器数据手册里明确写“I2C device address is 0x80”我当时在驱动里直接写0x80结果总线扫描一直失败。后来仔细看才发现内核的i2c-core会把传入地址当成7位再用所以实际发出去的是0x80左移一位后的0x100直接超范围无效。正确写法是传0x40让内核自动转换为8位0x80。4.3 上电时序对CFG引脚采样的影响怎么排查上电时序问题比电阻焊接问题更隐蔽。CFG0/CFG1的采样发生在复位释放瞬间如果此时VIO电源还没有稳定即使引脚接了正确的上拉电阻芯片也可能采到中间电平或错误电平。排查这类问题需要用示波器同时抓三路信号VIO电源爬升波形、复位引脚波形、CFG0引脚波形。正常的时序应该是VIO先爬升到稳定电压然后复位引脚从低拉高而CFG引脚在复位拉高之前就已经稳定在目标电平。如果抓到VIO还没稳住复位就释放了解决办法有几个调整复位RC延时增大RC常数让复位释放晚于VIO稳定如果SoC GPIO控制复位增加固件延时先让电源稳定再释放复位在CFG引脚到地之间并联一个小电容比如0.1uF抑制上电瞬间的毛刺干扰我之前在一块板子上就遇到这个问题常温下一切正常低温环境下I2C偶尔扫不到设备。后来用示波器抓低温启动波形发现电源芯片低温启动变慢复位RC时间不够导致CFG引脚还没稳定就被采样。把复位RC常数从10ms改成50ms后问题彻底消失。这个案例充分说明Strapping Pin不是只画两颗电阻那么简单上电时序是整个配置可靠性的隐藏前提。4.4 常见问题速查表把实际调试中经常遇到的问题整理成速查表方便回头对照。现象可能原因排查方法解决措施I2C扫描无任何设备应答SDA/SCL线序接反、上拉缺失万用表测SDA/SCL电压修正接线补齐上拉电阻扫描结果多出未知地址CFG引脚悬空采样到综合电平万用表测CFG引脚电压补焊上下拉电阻确认电平扫描到设备但读写无响应7位/8位地址格式混用检查驱动中地址格式统一用7位地址格式低温或异常启动时偶尔扫不到VIO未稳复位已释放示波器抓上电时序增大复位RC延时或软件延时地址正确但链路建不起来串行器电源或时钟异常查串行器侧电源和MFP时钟修复对应供电或时钟电路多路中某一路不通该路CFG电阻贴错量CFG引脚电压对比设计表返修电阻或修改软件地址表复位后地址仍不变芯片处于复位状态未重新采样确认复位引脚释放拉低复位再拉高重新采样这张表里的每一项都是我在实际项目中踩过的或者同事踩过的希望你看完能少走弯路。4.5 飞线改配置的小技巧有时候板子已经打样回来了才发现CFG0/CFG1配置需要改这时候飞线是最高效的办法。飞线的基本原则是要改成低电平就把引脚对GND飞一根线或者把原上拉电阻摘掉再对地飞线要改成高电平就把引脚对VIO飞一根线。飞线尽量短直接从芯片引脚飞到最近的电源或地过孔避免在板上绕一大圈形成天线效应。飞线改完以后一定要重新断电再上电让芯片重新采样Strapping Pin否则你会觉得改了和没改一样。另外飞线只能用于调试验证不能作为量产方案。量产板必须在改版时把原理图和PCB一起更新避免后续生产还是按旧图纸贴片。4.6 寄存器改动和硬件配置的联动关系说一个很多人忽略的点硬件Strapping Pin设的地址是芯片上电时的“默认地址”但芯片正常工作后内部寄存器里的地址是可以被软件修改的。也就是说CFG0/CFG1不是一锤子买卖。为什么还要保留这个机制因为存在一个时序上的需求SoC上电时先要访问默认地址来发送初始化序列这个初始化序列会把串行器的地址从一个默认值改成新的值以释放总线地址空间给其他设备。所以你会看到某些驱动里有一段“change I2C address”的逻辑把0x40改成0x42之类的操作。这属于正常的寄存器配置流程不是硬件配置失效。不过要特别注意如果软件改了设备地址但后面又触发了芯片复位芯片会重新回到Strapping Pin设定的默认地址。所以如果调试中出现“地址多变”的问题不要怀疑CFG引脚先查是不是有未处理的复位信号或看门狗复位在起作用。我遇到过某块板子因为看门狗超时不断复位芯片导致动态改写的地址反复失效看起来就像CFG配置不稳定一样。这类问题光看原理图很难发现得抓时序才能定位。5. 工具和调试方法推荐5.1 I2C调试工具怎么选调试GMSL链路一个称手的I2C调试工具能让你效率翻倍。我自己的经验是不同阶段用不同工具没有一把万能钥匙。开发初期做寄存器验证推荐用USB转I2C调试器支持命令行扫描和脚本自动化方便批量读写寄存器。这里给个小建议如果你用Total Phase Aardvark可以直接用它的Control Center软件做图形化操作比命令行直观不少。Linux环境下我还会在树莓派上写一个I2C读写小脚本配合gpio控制复位脚实现一键初始化链路、一键扫描设备。量产测试阶段重点是快速判断每台设备的实际I2C地址是否和配置表匹配。我会写一段自动化测试脚本扫描总线上所有地址和预期表比对不一致就直接上报。这个脚本还能顺带验证上电时序做法是脚本控制复位引脚延时不同的时间后扫描地址确认Strapping Pin采样是否都正确。5.2 示波器抓取CFG引脚采样波形的几个技巧排查CFG引脚采样问题时示波器是终极诊断工具。但抓这个波形有几个技巧不掌握的话容易误判。首先触发放置在复位引脚上用下降沿触发准备然后拉低复位再拉高复位触发点就是复位释放的上升沿。此时在CFG引脚通道上应该看到的是一个稳定的高或低电平而不是随机的跳动信号。如果CFG引脚在复位释放后还持续跳变几十毫秒说明引脚可能处于悬空状态或者上拉电阻虚焊。其次尽量使用差分探头或短地线夹避免长地线引入噪声。CFG引脚是静态电平对噪声容忍度其实很高但在高速开关电源旁边时地弹和辐射噪声可能让波形出现毛刺。我见过一次CFG引脚的示波器波形上叠加了高达1V的开关噪声毛刺芯片直接判成了高电平而万用表量出来是低电平。示波器一抓真相立现。最后把VIO的爬升波形和复位释放波形放在同一画面里看时序关系。设定好触发位置一次上电就能把三路信号全部抓下来判断是否符合“VIO先稳、复位后释放、CFG先定”的时序要求。5.3 GMSL链路建立后怎么快速确认通信正常CFG0/CFG1配置正确只是第一步还要确认GMSL链路通信正常。除了I2C读写之外有几个寄存器位是必查的。串行器侧查LOCK状态和视频流发送状态寄存器确认传感器端PCLK、MIPI信号是否正常送入。解串器侧查LOCK状态和通道锁定寄存器确认同轴链路的锁定状态。还有GPIO状态寄存器可以用来确认同轴电缆的通断。经验之谈链路建链后再回头检查CFG寄存器配置值确保Strapping Pin锁存的值确实写入了对应的地址映射寄存器。这一条看似多余但能帮你区分“硬件上CFG采错了”和“软件初始化又把地址改掉了”这两种不同的问题。我写过一个小函数初始化完成后把所有关键寄存器的值回读一遍打日志存档问题出现时直接翻日志能省很多排查时间。6. 量产阶段CFG0/CFG1的注意事项6.1 贴片和测试环节容易漏检的事从样品到量产CFG0/CFG1这类配置引脚的检查很容易被遗漏。一方面是因为它们看起来只是两颗电阻功能上不像主芯片那么显眼另一方面是工厂测试通常只测功能如果功能恰好侥幸正常就不会去验证配置是否正确。我建议在量产测试工位增加一个显式检查项扫描I2C总线比对实际设备地址和预期地址。这比单纯测试“能不能读到摄像头ID”更可靠因为摄像头ID可能通过别的通路暴露而地址错了会导致整个链路通信失败属于基础功能的根基。治具设计上最好在测试FPC或连接器处预留测试点让测试程序可以测量CFG0/CFG1的对GND电压。这个测量不需要高精度只要判断高低电平即可成本极低但能覆盖掉电阻错料、漏贴、贴反等问题。6.2 生产批次变更后的回归验证芯片批次变更是个容易忽视的风险点。同一型号的GMSL芯片不同批次或不同丝印版本Strapping Pin的映射关系可能微调。虽然ADI一般不会做这种不兼容的改动但硬件升级、器件替代时还是建议主动做一次回归验证。做法很简单拿新批次的芯片贴在老板子上上电扫描I2C地址和设计表比对。如果地址变了先查数据手册的版本更新说明再确认是否需要调整原理图或软件初始化序列。这个验证一次只需要几分钟但能避免整批板子进入产线后才发现地址错误的大事故。6.3 整车量产的地址分配规范如果做的是车规项目GMSL设备的I2C地址分配会纳入整车电子电气架构的规范管理不是硬件工程师自己拍脑袋定的。我见过OEM的规范文档里会直接指定每个摄像头节点的地址范围甚至精确到每个功能域。在这种项目里CFG0/CFG1的配置不能只看单板设计还要和整个系统的地址分配表保持一致。比如前视摄像头和环视摄像头虽然硬件相同但可能被分配到不同的I2C地址段这时候就是靠CFG0/CFG1的电阻接法来区分。所以在原理图阶段就要和系统工程师确认地址分配方案别等板子做了再改。整车环境下还要考虑到线束长度和拓扑结构。地址分配除了要避免冲突还要为未来扩展预留地址空间。我经历过一个项目初期只有四路摄像头地址规划刚好占满后来要加一路DMS摄像头只能重新规划整棵I2C树的地址工程量巨大教训深刻。6.4 顺带提一下POC和CFG引脚的关系最近很多人在做GMSL的POC功能也就是Power over Coax同轴电缆供电。这个功能和CFG0/CFG1没有直接关系但我在调试POC供电时发现一个现象同轴供电的DC-DC电源纹波如果太大会通过地回路耦合到CFG引脚附近导致复位释放时采样错误。我遇到过一次很奇怪的问题模块在实验室用外部稳压电源供电时完全正常一上车载电池供电就偶发I2C通信超时。排查到最后发现是POC电源的开关频率纹波干扰了CFG引脚电平。解决方法是给CFG引脚增加RC滤波或者在POC电源输出端增加LC滤波。这也解释了为什么汽车电子设计里哪怕是一颗看似简单的上下拉电阻也要认真处理电源完整性和地平面问题。POC功能本身的实现方法是在解串器端把电源通过电感馈入同轴线中心导体在串行器端再用电感把电源和高速数据分开。这个“电感馈电”的设计对电源纹波抑制有直接影响如果电感选得不好POC输出纹波会很大从而影响整个链路的稳定性。这块内容展开讲又是一大篇以后单独写。写在最后的几点个人体会做GMSL项目这几年我最大的体会是真正让人翻车的往往不是复杂的高深技术而是像CFG0/CFG1这种看起来人人都该知道、实际上很多人都没真正弄透的基础配置。一个引脚的电平错误可以让你怀疑到摄像头传感器、怀疑到SoC驱动、怀疑到线束接触不良最后才发现只是板子上两颗电阻焊反了。所以我特别建议在原理图评审阶段就把CFG0/CFG1的配置表做出来和软件团队拉通。这个动作不复杂但能省掉后面至少两天的联调时间。还有一点想重复强调的是拿到一块新板子时第一件事永远是量电压、扫I2C地址用最小成本的检查排出最大概率的问题比一上来就翻寄存器手册高效得多。如果你正在做GMSL方案希望这篇文章能帮你少踩几个坑。CFG0/CFG1看起来很基础但基础的东西往往最值得较真。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表