全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

I2C 总线为什么要接上拉电阻?

[复制链接]
1181 0

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
I2C由一条时钟线和一条数据线组成,我们先看两张图。

图片1.png 图片2.png
I2C的波形

I2C协议基本形式
I2C的输入输出结构采用的是开漏的结构 。 开漏结构 不能够自主得到高电平,所以需要通过外部上拉电阻 来的实现 I2C 通信过程中的高电平。上拉电阻 的大小取决于 I2C 不同模式时的灌电流大小。这种结构作为逻辑输出时候,必须要有外部上拉,一般是通过电阻加到VCC电源,平时保持高电平,当输入低电平时也可被拉低,也就是说此时的开漏输出的可以作为外部的输入I/O口。
因为多个设备共用一条I2C总线,如果 I2C 使用的是推挽输出,假设在某个时间,A设备和B设备刚好在不同的电平输出,则会引起短路。

图片3.png
下图是I2C 获得高低电平的情景。
图片4.png

如果我们不接上拉电阻,设备的I2C SCL SDA引脚是浮空状态,浮空的意思是没有确定的电平,可能是高,也可能是低。而根据I2C的协议,在总线空闲期间,SDA和SCL都是高电平,当SDA出现下降沿时信号传输开始,如果没有确定的电平,一旦有外部的干扰,则可能会误启动I2C。
上拉电阻取值
上面我们已经说到,由于I2C开漏输出需要输出高电平我们就需要加上拉电阻。那上拉电阻该如何取值呢?通常情况下我们使用4.7kΩ,就能适用于大多数应用场景。如果需要更精确的电阻值,我们可以使用以下公式:
Rmin = (Vcc - Vol) / Iol
Rmax=Tr / (0.8473 * Cb)
R 是所需的上拉电阻值(Ω);
Vcc 是供电电压(伏特,V);
Vol 是I2C总线上的输出电平电压(通常是0.4V);
Iol 是I2C总线上的输出电流(通常是3mA);
Tr是上升沿时间,Cb是总线电容,0.8473是标准上升沿时间;
通过上面这个公式可以计算出合适的取值。由上可知,供电电压决定上拉电阻的最小值,总线负载电容决定上拉电阻的最大值。
常见的上拉电阻阻值有1k、1.5k、2.2k、4.7k、5.1k、10k等。

举报

回复
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表