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
    +关注

    关注

    237

    文章

    22449

    浏览量

    645878
  • 上拉电阻
    +关注

    关注

    5

    文章

    345

    浏览量

    30258
  • TTL
    TTL
    +关注

    关注

    6

    文章

    469

    浏览量

    69371
  • 总线
    +关注

    关注

    10

    文章

    2706

    浏览量

    87215
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120816

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

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

收藏 人收藏

    评论

    相关推荐

    I2C规范,I2C总线原理

    ....................................................................... 3317.2 快速模式I2C 总线器件的开关上电路
    发表于 04-09 18:34

    I2C信号一般需要外接上电阻,如果主控内部有电阻,是否可以省略外部

    I2C信号一般需要外接上电阻,如果主控内部有电阻,是否可以省略外部
    发表于 06-07 10:01

    电阻与下拉作用

    的输出接口就不要接东西了。 举例: 图中上下两个电阻分别为下拉电阻电阻,
    发表于 06-28 06:21

    请问DSP GPIO口模拟I2C是否需要加上电阻

    请问用TMS320C5515的GPIO口模拟I2C是否需要加上电阻
    发表于 07-31 07:48

    如何测量电阻的大小?

    ),这会产生大量的热,如果系统采用的是电池供电,那么电池电量很快就会被耗尽。除了避免微控制器悬空I/O管脚的相关问题,使用开漏拓扑电路时,
    发表于 11-30 09:12

    请问stm32f051 i2c需要外接上电阻吗?

    stm32f051的i2c需要外接上电阻吗,直接用内部行不行,还有库
    发表于 03-12 07:14

    I2C通信需要被拉到3.3V应该使用什么尺寸的电阻

    我的I2C通信需要被拉到3.3V,但是我不知道我应该使用什么尺寸的电阻。我读过的其他论坛的帖子,建议2.7k欧姆或4.7K欧姆,但这似乎只是让高可以
    发表于 04-03 15:13

    I2C不迷茫--系列文章讲透I2C

    用于确定电阻器尺寸并确定电路走线最大长度的数学计算。让我们从讨论2
    发表于 09-22 09:31

    【原创分享】你知道I2C为什么要接上吗?

    查找从机。因为I2C 通信IO口输出结构都是配置为漏极开路或集电极开路输出。所以时钟线和数据线必须外部都接上电阻,当一对多输出的时候,很多GPIO口会连接在同一根线上,可能会存在某个GPIO输出高电平
    发表于 09-07 14:22

    开发板I2C总线上为什么没有电阻

    开发板I2C连接到RTC(RX8010)芯片,I2C总线上没有接上电阻,LS1012A手册上说它的I2C是open drain输出的,为什
    发表于 01-05 06:28

    I2C总线简析

    硬件I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成,连接到总线上的所有器件的 SCL 都连到一起,所有 SDA 都连到一起。I2C 总线是开漏引脚并联的结构,因
    发表于 01-07 06:03

    如何去实现一种I2C电阻的设计呢

    I2C电阻 一些PCB的layout,大家往往会看到
    发表于 01-14 07:22

    I2C总线上电阻设计要点

    了VoL具体值的,参见图4。而厂家测试Vol值时也会有个测试条件即IoL和Vcc。所以这两个值确定好后就可以计算I2C电阻的最小值了。
    发表于 11-29 08:00

    请问为什么有时I2C中将SDA和SCL加各加个电阻呢?

    请问为什么有时I2C中将SDA和SCL 加各加个电阻呢?
    发表于 05-08 18:01

    I2C时钟设置计算方法

    I2C时钟设置计算方法I²C时钟设置计算方法
    发表于 10-20 08:17