0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

上拉电阻在I2C电路中的作用 I2C上拉电阻的计算方法

硬件攻城狮 来源:硬件攻城狮 2023-07-25 10:37 次阅读

相信很多人都清楚,在I2C总线上需要接上拉电阻?但是您针对对I2C上拉电阻足够了解吗?本文带您详细掌握一下I2C的上拉电阻。

目录如下:

上拉电阻的含义、上拉电阻在 I2C 电路中的作用

根据VOL和IOL计算I2C上拉电阻的最小值

根据总线电容计算上拉电阻的最大值

01I2C的上拉电阻

我们知道,在I2C的电路中,在SCL、SDA线与电源之间通常会接一个电阻,这个电阻称之为上拉电阻。

但什么是上拉电阻?

上拉电阻主要用于为信号线或GPIO引脚提供默认状态。通常选择几K或几十K阻值的电阻。阻值较大的电阻确保不会通过电阻不断地将过多的电流引入到信号线上(5V Vdd / 10KΩ = 0.5mA 电流)。在常见的MCU中有大约几十K的电阻可以通过代码启用的上拉电阻将 GPIO 引脚预设为逻辑高电平状态。

在I2C 的电路中,I2C设备(芯片)的 SCL 和 SDA 的内部电路是“开漏”的,这意味着它们可以吸收电流,但无法提供电流。通俗点讲就是:这种信号可以被设置为低电平,但不能被设置为高电平。

所以我们在电路中以逻辑高电压的形式给这些信号提供电流,在常见的芯片中,电压通常为5V或3.3V。为了提供这个高电压,你需要分别在在 5V 和 SCL 、SDA 总线之间连接了一个上拉电阻。如下图所示:

wKgaomS_NZqAIJ6mAACF8bH9ZTQ655.png

但是,I2C上拉电阻的阻值和封装可不是随便选择的。也是有理论依据的。

02上拉电阻最小值计算

在数字TTL电路中,通常情况下定义的高低电平电压值如下:

“低电平的电压”VL= 0.3 x Vdd

“高电平的电压”VH=0.7 x Vdd

所以,我们将I2C设备接到5V系统的电路中时,SDA和SCL的电压高于3.5V时被识别为“高电平”,低于1.5V时被识别为“低电平”。在1.5V3.5V之间的电平,我们不能确定为高or

I2C设备内是有mosfet的,我们需要保证电压值高于一定值才能使mosfet导通,但电压值也不能高太多,否则容易造成mosfet损坏。

此处以LED举例:假设LED的压降是1.7V,需要高于1.7V的电压才能使LED导通,但是电流必须在LED的限定值以内。如压降为1.7V、额定电流为30mA的LED,想要LED点亮的理想情况是:(5V-1.7V)/30mA=110欧。所以针对该LED选用的限流电阻为110欧。

对于I2C引脚,在芯片手册中可以清楚的查到VOl(输出低电压)和IOL(输出低电流)。以AT24C128 EEPROM芯片的手册为例:

wKgZomS_NZqAXMFrAAFM53wy7BA615.png

按照上述参数计算:(5-0.4)V / 2.1mA=2.2K。

我们计算出的这个值,就是I2C总线上拉电阻的最小值。我们如果选用更小的电阻值,就可能对I2C设备造成损坏。

03上拉电阻最大值计算

电容是无处不在的,I2C总线也不例外。I2C电路中SDA和SCL引脚也会存在某种形式的引脚电容。

同样,查看AT24C128的数据手册可以查到对应的引脚电容。如下图所示。

wKgaomS_NZqAdAIeAAE9BD0bZwI388.png

包括引脚电容、PCB电容等所有的叠加,我们可以理解成有一堆的小电容连到I2C总线上,现在暂且将这些电容的累加定义为Cbus。

我们之所以关心Cbus,是因为在信号变化的过程中,其实是对Cbus进行充电和放电,这样会影响到信号的延时时间。

这些电容是如何充电的呢?就是通过VCC和上拉电阻给电容充电。

从AT24C128手册中可发现,SDA的引脚电容为8pF,SCL的引脚电容为6pF。假设PCB的电容平均值为10pF。则,在SDA总线的电容总计18pF;在SCL总线的电容总计为16pF。

关于PCB电容怎么计算,本公众号将以专门的文章进行讲解,此处不再讲述。欢迎持续关注本公众号。

我们现在关注的是上拉电阻的阻值最大值应该是多少才能保证SDA和SCL在要求的时间内进行信号高低电平的切换。引入总线电容就是为了确定上拉电阻最大值。

在AT24C128的收据手册中,也可以查询到上升时间tR的值,如下图。

wKgaomS_NZqAc_zfAAPIbwTW-e4438.png

tR就是I2C总线最大允许的上升时间。除了芯片手册有规定tR值,I2C总线也规定了tR的值如下:

wKgZomS_NZqAbQ6JAAFa8RdPVp0102.png

下面引入上拉电阻计算的重量级公式:

wKgZomS_NZqAMzb1AAAhKwhW4eU724.png

到目前为止,我们已经确定了tR和Cb的值,就可以计算出上拉电阻的最大值。以400KHz的快速模式I2C为例计算:

Rp sda max=300ns/(0.8473x18pf)≈ 18K

Rp scl max=300ns/(0.8473x16pf)≈ 18K

所以,18K就是我们确定的I2C总线上拉电阻的最大值。

结合2.2K的最小值,I2C总线的上拉电阻只能选择:2.2K~18K之间的阻值,一般选择4.7K或10K。

04总结

上面的计算我们是只计算了I2C总线只有AT24C128的情况,只需要选用2.2K~18K之间的电阻即可。

当I2C总线挂接的设备增加、PCB布线不同等多个方面都会影响到上拉电阻阻值的选择。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    242

    文章

    23252

    浏览量

    660545
  • 上拉电阻
    +关注

    关注

    5

    文章

    359

    浏览量

    30606
  • TTL
    TTL
    +关注

    关注

    7

    文章

    503

    浏览量

    70231
  • 总线
    +关注

    关注

    10

    文章

    2878

    浏览量

    88051
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1484

    浏览量

    123616

原文标题:I2C的上拉电阻别乱选!超全讲解I2C的上拉电阻!

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电阻的含义、电阻I2C电路作用

    我们知道,I2C电路SCL、SDA线与电源之间通常会接一个电阻,这个
    发表于 09-08 14:43 7316次阅读

    I2C总线上电阻计算实例

    。当开路漏极接口未将线路驱动为低电平时,电阻器将线路拉高。电阻器的值是
    发表于 06-02 10:17 1539次阅读
    <b class='flag-5'>I2C</b>总线上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>的<b class='flag-5'>计算</b>实例

    I2C为什么要接上电阻

    I2C为什么要接上电阻?因为它是开漏输出。
    发表于 07-08 16:14 2717次阅读
    <b class='flag-5'>I2C</b>为什么要接上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>?

    聊聊I2C总线上电阻

    I2C总线上电阻的选择以及作用,以及计算方法
    的头像 发表于 07-14 12:49 4349次阅读
    聊聊<b class='flag-5'>I2C</b>总线上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>

    I2C总线应用的几个问题

    I2C总线应用的几个问题:i2c电阻阻值的确定,PCB布局布线与抗干扰设计,软件模拟
    发表于 09-13 14:27 51次下载
    <b class='flag-5'>I2C</b>总线应用<b class='flag-5'>中</b>的几个问题

    tpa2051d3I2C电阻的选择

    系统。它作为一个I2C奴隶,并采用两个信号:SDA(数据)和SCL(时钟)。I2C引脚功能开漏架构;因此,外部电阻必须用于SDA和SCL
    发表于 05-23 16:13 8次下载
    tpa2051d3<b class='flag-5'>在</b><b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>电阻</b>的选择

    i2c电阻大小_i2c电阻作用

    I2C电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2
    的头像 发表于 11-24 14:27 2.7w次阅读

    I2C总线一定要接上电阻电阻阻值怎么确定?

    I2C为什么要接上电阻?因为它是开漏输出。 1 为什么是开漏输出? I2C协议支持多个主设备与多个从设备一条总线上,如果不用开漏输出,而
    的头像 发表于 06-21 10:30 1.5w次阅读

    I2C为什么要接上电阻

    I2C为什么要接上电阻?因为它是开漏输出!
    的头像 发表于 06-21 16:34 1.3w次阅读
    <b class='flag-5'>I2C</b>为什么要接上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>?

    I2C电阻设计

    I2C电阻 一些PCB的layout,大家往往会看到
    发表于 01-14 14:10 10次下载
    <b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>电阻</b>设计

    I2C电阻计算公式

    I2C一般为开漏结构,需要在外部加上电阻,常见的阻值有1k、1.5k、2.2k、4.7k、5.1k、10k等。
    的头像 发表于 09-02 09:49 4165次阅读

    I2C总线上需要接上电阻?您对I2C电阻足够了解吗

    我们知道,I2C电路SCL、SDA线与电源之间通常会接一个电阻,这个
    的头像 发表于 11-24 09:19 9195次阅读

    I2C电阻如何选择合适的阻值?

    I2C总线是微电子通信控制领域中常用的一种总线标准,具备接线少,控制简单,速率高等优点。I2C电路中常见的
    的头像 发表于 05-10 16:17 6916次阅读
    <b class='flag-5'>I2C</b><b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>电阻</b>如何选择合适的阻值?

    I2C的开漏输出和电阻

    信息和接收信息无法同时进行,I2C工作时的传输速率标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。I2C总线采用漏极开路的设计,且SDA和SCL通过上
    的头像 发表于 07-02 16:39 5457次阅读
    <b class='flag-5'>I2C</b>的开漏输出和<b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>电阻</b>

    I2C总线上电阻计算

    电子发烧友网站提供《I2C总线上电阻计算.pdf》资料免费下载
    发表于 10-08 09:54 1次下载
    <b class='flag-5'>I2C</b>总线上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b><b class='flag-5'>计算</b>