助力通关硬件开发基础面专刊<22/30>--第五章接口协议、基础元件、可靠性 ---I2C相关计算和存在的问题

5.1.4 I2C上拉电阻

【考点映射】
》》》I2C为什么需要上拉电阻?
》》》I2C的上拉电阻的值如何选取?
》》》I2C挂载设备限制的因素主要有哪些?
【出现频度】⭐⭐⭐
【难度】★★
【参考答案】

IIC需要上拉电阻的原因

由于I2C的SDA和SCL都是双向开漏口,开漏接口的输出不输出电平。
接地的时候输出低电平,输出高电平时为高阻态,所以需要外接上拉电阻,输出高电平的时候,输出上拉电阻的电源电压,
这种结构可以组成线与的逻辑,适用于数字电路的门电路。
因此,I2C的SDA和SCL必须要外接上拉电阻进行使用。
上拉电阻的最小值
I2C接口对灌电流有着限制,电阻过小,可能回导致低电平过大。电流限制如图所示。
快速模式和标准模式的灌电流不大于3mA
快速模式+及以上的模式不大于20mA
因此:
VDD为上拉电阻的电源,VOL为低电平最高允许值0.4V
IOL为灌电流;

上拉电阻的最大值

I2C接口的高电平实现过程:VDD通过Rp对线上的负载电容Cb进行充电,接口的电平从低电平向高电平变化。
充电过程需要时间,如果上拉电阻Rp过大,上升沿过缓,会导致信号没有按时达到高电平,会使传输数据发生错误。
负载电容Cb是走线和引脚等寄生电容的总电容。这个会影响上升时间,限制Rp的最大值。如图所示。
Rp(max)为总电容的函数,同时也与上升时间tr有关。
因此:
0.8473的系数的由来是通过RC曲线得来的,这里我们定义当电压大于0.7VDD时为高电平,小于0.3VDD为电平,因此
then
then

I2C挂载设备限制

I2C挂载设备主要由两个因素决定
  • 1、I2C的地址。假如I2C的地址为7位,则2^7=128,由于0X00地址不用,因此理论上可以挂载127个不同地址的从设备。
  • 2、每个I2C从设备都存在寄生电容,其走线也存在寄生电容,电容回影响I2C的上升时间,总线上的等效电容容量不能超过400pF

5.1.5 I2C存在哪些问题及改善

【考点映射】、
》》》IIC的使用过程中存在哪些问题
》》》怎么改善这些问题?
【出现频度】⭐⭐⭐
【难度】★★
【参考答案】

I2C没有应答的情况

1、总线上没有从设备带有发送的地址,因此没有从设备响应应答。
2、目标从设备无法执行收发操作,因为它正在执行某些实时功能,并且尚未准备好与主设备进行通信。
3、主设备需要将传输结束的信号发送给从机。

I2C死锁

I2C通信有一定概率进入死锁,即SCL为高,SDA一直为低。
原因可能为:当主设备正在和从设备进行I2C通信,如果主设备打算发第9个时钟,此时SCL为高,
而从主设备开始拉低SDA(作为ACK信号),等待主设备SCL变低后,从再释放SDA为高。
如果此时正好主设备复位,主设备SCL还没来得及变低,直接变成高电平,此时从设备还在等待SCL变低,所以一直拉低SDA;
主设备由于复位,发现SDA一直为低,也在等待从释放SDA为高。因此主从设备都进入一个相互等待的死锁状态。

解决死锁的方法

1、用GPIO口进行模拟I2C,则不会死锁(超时检测)
2、尽量选用带复位输入的I2C从器件
3、对I2C所有的设备的供电进行管理,通过MOS管连接到主电源,而MOS管的导通关断由I2C主设备来实现。
4、在I2C从设备增加看门狗的功能。
5、在I2C主设备中增加I2C总线恢复程序,主设备复位后,如果SDA为低,则让SCL产生时钟脉冲,使从设备挂起,进而从死锁中恢复过来。





全部评论

相关推荐

1 1 评论
分享
牛客网
牛客企业服务