前文小编介绍了什么是I2C和I3C及I2C接口和I3C接口有什么区别,本文接着介绍I2C总线需不需要上拉电阻,该上拉电阻应该如何取值。
I2C总线是飞利浦公司开发的一种2线的半双工串行通信协议,通常用于电子设备的短距离通信。I2C总线具有两根总线,分别是时钟线SCL和数据线SDA;SCL来进行通信双方信号同步,SDA用于进行数据交互。I2c总线是多主多从的拓扑结构,支持总线仲裁。
I2C总线是一种我们使用的比较多的总线协议了,在使用时都考虑过是否要加上拉电阻?答案是要加的,但是我们大多数小伙伴都没有仔细想过为什么要加上拉电阻。
我们都知道I2C协议中规定I2C的SCL和SDA都是开漏输出,开漏输出只能输出低电平不能输出高电平,我们想要输出高电平就需要使用加上拉电阻来实现。那为什么I2C协议中为什么要规定SCL和SDA是开漏输出?首先I2C是多主多从结构,一条总线上挂有多个设备;如果是是推挽输出的时候,当两个设备的电平不同时则会造成短路。
开漏输出除了能防止多设备使用时造成短路,还具有线与功能。我们知道I2C支持多主多从,当多个设备同时抢占总线时就需要仲裁机制。I2C总线是通过线与机制来实现总线仲裁的,在I2C协议中定义SDA为高电平时,说明总线空闲主设备可以占用总线,占用后将其拉低开始传传输数据。SDA为低电平期间,标志总线已经被一个主设备占用其余主设备将退出。由于有上拉电阻,默认状态下SDA是高电平表示总线空闲,当总线上的一个设备将SDA拉低后,由于线与逻辑,SDA整条线都为低,其余设备就无法抢占总线了从而达到了仲裁的效果。
上面我们已经说到,由于i2c开漏输出需要输出高电平我们就需要加上拉电阻。那上拉电阻该如何取值呢?通常情况下我们使用4.7kΩ,就能适用于大多应用。如果需要更精确的电阻值,我们可以使用以下电阻值计算公式。
R = (Vcc - Vol) / (Iol * 3)
R 是所需的上拉电阻值(Ω)。
Vcc 是供电电压(伏特,V)。
Vol 是I2C总线上的输出电平电压(通常是0.4V)。
Iol 是I2C总线上的输出电流(通常是3mA)。
通过上面这个公式可以计算出合适的取值。
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的亿佰特官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdebyte.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都亿佰特电子科技有限公司【版权所有】 蜀ICP备13019384号-3