资讯详情

芯驰X9HP驱动MAX96752/MAX96755的GMSL2仪表屏显示链路调试全记录

📅 2026/9/16 9:09:58 | 华诺云谱 👁 阅读
芯驰X9HP驱动MAX96752/MAX96755的GMSL2仪表屏显示链路调试全记录
接手这个需求的时候我本以为就是照着参考设计接两根线、写一串寄存器的事。真正蹲在调试台前对着逻辑分析仪和示波器折腾了快一周才发现GMSL2这条链路里藏着太多文档里写了但没人告诉你为什么的细节。芯驰X9HP驱动MAX96755/MAX96752点亮智能座舱仪表屏这个组合在当前座舱域控方案里出现频率很高但网上能搜到的资料大多是datasheet片段很少有人把从硬件检查到寄存器配置再到图像验证的全过程串起来讲一遍。这篇文章就把我这次点亮12.3寸1920x720仪表屏的完整过程做个复盘包括最终调通的寄存器配置表以及中间踩过的几个坑。1. 从座舱架构看起为什么必须走GMSL2这条窄路先说结论仪表屏和域控制器之间的物理距离决定了你没法用一堆LVDS线直接连。智能座舱的典型布局里X9HP所在的域控制器通常放在副仪表台、扶手箱下方或者手套箱后方而仪表屏立在正驾驶前方两者之间的走线距离轻松超过80厘米有些车型甚至要绕到A柱再拐回来奔着1.5米去了。如果直接用LVDSOLDI把X9HP的显示控制器和屏幕连起来24bit RGB加上同步信号需要差不多10对差分线线束又粗又硬布线极其痛苦EMI也是场噩梦。更重要的是这种直连方式完全没有余量去扩展其他信号什么I2C触控回传、背光控制、屏幕状态检测统统得再加线。GMSL2方案解决的就是这个痛点。它把视频下行数据、双向I2C控制通道、GPIO状态、中断信号全部复用到一条同轴电缆或者一对STP双绞线上视频带宽也够用。这次的链路结构是这样的X9HP显示控制器输出LVDSOLDI信号接到MAX96752串行器的LVDS输入MAX96752把并行视频信号串行化调制成GMSL2高速差分信号通过STP线缆传输线缆另一端接MAX96755解串器它从GMSL2链路上恢复出视频数据和像素时钟输出MIPI DSI信号仪表屏模组是MIPI DSI接口12.3寸1920x72060fps像素时钟约98MHz选这条链路还有个现实原因仪表屏的可靠性要求极高。它不是中控大屏开车过程中黑屏、花屏、闪断都是安全事故。GMSL2帧结构里有CRC校验和错误报告机制链路一旦出现误码解串器能立刻把状态上报给SoC这对做功能安全和诊断非常有价值。LVDS直连就没有这种机制线缆稍微受到干扰屏幕出现噪点你根本无从排查。当然GMSL2方案也不是没有代价——配置复杂度直线上升。串行器、解串器各有几十个寄存器链路速率、PHY参数、I2C地址映射、视频格式映射任何一个不对屏幕就是点不亮。这正是这篇文章想解决的问题让你少走我走过的弯路。2. MAX96752和MAX96755各干各的活链路组成与硬件准备2.1 两颗芯片的分工逻辑链路里两颗芯片的角色必须完全搞清楚否则后面配置的时候会一头雾水。MAX96752是串行器Serializer它处在SoC这一侧任务是把X9HP送过来的LVDS视频信号编码成高速串行数据流同时把来自SoC的I2C控制命令打包到GMSL2帧中沿下行链路发给远端。MAX96755是解串器Deserializer处在屏幕那一侧负责从链路上恢复出视频数据、像素时钟输出到屏幕同时也把远端设备比如屏幕的触控IC的I2C响应通过上行链路回传给SoC。注意GMSL2的下行和上行是在同一条物理链路上分时或分频实现的这正是它只需要一条线缆的原因。选择MAX96752MAX96755这个组合除了车规级可靠性和成熟的生态还有带宽方面的考量。MAX96752支持最高3Gbps的GMSL2链路速率对于1920x72060fps的仪表屏来说LVDS输入大约需要2.7Gbps的总带宽24bit RGB加上同步开销3Gbps刚好有裕量。如果你的项目要上1920x1080甚至更高分辨率的屏幕就要考虑6Gbps级别的链路方案了那用的就是另一档芯片寄存器配置逻辑也会变。所以这套配置表不是万能的它是针对3Gbps链路速率调出来的。2.2 硬件准备清单调GMSL2之前建议把东西备齐别等开始调试了才发现少工具。类别项目说明硬件X9HP开发板带LVDS接口引出确认LVDS通道在板上的丝印和管脚定义硬件MAX96752串行器子板注意接口是STP还是同轴决定PHY配置硬件MAX96755解串器子板确认输出接口是MIPI DSI还是其他类型硬件12.3寸MIPI DSI仪表屏模组需要屏厂提供的时序参数表和初始化代码硬件STP双绞线或同轴线缆建议准备两根一根备用工具示波器测量PDB时序、LOCK信号、像素时钟工具I2C调试工具i2c-tools在X9HP Linux终端里操作我全程用的这个工具逻辑分析仪抓取I2C总线时序排查地址和ACK问题软件MAX96752/MAX96755 datasheet务必下载最新版本寄存器定义以实物为准2.3 最容易焊错、接错的三处地方一个是STP线缆的差分极性。GMSL2的STP传输是差分信号正负接反了链路大概率锁不住LOCK引脚一直在低电平。接线之前拿万用表量一下两端的定义。第二个是PDB引脚的上电控制。MAX96752和MAX96755的PDB都是低电平掉电、高电平工作的全局控制引脚。如果SoC GPIO直接控制注意电平域X9HP的GPIO如果只有1.8V而芯片的VDDIO是3.3V必须加电平转换否则PDB可能达不到高电平阈值。第三个是终端电阻/端接配置。STP线缆和同轴线缆对于PHY来说电气特性不同寄存器里对应的端接配置选项也不一样。我见过有人拿着STP的板子在软件里配了同轴模式结果始终无法锁定。这类PHY配置在寄存器表里之前先确认板子走的是哪一种传输介质。3. 开搞之前先把电上明白PDB时序、LOCK信号与初始状态检查3.1 PDB不是你想拉高就能拉高不少第一次调GMSL2的人在硬件上电后立刻用GPIO把PDB拉高然后急着去扫描I2C设备发现扫不到就以为芯片坏了。其实PDB拉高前必须保证芯片供电已经完全稳定。MAX96752和MAX96755通常有多个电源域主电源、IO电源、PLL电源。datasheet里一般会给一个上电时序要求比如VDD先稳定VDDP之后稳定然后PDB拉高拉高后还要等芯片内部启动完成通常有个Tpdb时间几十到几百微秒不等I2C才开始响应。我这次做的时候为了保证时序直接把PDB接在了一个RC延时电路上同时让X9HP GPIO在系统启动后延时100ms再拉高。稳妥起见直接查你所用芯片型号对应datasheet的Power-Up/Down Sequencing章节。上电后如果I2C还是扫描不到检查三件事测量PDB引脚实际电压确保高于VIH阈值测量芯片供电电压尤其是VDDIO有没有对应上I2C上拉电平I2C总线上拉电阻是否接好阻值是否合适1.8V/3.3V下通常2.2k到4.7k3.2 LOCK信号是第一条生命线LOCK引脚是GMSL2链路PHY层的锁定指示。MAX96755的LOCK输出高电平说明它已经能从链路上恢复出有效的GMSL2信号这时候链路物理层就通了。但要注意LOCK不等于可以出图它只表示PHY层锁定视频数据是否正确恢复还取决于寄存器配置。我用示波器同时抓了MAX96752侧发送端的信号和MAX96755侧的LOCK引脚。正常情况下上电并配置好基本PHY参数之后LOCK应该能拉高。如果LOCK一直低排查顺序是线缆连好了吗STP接线极性对吗串行器端是否在发送GMSL2信号示波器看串行器输出引脚两端的PHY配置端接、速率是否一致PDB都处于高电平吗这里有一个很容易混淆的点串行器MAX96752侧也有一个LOCK相关的状态位它表示串行器是否检测到了下游解串器其实不是串行器的LOCK状态一般是反映本地PLL是否锁定。真正反映远端链路状态的是解串器的LOCK。所以调试时常常是MAX96755的LOCK引脚决定一切。3.3 用I2C读回设备ID确认通信正常PDB和LOCK都正常后进入软件调试第一步。用i2c-tools扫描总线上有哪些设备i2cdetect -y -f 0我的板子上X9HP的I2C控制器在总线0上扫描结果会显示一个或两个I2C地址。MAX96752在链路初始化之前应该出现在总线上地址是它的默认地址不同批次可能不同datasheet里有。确认识别到设备后读一下设备ID寄存器0x0000和版本寄存器0x0001i2cget -y -f 0 0x40 0x00 0x00 i2cget -y -f 0 0x40 0x00 0x01注意GMSL2芯片的寄存器地址是16位的所以i2cget要分高字节和低字节两次传地址。如果读回的值跟datasheet里的Device ID对应得上说明I2C物理链路是通的。这一步虽然基础但值得花时间确认因为后面所有配置都建立在这个基础上。4. I2C先通屏幕才亮X9HP访问远端MAX96755的链路搭建4.1 GMSL2的I2C隧道机制GMSL2链路最妙的设计之一就是I2C隧道。主机侧X9HP的I2C Master连到MAX96752MAX96752通过GMSL2链路把I2C读写请求封装进高速帧里传给远端的MAX96755MAX96755再在远端总线上执行相应的I2C操作然后把响应传回。对X9HP来说访问远端的MAX96755就像访问近端的普通I2C设备一样不需要额外处理。但这个隧道不是默认就通的。你需要先给MAX96752设置一个远端设备映射地址告诉它当你收到发往某个特定从机地址的I2C请求时请通过GMSL2链路转给远端。否则MAX96752只会把I2C请求当作给自己的配置命令。4.2 地址分配的规划规划I2C地址是这个步骤的关键。我这次的分配方案设备7bit I2C地址说明MAX96752串行器0x40主机侧直接访问MAX96755解串器0x42通过MAX96752的远端地址映射访问仪表屏触控/控制芯片0x44在远端总线上通过MAX96755访问这里有个常识性坑如果你给两个设备分配的地址在总线上重复了I2C就会地址冲突。开发板上可能还有摄像头解串器、音频Codec等设备选地址之前先用i2cdetect看看总线上已经占了哪些地址尽量避开。4.3 打通远端的实际操作第一步先把串行器的本机地址改掉。默认情况下MAX96752可能占用一个默认地址比如0x808bit地址形式范围多大取决于datasheet。为了后续统一我通过寄存器0x000A将本机地址设置为0x407bit下发之后重新扫描确认0x40这个地址响应了。第二步设置远端映射地址。在MAX96752侧寄存器0x000B用来配置远端设备在本地总线上的映射地址。我写入0x42这样X9HP用0x42访问时MAX96752会把这个请求通过GMSL2链路转发给远端的MAX96755。第三步访问远端设备。此时用i2cdetect扫描应当看到0x42也出现在总线上。读一下0x42的0x0000寄存器确认能读回MAX96755的设备IDi2cget -y -f 0 0x42 0x00 0x00如果能读到值说明I2C隧道已经打通。这一步是整个项目里最重要的分水岭远端访问通了后续所有MAX96755的配置就都可以像配置本地设备一样进行了。4.4 如果I2C隧道打不通怎么办最常见的现象是本地MAX96752能访问但0x42这个地址完全无响应。排查方向主要有三个远端映射地址配置是否正确写入了MAX96752的0x000B寄存器用i2cget读回确认链路是否已经锁定看MAX96755的LOCK引脚如果没锁定隧道当然不通远端MAX96755的默认地址是否被改过如果它自己都失联了映射也就无从谈起还有一个容易漏的点GMSL2的I2C隧道需要链路速率、PHY配置匹配如果两端没有完成握手远端地址就不会出现。这个时候还是要回头检查LOCK信号。总之I2C隧道通了屏幕点亮这件事就成功了一半。5. 核心寄存器配置表逐字节解释完整下发顺序5.1 配置之前先定死几个参数寄存器配置不能拍脑袋。动手之前先确立几个基准参数链路速率3Gbps视频输入格式LVDSOLDI24bit RGBVESA映射4组数据通道1对时钟视频输出格式MIPI DSI4-lane像素时钟98MHz1920x72060fpsSTP传输介质这些参数决定了很多寄存器的值。如果你用的是同轴电缆PHY寄存器里的端接设置会不同如果屏幕是18bit RGB而非24bit视频映射寄存器的值也要改。所以别直接抄表格先对着上述参数清单打勾。5.2 MAX96752串行器配置表下面这张表是调试过程中逐条写进去并验证过的。注意寄存器位定义和保留位必须以你手里芯片对应版本的datasheet为准我这边的记录是针对这颗物料对应Rev的。寄存器偏移地址配置值说明0x00060x87设置GMSL2链路速率为3Gbps开启发送端PLL0x000A0x40本机I2C地址设置为0x407bit0x000B0x42远端解串器映射地址设置为0x427bit0x00030x0CGPIO0/GPIO1配置为输出用于远端PDB和复位控制0x00100x5APHY端接和驱动电流配置匹配STP线缆0x00150x00关闭线缆检测快速中断避免链路建立过程中的误报警0x00A30x1F配置LVDS输入格式24bit RGB、VESA映射、DE同步模式每一项的作用0x0006是链路速率的总开关。MAX96752支持多种GMSL2速率档位串行器和解串器必须设成一致。0x87这个值里除了速率选择位还包含了发送端PLL使能位。设置顺序建议放在第一位因为后面的地址映射和视频格式配置都依赖链路处于可工作状态。0x000A和0x000B上面已经详细说过是本地和远端的地址映射。注意写入后I2C地址立即切换后续访问要用新地址。0x0003的GPIO配置容易被忽略。在显示链路里远端MAX96755的PDB不一定要由X9HP的GPIO直连完全可以通过GMSL2的GPIO隧道功能用MAX96752的GPIO输出控制远端设备电源。如果你打算这么干就在这里把GPIO方向配好。0x0010的PHY配置跟硬件强相关。STP线缆的差分阻抗和同轴不同驱动电流、内部端接电阻都要对应调整。我是先用datasheet里STP推荐值后面根据眼图微调过一版。如果你换了线缆这个寄存器必须重调。0x00A3的LVDS格式配置直接决定串行器怎么解析来自X9HP的LVDS信号。VESA和JEIDA映射的摆放位置不同搞错了会出现颜色错乱、画面像底片一样的现象。我这次用的屏幕是VESA映射如果你的屏是JEIDA这个寄存器的值要改。5.3 MAX96755解串器配置表寄存器偏移地址配置值说明0x00060x87与串行器一致链路速率设为3Gbps开启接收端PLL0x000A0x44本机I2C地址设置为0x447bit0x000B0x40远端串行器映射地址设置为0x407bit0x000D0x06使能MIPI DSI输出设置4-lane模式0x00100x5APHY端接和驱动电流配置与串行器端匹配0x001E0xF0使能链路错误监测CRC错误计数上报0x00A30x1F配置视频输出格式与串行器输入格式对应解释几个关键项0x0006的链路速率必须和MAX96752一致否则无法锁定。有些人在配置串行器3Gbps后却忘了配解串器结果LOCK永远拉不起来。0x000A和0x000B同样是地址映射。这里的0x000B等于告诉MAX96755如果有I2C请求是发给0x40的就通过链路反向转发给近端的MAX96752。这样X9HP也可以反过来访问远端的近端设备形成双向隧道。0x000D是输出接口配置。这是MAX96755工作在显示输出模式的关键。要特别注意如果你手里的芯片批次不支持DSI输出这里可能没有对应选项选型时必须和原厂确认清楚。0x001E的链路错误监测强烈建议打开。它能实时反映链路误码情况偶发花屏时回头看这个寄存器的错误计数值是最直接的证据。5.4 完整下发顺序配置顺序不是随意的核心原则是先固定链路速率再配地址映射最后配视频格式。顺序反了可能导致芯片进入不可预期状态只能断电重来。以下是一份可以直接在X9HP Linux终端执行的脚本假设I2C总线为0# MAX96752 串行器配置 BUS0 SER0x40 # 1. 配置链路速率3Gbps并开启PLL i2cset -y -f $BUS $SER 0x00 0x06 0x87 # 2. 配置本机地址为0x40 i2cset -y -f $BUS $SER 0x00 0x0A 0x40 # 3. 配置远端映射地址为0x42 i2cset -y -f $BUS $SER 0x00 0x0B 0x42 # 4. GPIO配置控制远端PDB用 i2cset -y -f $BUS $SER 0x00 0x03 0x0C # 5. PHY端接配置 i2cset -y -f $BUS $SER 0x00 0x10 0x5A # 6. 关闭线缆检测快速中断 i2cset -y -f $BUS $SER 0x00 0x15 0x00 # 7. LVDS输入格式配置 i2cset -y -f $BUS $SER 0x00 0xA3 0x1F # MAX96755 解串器配置通过远端地址0x42访问 DESER0x42 # 1. 配置链路速率3Gbps并开启PLL i2cset -y -f $BUS $DESER 0x00 0x06 0x87 # 2. 配置本机地址为0x44 i2cset -y -f $BUS $DESER 0x00 0x0A 0x44 # 3. 配置远端串行器映射地址为0x40 i2cset -y -f $BUS $DESER 0x00 0x0B 0x40 # 4. 使能MIPI DSI输出4-lane模式 i2cset -y -f $BUS $DESER 0x00 0x0D 0x06 # 5. PHY端接配置 i2cset -y -f $BUS $DESER 0x00 0x10 0x5A # 6. 使能链路错误监测 i2cset -y -f $BUS $DESER 0x00 0x1E 0xF0 # 7. 视频输出格式配置 i2cset -y -f $BUS $DESER 0x00 0xA3 0x1F注意MAX96755的0x000A地址配置生效后它的本地地址会变成0x44但你在X9HP侧仍然可以继续用0x42这个映射地址访问它因为映射关系是透明的。地址配置后最好重新扫描一次总线确认真实情况。5.5 每写一步都要回头验证我见过很多同行-包括我自己早期-习惯把整张表一次性刷进去发现不亮再回头查。这种做法的效率太低了。正确做法是每写关键寄存器后立即读回确认并且观察LOCK引脚状态。具体来说配置完0x0006后等100ms看MAX96755的LOCK引脚是否拉高。如果没有不要再往下配置先解决链路锁定问题配置完0x000A和0x000B后用i2cdetect确认地址映射符合预期配置完视频格式寄存器后此时如果X9HP已经在输出LVDS信号屏幕理论上应该能亮起来至少能看到背光亮、有画面痕迹每步验证通过再进下一步这是GMSL2调试效率最高的方式。6. 点亮后的图像验证X9HP显示控制器配置与调参6.1 从设备树到modetest让X9HP输出LVDS信号寄存器配完之后屏幕能不能亮最终还是要看X9HP的显示控制器有没有输出正确的LVDS信号。我这边用的是Linux SDK标准DRM/KMS架构所以调整分辨率、时序、测试图案都是在设备树和modetest上完成的。设备树里需要给LVDS显示通道配置一个timing节点。以这块12.3寸1920x72060fps屏幕为例时序参数如下display0 { status okay; display-timings { native-mode timing0; timing0: timing-1920x720 { clock-frequency 98000000; hactive 1920; vactive 720; hfront-porch 88; hsync-len 44; hback-porch 148; vfront-porch 10; vsync-len 5; vback-porch 20; hsync-active 0; vsync-active 0; de-active 1; pixelclk-active 1; }; }; };这些参数从哪里来屏厂提供的规格书里会有一个完整的时序表照着填就行。这里最容易犯的错是把hactive填成屏幕物理分辨率而不是有效显示区域的宽度。1920x720的屏幕水平有效像素就是1920没问题。有些带边框的异形屏有效区域和物理分辨率不同一定要分清楚。6.2 用modetest输出测试图案设备树配好之后重启系统用modetest查看当前显示链路状态modetest -M x9hp输出里会列出所有encoder、crtc、connector。找到连接到LVDS显示通道的connector ID然后设置分辨率并让屏幕输出测试图案modetest -M x9hp -s connector_id:1920x720RG24modetest自带几组测试pattern在设置好分辨率后屏幕上应该能看到彩条或者棋盘格。这一步是验证整条链路的终极测试如果彩条正常显示说明X9HP的LVDS输出、MAX96752串行化、GMSL2传输、MAX96755解串、屏幕显示这五个环节全部打通了。6.3 图像偏移和花屏的调参逻辑点亮不等于完事。最常见的两个后续问题是图像偏移和颜色异常。图像整体往左或往右偏移通常不是寄存器问题而是X9HP侧时序里的hfront-porch/hsync-len/hback-porch参数跟屏幕实际需求不匹配。我的经验是先核对屏厂时序表中的数值再一点点调。向右偏移就减小hfront-porch或增大hback-porch向左偏移则相反每次变化量建议在10个像素以内改完立即看效果。颜色异常比如画面像彩色底片红蓝对调这基本就是LVDS的VESA/JEIDA映射问题。去检查MAX96752的0x00A3寄存器值和屏幕要求的映射方式是否一致。另外24bit和18bit的差异也会导致颜色偏色确认屏幕的色深设置。花屏或水波纹则要往链路物理层和PHY参数上想。打开之前配置的链路错误监测寄存器0x001E看错误计数器是否在持续增长。如果是说明链路有误码排查方向线缆质量、线缆长度、PHY驱动电流、端接是否匹配。适当微调MAX96752侧的PHY驱动电流通过0x0010有可能改善信号质量但治本的方法通常还是换更好的线缆或缩短距离。7. 复盘与避坑这个项目里踩过的三个典型问题7.1 坑一I2C地址冲突导致远端设备凭空消失现象配置完MAX96752的0x000A和0x000B之后i2cdetect总是扫不到0x42但有的时候重启一次又好了很玄学。排查过程我用逻辑分析仪抓了I2C总线的波形发现X9HP访问0x42时MAX96752确实在第9个时钟周期尝试拉低SDA回复ACK但紧接着另一个设备也在总线上响应了。仔细看了扫描结果才反应过来开发板上还有其他GMSL2芯片占用了同一个默认地址范围。在链路握手阶段串行器还在用旧地址而远端映射机制和本地设备地址发生了交叉响应。解决先把总线上所有活动的I2C设备清点一遍把串行器、解串器、其他外设的地址统一规划确保7bit地址绝不重复。然后按照先改本地地址、再配置映射的顺序重新执行地址冲突问题彻底消失。这个坑提醒我地址分配是整个GMSL2配置里最容易被低估的一步。默认地址不是设了就安全必须先扫描、后规划、再写入。7.2 坑二LOCK信号拉 HIGH 了但屏幕就是没画面现象MAX96755的LOCK引脚亮绿I2C远端访问也通了寄存器全部正确但屏幕始终是黑屏背光都没亮。排查过程先排除了寄存器配置问题因为我已经把配置表翻来覆去核对了好几遍。后来发现异常点屏幕的背光控制信号是通过MAX96755的GPIO隧道功能从远端控制的而我在配置里虽然设置了GPIO方向却漏掉了GPIO的初始电平。MAX96755对应屏幕背光使能的GPIO一直输出低电平屏幕的背光电源自然不工作。把GPIO输出电平寄存器改成高电平后背光亮起画面也出来了。这个坑的教训显示链路不只是视频数据这一条路背光控制、电源使能、复位信号这些有没有可能被复用进了GMSL2的GPIO隧道设计之初就要梳理清楚软件配置时必须逐一确认每个GPIO的初始状态。7.3 坑三偶发性花屏且错误计数器缓慢增长现象大部分时间画面正常但每隔几分钟会闪一下噪点。打开链路错误监测后发现CRC错误计数器的值一直在涨说明链路时不时出现误码。排查过程一开始怀疑是PHY寄存器配置不匹配前后调了好几版驱动电流和端接效果不明显。后来用示波器看MAX96752发送端的眼图才发现信号质量本身没问题问题出在STP线缆的屏蔽层接地。调试台上线缆悬空摆放屏蔽层没有和板子的地平面可靠连接形成了天线效应偶发性干扰就进来了。把线缆屏蔽层在两端可靠接地后错误计数彻底停止增长花屏消失。这个坑对量产的启示GMSL2在实验室环境能亮只是第一步线缆的屏蔽接地、走线路径、连接器选型才是决定长期稳定性的关键。如果项目要量产线束的屏蔽工艺必须做专项验证。写在最后一套稳定的配置比十次应急调试更值钱这次点亮仪表屏的经历让我最大的感触是GMSL2这套方案其实并不难但它的入门门槛在于信息密度太高。寄存器数量多、位定义细碎如果没有人帮你把链路逻辑串一遍光靠datasheet硬啃很容易在某个小细节上卡住两三天。把这套配置表沉淀下来之后我又把它封装成了内核里面的I2C初始化函数这样每次上电X9HP都会自动完成整个链路初始化不需要人工干预。同时保留了一个调试用的sysfs接口方便量产现场临时调整寄存器值。后续再遇到类似的GMSL2显示项目基本就是改改分辨率、调调PHY参数的事。最后再分享一个小技巧每次调试GMSL2之前把配置表打印出来贴在调试台上。每写一个寄存器就在纸上打个勾。看着麻烦但当你面对几十个寄存器时这种笨办法反而是最不容易出错的办法。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。