问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

I2C学习:上拉电阻选取

创作时间:
作者:
@小白创作中心

I2C学习:上拉电阻选取

引用
CSDN
1.
https://m.blog.csdn.net/gonylibechen1/article/details/141400557

在I2C总线设计中,上拉电阻的选取是一个关键环节,它直接影响到系统的通信性能和功耗。本文将从I2C总线的基本原理出发,详细探讨上拉电阻选取不当可能带来的问题,并通过具体的计算公式和实例,给出如何选择合适上拉电阻的完整解决方案。

一.I2C简介

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。I2C总线在使用时,需要接上拉电阻,这是因为I2C接口是开漏输出,如图1所示。


图1 I2C开漏输出

I2C有5种速度模式:标准(100KHz)、快速(400KHz)、快速增强(1MHz)、高速(3.4MHz)以及超快速(5MHz)。不同模式,对上拉电阻阻值的要求不同,另外,上拉电压VCC不同,对上拉电阻阻值的要求也不同。

二.上拉电阻选取不当的后果

如果上拉电阻过小,会带来哪些不利影响呢?

  1. 通信失败

上拉电阻过小,VCC灌入端口的电流Ic变大,导致低电平增大(I2C协议规定,端口输出低电平的最高允许值为0.4V),进而造成通讯失败。

  1. 功耗增加

上拉电阻越小,总线上的电流越大,从而导致功耗增加,对一些电池供电设备不友好,会加快电池电量耗尽。

  1. 保护作用减弱

上拉电阻还具有一定的保护作用,能够防止总线在高电压毛刺下的损坏。如果上拉电阻过小,这种保护作用会减弱,可能会对I2C总线上的设备造成损害。

上拉电阻阻值过大,又会如何?

上拉电阻如果过大,会造成上升沿时间变长。速度越快,要求上升沿时间越短。如果上拉电阻过大,会导致通讯失败。

那么如何选择上拉电阻呢?

三.上拉电阻计算

我们以DS3132为例,DS3132是一款RTC驱动芯片,采用I2C接口进行读写,以下是其I2C相关参数。


图2 DS3132的I2C相关参数

  1. 上拉电阻最小值计算

如图1红线箭头所示,假设SCL是低电平,即MOS管导通,则有R=(VCC-VL)/IL;

其中VL定义为漏极开路或集电极开路时,有3mA下拉电流时的低电平输出电压。IL为该端口的灌电流,即IL=3mA。因此,当VCC不变,VL取最大值时,上拉电阻有最小值。

取VCC为3.3V,VLmax=0.4V,则Rmin=(3.3V-0.4V)/3mA=0.96KΩ。

注意:VLmax取VOL,而不是VIL


图3 I2C官方协议中电平标准

2)上升沿时间计算

通常,I2C电平,低于0.3VCC为低电平,高于0.7VCC为高电平。

Vt1=0.3VCC=VCC(1-e-t1/RC),则t1=0.3566749RC;

Vt2=0.7VCC=VCC(1-e-t2/RC),则t2=1.2039729RC;

上升沿时间tr =t2-t1=0.8473RC,由此得出R= tr /(0.8473C);

3)上拉电阻最大值计算

根据上升沿时间计算公式,得出R= tr /(0.8473*C);

其中tr取I2C挂载的所有设备中tr最小值,C为总的负载电容。

DS3132中要求快速模式下上升沿时间tr=300ns,负载电容为10pF。

  • 假设I2C总线上只挂载了DS3132一个设备,

那么Rmax= tr /(0.8473C)=300ns/(0.847310pF)=35.4KΩ;

  • 如果按各速度模式最大允许的挂载量来计算,如表1所示,列出了各速度模式下的最大允许负载电容。快速模式下,C=200pF。

则Rmax= tr /(0.8473C)=300ns/(0.8473200pF)=1.77KΩ;

速度模式
标准模式
快速模式
高速模式
超快速模式
最大允许总线负载电容
400pF
200pF
100pF
120pF

表1 各速度模式下最大允许负载电容

小结:上拉电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。

四. 参考资料

1.I²C总线上拉电阻阻值如何选择?

2.教你精确计算 I2C 上拉电阻阻值-腾讯云开发者社区-腾讯云

3.https://www.cnblogs.com/duwenqidu/p/11043889.html

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号