最近在调试x3c+fh8322+max9295模组,该模组是200w像素,富瀚fh8322控制sensor x3c,并输出mipi信号到串行器max9295,max9295接收信号后,通过同轴电缆的方式输出到后端中控器上的max9296,max9296接收解串后,再送给SOC再处理,最后输出到屏幕上。富瀚isp输出数据信号是mipi 4lanes,uyvy422 8bit ,600mbps。其大概框图如下:
一开始根据isp的输出情况,修改驱动代码进行模组的接入工作,调试时候发现必须设置SerDes的速率大于isp给出的600mbps才能正常加载驱动代码,可是图像接入一会就卡死,而且模组出图屏幕出现分屏闪屏现象,画面卡死后,万用表接电压档,表笔触碰到ISP晶振后,画面恢复正常,多次卡死,重复操作后,画面又不能恢复。
排查相关问题的步骤如下:
1.通过核对和测量原理图上sensor板的晶振时钟和串行板时钟情况,以及poc供电电压情况
a)画面卡死时测试摄像头各路电压,均无异常;
b)画面卡死时测试ISP到Serdes之间的MIPI信号,MIPI信号有波形,且波形未见明显异常(回沟、过冲、振铃等);
2.核对代码中对SerDes模式的设置,数据位宽的设置,数据格式的检查:
美信的max9296有三种模式:分别是MAX9296_MODE_GMSL_1,MAX9296_MODE_GMSL_2_3G,MAX9296_MODE_GMSL_2_6G,SerDes两端的模式必须配置成一样才可以。
3.核对相关sen_pwr_gpio、sen_rst_gpio、hsync_gpio、fsync_gpio等管脚的配置
经过上述的检查和修改后,发现闪屏的问题得到解决,但正常出图运行一段时间后,发现图像会卡死,同时模组会出现发烫的现象。
但同事用度信的工具解模组就不会出现图像卡死和发烫的现象。
于是通过下面的步骤来排查:
1.用富瀚提供的FT4222工具,通过IIC访问ISP,来排查ISP模组此时是否还在正常工作,若正常说明问题出现在后端
2.更换可能影响到poc不稳定的器件来测量改善情况
a)更换ISP晶振匹配电容,及Serdes晶振匹配电容,不能改善该现象
b)更换质量较好的配置同轴线来调试,会稍微有一点点改善,卡死时间稍微延长
c)查阅MAX9295规格书,发现9295的核电压CORE_VDD(1V)是由外部VDD_1V2,经过芯片内部LDO转换而来,且LDO的输出端需接去耦电容,该电容的位置在CAPVDD引脚上,考虑到1V2的电流较大,原理图中该引脚添加的电容为10nF+100nF,估计容值不够,所以降10nF电容改为1uF, 测试没有改善问题;
3.修改驱动代码相关的配置
在打印解串器9296的0x0013寄存器的时候,发现其值在上电preview过程中老在变化,如图所示:
而根据0x0013寄存器的描述,其就是检查链路link的状态,又加上我们正常出图一会后,图像会卡死的现象,验证链路传输上肯定有问题。
max9296_read_reg(ambrg, pinfo->i2c_ctrl.addr.des, 0x001B, ®1b);
brg_info("max9296[%d] I2C address mappingn"
"Link A Decoding:%s!n"
"Link B Decoding:%s!n"
"Idle word:%s!n"
"Line Fault:%s!n"
"Remote side:%s!n",
ambrg->id,
(reg1b & BIT(0)) ? "err" : "pass",
(reg1b & BIT(1)) ? "err" : "pass",
(reg1b & BIT(2)) ? "err" : "pass",
(reg1b & BIT(3)) ? "err" : "pass",
(reg1b & BIT(5)) ? "err" : "pass");
}
以及提供读取0x1b寄存器的状态来判断链路通信有没错误发生。
而之前用度信的板子出图正常时候poc正是单独供电的
于是检查pcb板 max9295的电源供电布线情况,发现在摄像头布局之初,由于PCB面积受限,将MAX9295放在了与同轴连接器异面的一侧,而POC电路到电源部分则放置到了同轴连接器的一侧,相当于,信号从同轴连接器出来之后,走线一分为二,变成了“T”字形;
而且用仿真软件仿真后,发现测量从同轴连接器信号引脚的焊盘到POC电路第一个电感焊盘的走线长度为3.8~3.9mm,线宽0.6mm,假设POC电路器件取值正确,则电感L8对信号阻抗很大,用开路近似。仿真这段开路线对于5GHz信号的影响,发现该段走线与1.3pF对地电容产生类似效果,在5GHz时一半的能量被反射(衰减),在3GHz时能量衰减1.4dB(约28%能量衰减);确实经过一段时间serdes通信信息会中断。
为避免POC电路电感取值不当,造成信号衰减,将L8断开后,用外部稳压源供电12V接到L8下侧的焊盘上(供电与视频信号分开),且去掉TVS1及TVS2两颗TVS二极管(极间电容0.3pF),同时将power段的走线从连接器信号线焊盘出口处直接划断,再进行测试,画面卡死情况消失。
而由于SerDes的均衡机制,串行器在SerDes链路通信质量比较差的情况下,会加大提供发射器功率来输出不同的电平来改善链路的通信,而加大功率后,就会导致模组的温度过于发烫。
note:
其实也可以通过修改软件来降低mipi速率,和采样帧率以及降低分辨率的方式来改善SerDes通信情况,但如此一改的话,就不符合我们实际项目的需要。