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

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

3天内不再提示

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

精通单片机与嵌入式 来源:玩转单片机与嵌入式 作者:济南行远智能科技 2022-11-24 09:19 次阅读

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

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

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

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

一:I2C的上拉电阻

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

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

在I2C 的电路中,I2C设备(芯片)的 SCL 和 SDA 的内部电路是“开漏”的,这意味着它们可以吸收电流,但无法提供电流。

通俗点讲就是:这种信号可以被设置为低电平,但不能被设置为高电平。

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

d7c20d34-6b83-11ed-8abf-dac502259ad0.png

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

二:上拉电阻最小值计算

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

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

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

所以,我们将I2C设备接到5V系统的电路中时,SDA和SCL的电压高于3.5V时被识别为“高电平”,低于1.5V时被识别为“低电平”。在1.5V~3.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芯片的手册为例:

d7f876b2-6b83-11ed-8abf-dac502259ad0.png

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

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

三:上拉电阻最大值计算

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

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

d822b198-6b83-11ed-8abf-dac502259ad0.png

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

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

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

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

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

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

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

d83e1604-6b83-11ed-8abf-dac502259ad0.png

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

d88d8f5e-6b83-11ed-8abf-dac502259ad0.png

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

d8ab467a-6b83-11ed-8abf-dac502259ad0.png

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

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

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

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

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

四:总结

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

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







审核编辑:刘清

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

    关注

    5

    文章

    346

    浏览量

    30260
  • SDA
    SDA
    +关注

    关注

    0

    文章

    122

    浏览量

    27561
  • SCL
    SCL
    +关注

    关注

    1

    文章

    239

    浏览量

    16884
  • I2C接口
    +关注

    关注

    1

    文章

    119

    浏览量

    24850

原文标题:【硬件】I2C的上拉电阻可不是随便选的……超全讲解I2C的上拉电阻

文章出处:【微信号:精通单片机与嵌入式,微信公众号:精通单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    I2C规范,I2C总线原理

    ................................................................... 3016.1 标准模式I2C 总线器件电阻Rp 和RS 的最大和最小值
    发表于 04-09 18:34

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

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

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

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

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

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

    I2C 总线协议图解

    I2C总线协议图解1I2C总线物理拓扑结构 I2C 总线
    发表于 08-01 16:12

    请问用TMS320C5515的GPIO口模拟I2C总线需要接外部电阻吗?

    请问用TMS320C5515的GPIO口模拟I2C总线需要接外部
    发表于 10-28 09:37

    I2C总线:硬件实现细节

    慢于从高到低的过渡,从而产生经典的I2C“锯齿”波形:这两个示波器捕获显示了具有1kΩ电阻和最小电容(总线上只有两个器件,且PCB走线短
    发表于 09-20 08:37

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

    I2C设计数学:电容和电阻了解I 2 C及其随之而来的一些设计挑战,包括逻辑阈值,影响电容的因
    发表于 09-22 09:31

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

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

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

    开发板I2C连接到RTC(RX8010)芯片,I2C总线上没有接上电阻,LS1012A手册上说
    发表于 01-05 06:28

    单片机I2C时序相关资料推荐

    单片机 I2C 时序介绍硬件I2C 总线是由时钟总线 SCL 和数据
    发表于 01-07 06:19

    I2C总线简析

    硬件I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成,连接到
    发表于 01-07 06:03

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

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

    I2C总线的原理是什么

    SDA,另外一根时钟线SCL,接上电阻总线空闲为高电平。只要有低电平,总线就会被低电平。主
    发表于 01-18 07:36

    I2C总线上电阻设计要点

    I2C电阻最小值确定为什么I2C需要
    发表于 11-29 08:00