跟I2C爱得死去活来的日子

最近在调试200G板卡的时候遇到了一个问题,在同时访问多个I2C的时候,I2C死掉了,这个问题出现也有两个星期了,下面分享一下跟它的爱恨情仇。

一、现象描述
我们现在的电路板搭配的是一款型号为pca9548的复用器,可以分八路去访问每一个I2C​。在分是打开去访问的过程中,其实复用器的打开和切换通道是没有任何问题的,但是在访问外部器件的时候,突然就卡死了,或者在光模块给光的过程中,就卡死了,这里所说的卡死是指通讯受到了干扰​。在受到干扰之后,接收的数据就不正常,因为程序里面有很多​等待。但很奇怪的是,同时访问四个不行,访问三个就行,两个甚至一个都是没有什么问题的​。
在这里插入图片描述

二、排查过程
在接入光的时候,尝试过多种调试手段,单独打开其中的某个通道没有任何问题,​但是发现不了问题,排查主要还是从两个方面入手,软件和硬件​。

1、硬件方面,用万用表和示波器都测量过硬件的指标,电压都没有任何问题​,这个“锅”似乎就要掉到软件头上了​。

2、软件方面的排查,其实对于I2C也好还是外部访问的器件也好,各方面的配置都是一样的,之前也有一个版本是好的,只不过没有这么多外部器件​。所以一开始也以为不是软件的问题​。但是还是例行检查,从时钟、频率、波形再到复用器的打开、关闭和切换,每一点都去排查,加入延时也还是不行​。真的没有办法了吗​?

3、从功能上去排查,但各功能启用和关闭看对整个系统的影响,排查有一点很微妙,首先是开启芯片内部的输出会有影响,然后进一步下去是开启los检测功能会影响,然后又是loss启用禁用输出也会有影响,在接下来又是启用自适应也会有影响,接入光和不接入光也有不一样的现象,这咋整呢,好像所有的一切都影响了​。把所有输入CPU的引脚都断开,排除干扰,也无济于事​。

4、问题的解决最后是把I2C的上拉电阻由1K改为4.7K,最终才解决了这个问题​。(经验可能并不适用,因为之前的板子用的都是1K)

三、整体分析
整体下来,并不是一直都在口这个问题,中间也去做了其他,所以才会搞这么久。但是从现象上去看,其实就是因为去访问完每一个CDR的过程中,对数据的传输造成了影响​。一刚开始觉得是因为电压,但经测量后电压指标一直是正常的,而且都是共用电压​。所以一直也不敢下定论,现在看来,改变了电阻,相应的电流会有些许变化​。这可能才是最终的原因​。

这是网上一些网友的经验分享,
在这里插入图片描述

看来解决事情还是要看本质,当然没有通过现象怎么去解决本质的问题呢​。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值