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

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

3天内不再提示

I2C的开漏输出和上拉电阻

CHANBAEK 来源:四梯 作者:四梯 2023-07-02 16:39 次阅读

I2C的开漏输出和上拉电阻

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线,它采用同步方式串行接收或发送信息,I2C总线是由串行数据线SDA和串行时钟线SCL组成。因为I2C只有一根数据线,故发送信息和接收信息无法同时进行,I2C工作时的传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。I2C总线采用漏极开路的设计,且SDA和SCL通过上拉电阻连接V CC 。今天就和大家来探讨一下I2C为什么需要用开漏输出和上拉电阻。

图片

首先,让我们简单地来回顾一下上周所介绍的推挽输出和开漏输出。

开漏输出:如果输出控制电路接收到低电平(0)时,此时地N-MOS导通,不管有没有接上拉电阻,I/O端口处的电平都会被N-MOS管拉低。但是当输出控制电路接收到高电平(1)时,N-MOS管截止,有上拉电阻存在时,输出高电平,没有上拉电阻存在时,输出电路开路,不能输出高电平。简而言之,开漏输出只有接上上拉电阻时,才有输出高电平的能力。

推挽输出:因为增加了一个P-MOS管,当CPU输出逻辑“1 ”时,P-MOS管导通,输出高电平。当CPU输出逻辑“0 ”时,P-MOS管截止,输出低电平。

为什么I2C需要用开漏输出?

因为I2C协议是支持多个主设备与多个从设备在一条总线上的,此时就会有多个GPIO口连接在同一条总线上,就势必会出现输出高、低电平不统一的情况,如果采用推挽输出时,就可能会出现某个GPIO的Vcc和GND连接在一起造成短路的情况,当你采用开漏输出时,因为有上拉电阻的存在就可以避免这一问题的出现。

为什么要上拉电阻?

①:因为开漏输出不接上拉电阻时无法输出高电平。而I2C通信需要有输出高电平的能力,故在漏极接上上拉电阻

②:I2C总线由SDA(串行数据接线)和SCL(串行时钟线)及上拉电阻组成,这样能够实现“线与”功能,不仅简化了电路,而且依照“线与”逻辑,可以实现多个主设备抢占总线时的仲裁,因为如果一个设备需要启动I2C时,它需要在SCL为高电平时,将SDA由高电平拉低作为启动信号,SDA拉高后,设备会对SDA的电平进行检查,如果此时SDA为低电平,就表示总线已经被占用,如果SDA为高电平,就说明总线可以被占用。

上拉电阻阻值怎么确定?

一般I\\0端口的驱动能力在2mA-4mA量级。

阻值不能过小:

当上拉电阻阻值过小时会导致从VCC输入的电路较大,进而使得MOS管不完全导通(由饱和状态变成放大状态),因为I2C协议规定,端口输出低电平的最高允许值为0.4V,故这样就会使得端口输出的低电平值增大。所以上拉电阻选取时不能低于1KΩ。

阻值不能过大:

因为上拉电阻和总线电容之间形成了RC,如果电阻过大会导致总线拉高的时间拉长以及输出阻抗的增大,当输出阻抗增大到可以与负载阻抗抗衡时,输出的高电平会因为分压而减少。

综上所述,建议上拉电阻选择使用1.5K、2.2K、4.7K。

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

    关注

    5

    文章

    359

    浏览量

    30565
  • 总线
    +关注

    关注

    10

    文章

    2864

    浏览量

    87973
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1481

    浏览量

    123238
  • SDA
    SDA
    +关注

    关注

    0

    文章

    124

    浏览量

    28111
  • 开漏输出
    +关注

    关注

    0

    文章

    34

    浏览量

    7310
收藏 人收藏

    评论

    相关推荐

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

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

    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 2653次阅读
    <b class='flag-5'>I2C</b>为什么要接上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>?

    IIC为什么用输出电阻

    IIC通信协议推挽输出输出输出的作用IIC
    发表于 02-26 06:48

    i2c电阻大小_i2c电阻的作用

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

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

    I2C为什么要接上电阻?因为它是输出。 1 为什么是
    的头像 发表于 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>?

    经过验证的GPIO模拟I2C时序代码

    使用STM32的GPIO模拟I2C总线时序,GPIO设置为模式,SDA和SCK外部必须使用上电阻,一般是4.7K。
    发表于 12-28 19:36 13次下载
    经过验证的GPIO模拟<b class='flag-5'>I2C</b>时序代码

    I2C电阻设计

    I2C电阻 在一些PCB的layout中,大家往往会看到在I2C通信的接口处,往往会接入一个4.7K的
    发表于 01-14 14:10 9次下载
    <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 4070次阅读

    I2C为什么要接上电阻电阻阻值怎么确定?

    I2C协议支持多个主设备与多个从设备在一条总线上,如果不用输出,而用推挽输出,会出现主设备之间短路的情况。所以总线一般会使用
    的头像 发表于 02-24 09:18 1869次阅读

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

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

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

    相信很多人都清楚,在I2C总线上需要接上电阻?但是您针对对I2C
    的头像 发表于 07-25 10:37 2510次阅读
    <b class='flag-5'>上</b><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><b class='flag-5'>电阻</b>的计算方法

    I2C通讯为什么要用输出电阻

    一、I2C总线简介I2C(Inter-IntegratedCircuit)总线是一种双向串行通信总线,由两根线组成:SDA(数据线)和SCL(时钟线)。这两根线都是双向的,并且是
    的头像 发表于 05-16 08:10 5792次阅读
    <b class='flag-5'>I2C</b>通讯为什么要用<b class='flag-5'>开</b><b class='flag-5'>漏</b><b class='flag-5'>输出</b>和<b class='flag-5'>上</b><b class='flag-5'>拉</b><b class='flag-5'>电阻</b>?

    I2C总线为什么要接上电阻

    I2C为什么要接上电阻?因为它是输出。 为什么是
    的头像 发表于 11-20 10:07 175次阅读
    <b class='flag-5'>I2C</b>总线为什么要接上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>