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

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

3天内不再提示

详解I2C应用的上拉电阻

电子设计 来源:工程师曾玲 作者:博客园 2019-10-03 16:57 次阅读

在一些PCB的layout中,大家往往会看到在I2C通信接口处,往往会接入一个4.7K的电阻,有的datasheet上面明确有要求,需要接入,有的则没有要求。

I2C接口

对于单片机来讲,有些IO内部的上拉电阻可以使能,这样就省去了外部的上拉电阻,这是对于单片机带有标准I2C通信协议接口,若是只带有模拟I2C协议接口,那么就需要考虑接入上拉电阻问题。下图是摄像头进行配置通信时SCL和SDA需要进行上拉电阻的连接。

在大多数情况下,由于I2C接口采用Open Drain机制,器件本身只能输出低电平,无法主动输出高电平,只能通过外部上拉电阻RP将信号线拉至高电平。因此I2C总线上的上拉电阻是必须的,如图1所示。

图1

因为I2C总线在空闲时必须拉高,只有是高的才能拉成低的,所以这是之所以规定空闲时必须为高的一个原因,要是保持“低”的话,那是不可能成为“多主”总线的。

其实I2C总线接口在工作时只会检测高低电平,他不会在乎有无上拉电阻的问题,所以总线必须满足时序要求。

上拉电阻的大小,会牵扯到两个问题,一个是功耗,一个是速度问题,两者是一个矛盾体。如果你想尽量提高速度,那么就牵涉到总线电容的问题,其实很容易理解,上拉电阻与总线的电容形成了RC,高速时将直接影响通讯!因为总线拉高时有个充电时间以及高电平的阀值,如果还没有充电到足以保证从器件可以识别的高电平的阀值时主器件就以为完成了一个总线动作的话,那么通讯肯定是不能进行的!
如果你想尽可能降低功耗,那么就要尽可能增大电阻以最大可能的减小电路各部分的消耗电流从而实现整体降低功耗!但不可能无限大,否则充电时间你会受不了的!

//========================================================

I2C上拉电阻大小

I2C上拉电阻确定有一个计算公式:

Rmin={Vdd(min)-o.4V}/3mA

Rmax=(T/0.874) *c, ( T=1us 100KHz, T=0.3us 400KHz )

C是Bus capacitance

Rp最大值由总线最大容限(Cbmax)决定,Rp最小值由Vio与上拉驱动电流(最大取3mA)决定;

于是 Rpmin=5V/3mA≈1.7K(@Vio=5V)或者2.8V/3mA≈1K(@Vio=2.8V)

Rpmax取值:标准模式,100Kbps总线的负载最大容限<=400pF;快速模式,400Kbps总线的负载最大容限<=200pF,根据具体使用情况、目前的器件制造工艺、PCB的走线距离等因素以及标准的向下兼容性,设计中以快速模式为基础,即总线负载电容<200pF,也就是传输速度可以上到400Kbps是不成问题的。于是Rpmax可以取的范围是1.8K~7K @ Vio=5V对应50pF~200pF。

根据Rpmin与Rpmax的限制范围,一般取5.1K @ Vio=5V , 负载容限的环境要求也容易达到。在2.8V系统中,console设计选3.3K,portable/handset等低供耗的设计选4.7K牺牲速度换取电池使用时间。

总的来说:电源电压限制了上拉电阻的最小值 ; 负载电容(总线电容)限制了上拉电阻的最大值

补充:在I2c总线可以串连300欧姆电阻RS可以用于防止SDA和SCL线的高电压毛刺。I2C协议还定义了串联在SDA、SCL线上电阻Rs。该电阻的作用是,有效抑制总线上的干扰脉冲进入从设备,提高可靠性。这个电阻的选择一般在100~200ohm左右。当然,这个电阻并不是必须的,在恶劣噪声环境中,可以选用。

//========================================================

I2C上拉电阻讨论

RP不宜过小,一般不低于1KΩ

一般IO 端口的驱动能力在2mA~4mA量级。如果RP阻值过小,VDD灌入端口的电流将较大,这导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V);如果灌入端口的电流过大,还可能损坏端口。故通常上拉电阻应选取不低于1KΩ的电阻(当VDD=3V时,灌入电流不超过3mA)。

RP不宜过大,一般不高于10KΩ

由于端口输出高电平是通过RP实现的,线上电平从低到高变化时,电源通过RP对线上负载电容CL充电,这需要一定的时间,即上升时间。端口信号的上升时间可近似用充电时间常数RPCL乘积表示。

信号线负载电容(对地)由多方面组成,包括器件引脚、PCB信号线、连接器等。如果信号线上挂有多个器件,负载电容也会增大。比如总线规定,对于的400kbps速率应用,信号上升时间应小于300ns;假设线上CL为20PF,可计算出对应的RP值为15KΩ。

如果RC充电时间常数过大,将使得信号上升沿变化缓慢,达不到数据传输的要求。

因此一般应用中选取的都是几KΩ量级的上拉电阻,比如都选取4K7的电阻。

小阻值的RP电阻增大了端口 Sink电流,故在可能的情况下,RP取值应稍大一点,以减少耗电。另外,通常情况下,SDA,SCL两条线上的上拉电阻取值是一致的,并上拉到同一电源上。

//========================================================

I2C应用中上拉电阻电源问题

在部中分应用中,还存在主从设备以及上拉电阻电源不一致的情况,比如Camera模组。在很多设计方案中,Camera模组不工作时,并不是进入Power Down模式,而是直接关闭模组供电VDDS。此时,处理器与模组相互连接的所有信号线都应该进入高阻态,否则就会有电流漏入模组;而对于此时的I2C控制信号线来说,由于上拉电阻的存在,必须关断上拉电阻电源VDDP。如果上拉电阻使用的是系统电源VDDM(VDDP=VDDM),无法关闭,就会有漏电流进入模组;因此这种情况下,应该使用VDDS作为上拉电阻电源(VDDP=VDDS),这样上拉电阻电源与Slave电源即可同时关闭,切断了漏电路径。

另外需要注意的是,在上述应用实例中选择的IO,应该选取上电默认为输入(或高阻)才行。

详解I2C应用的上拉电阻

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

    关注

    4316

    文章

    22989

    浏览量

    396141
  • 上拉电阻
    +关注

    关注

    5

    文章

    359

    浏览量

    30565
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1481

    浏览量

    123247
收藏 人收藏

    评论

    相关推荐

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

    我们知道,在I2C的电路中,在SCL、SDA线与电源之间通常会接一个电阻,这个电阻称之为上电阻。 但什么是上
    发表于 09-08 14:43 7199次阅读

    I2C总线上电阻的计算实例

      引言:I2C通信标准是当今电子系统中最广泛使用的芯片间通信标准。这是一种开放漏极/开放集电极通信标准,意味着可以连接具有不同电压供电轨的集成电路进行通信。需要将上电阻器从I2C线
    发表于 06-02 10:17 1444次阅读
    <b class='flag-5'>I2C</b>总线上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>的计算实例

    I2C为什么要接上电阻

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

    聊聊I2C总线上电阻

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

    I2C总线应用中的几个问题

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

    i2c电阻大小_i2c电阻的作用

    I2C的上电阻可以是1.5K,2.2K,4.7K, 电阻的大小对时序有一定影响,对信号的上升时间和下降时间也有影响,一般接1.5K或2.2K。
    的头像 发表于 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中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的电阻,有的datasheet上面明
    发表于 01-14 14:10 9次下载
    <b class='flag-5'>I2C</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 4071次阅读

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

    I2C总线是微电子通信控制领域中常用的一种总线标准,具备接线少,控制简单,速率高等优点。在I2C电路中常见的上电阻有1k、1.5k、2.2k、4.7k、5.1k、10k等等,但是应该
    的头像 发表于 05-10 16:17 6530次阅读
    <b class='flag-5'>I2C</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 5251次阅读
    <b class='flag-5'>I2C</b>的开漏输出和上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>

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

    相信很多人都清楚,在I2C总线上需要接上电阻?但是您针对对I2C电阻足够了解吗?本文带您详
    的头像 发表于 07-25 10:37 2512次阅读
    上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>在<b class='flag-5'>I2C</b>电路中的作用 <b class='flag-5'>I2C</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>计算

    I2C总线为什么要接上电阻

    I2C为什么要接上电阻?因为它是开漏输出。 为什么是开漏输出? I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。所以总线
    的头像 发表于 11-20 10:07 186次阅读
    <b class='flag-5'>I2C</b>总线为什么要接上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>