分享

I2C通信一般性问题

 新用户86925817 2020-03-10

I2C通信一般性问题

I2C 总线比较简单,可能的问题主要出在时序上,一般设计者即使忽略也不太会有麻烦,但是有几个指标一定要认真考虑:

1.总线驱动能力。上拉电阻和负载电容决定了总线在某一速率下的稳定性。当输出为高时,电流通过上拉电阻对负载电容充电。上拉越大,电容越大,所需要的时间就越长,如果超过了通信周期的10%,那么这个上升沿就太缓了,相应的建立时间会受到影响,I2C规范的最大负载电容是400pF,快速模式下是100pF。如果输出为低,电流通过上拉电阻被I2C master器件吸取,(注意根据I2C规范,最小只有3毫安的吸取电流)那么这个吸取电流在上拉电阻上的压降就决定了输出低电平能达到的范围,如果不能达到0.3VDD以下,就会有误采样。有人说加大上拉电阻是不妥当的,要具体分析吸取电流、负载电容、上拉电平和通信速率才能决定(普通模式和快速模式是不一样的)。

2.总线空闲时间(bus free time)。它的定义是从上一次通信的停止到下一次通信的开始的间隔时间。对CPU来说,它往往是I2Cmaster器件,由于运行速度很快,这个指标如果不注意的话就会达不到,导致I2C总线不响应。另外要注意的是CPU内部的I2C停止时刻标志位置位和硬件总线上的I2C停止标志(clock为高时数据从低到高的跳变)时刻往往是不一致的。有的芯片有15-20个微秒的差别,所以要用示波器量出来为准。

3.总线保持时间。I2C的总线建立和保持与有的时序定义不一样。建立时间是指从数据跳变沿到时钟上升沿的间隔;而保持时间是指从时钟下降沿到数据下一个跳变沿的间隔。通常建立时间都能保证。

【问题1】完全不能进行读写:

(1) 通信协议不正确:有很多的I2C设备,并不支持所有的I2C协议,同时也不是一个比较标准的I2C设备;软件的通信时序要详细看一下设备资料。

(2) I2C设备地址不正确:有很多的I2C设备的地址是可以通过硬件设定的;也有器件资料提供的数据是错误的。

3I2C通信线上没有加上拉电阻:由于I2C的从设备的SDASCLPIN是输出开漏的,所以必须加上拉电阻,同时根据I2C设备的数量上拉电阻的大小也会不同。从1K~10K,具体的见连接

4I2C设备损坏:有时我们会经常遇到问题时总是认为我们自己在软件上是不是有问题,是不是电路上没有焊接好,实际上都不是,而是器件是坏的。

【问题2】读或写失败,不能正确的读写某个地址的数据:

1)电路干扰:在I2C设备的电源入口处没有加滤波电路,一般入口处加10nF 0.1uF电容;SDASCL线上干扰,没有滤波处理,线上串一几十ohm电阻,对地加几十pF电容;千万别小看这几颗小小的电容!

2)通信时序:读写时速度过快。

【解决办法】

1)如果完全不能读写,需要详细看设备资料,及电路检查。

2)通信不稳定或者有部分读写错误:

1.调整SCL/SDA上拉电阻(阻值越小,上升时间越短,受干扰几率越低,但根据I2C协议要求,上拉电阻不能取得太小,需大于(VDD-Volmax)/3mA=(3.3V-0.4V)/3mA=0.97K),可有效解决I2C稳定性问题。

2.电路板焊接不够良好、电源不稳、电路复杂、地线回路不好,等都会引起信号有毛刺,需要对电源滤波,和对SDA/SCL串接几十到100多欧的电阻并上个几十pF的电容进行滤波处理。

3.降低通信速率有时也能有效提高通信稳定性。

4.通过软件编程进行信号消抖处理,用高速时钟对信号进行多次采样以准确判断SCL/SDA的高低电平,由此避开信号的亚稳态阶段。

5. 为了防止通信过程中的测量,静电,反复断电等因素对管脚的损害,一定要加TVS管,在测量中我已经烧过两次管脚了,这给我极大的教训。

【问题2I2cEEPROM的问题

下面是我在读一些EEPROM时发现有些EEPROM能进行读写,有些能单读却怎么也无法写入。原因如下:

1.     在读写EEPROM时,发现的一定要注意EEPROM的容量,这将决定器件的随机字地址。

2.     当EEPROM的地址超过32k时,随机字地址超过11位(8位的偏移地址+器件地址保留3位页地址),此时器件的偏移地址需要16bit来保证寻址。故编程需要考虑到此类EEPROM的读写问题。

【总结】

I2C通信是一种低速信号通信,即便面对低速信号,我们也不能掉以轻心,信号通信的干扰问题,以及其缓慢的上升沿或下降沿(满足其规范要求)造成其处于亚稳态的时间过长问题,而在这段不定态的时间待得越长就越危险,其受到干扰的几率就越大!

另外当你去解决问题时要注意会不会引来新的问题从而造成更大的麻烦,所以要综合考量,更要多去尝试,实践才是最重要的。

最后:以上是我这段时间对I2c的一些问题的看法及总结,有些是我遇到的,有些是网上看到补充的,希望大家多提意见及补充,让我能够更好的成长,谢谢!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多