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

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

3天内不再提示

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

h1654155971.8456 来源:CSDN技术社区 作者:CSDN技术社区 2021-06-21 10:30 次阅读

I2C为什么要接上拉电阻?因为它是开漏输出。

1

为什么是开漏输出?

I2C协议支持多个主设备与多个从设备在一条总线上,如果不用开漏输出,而用推挽输出,会出现主设备之间短路的情况。

所以总线一般会使用开漏输出。

2

为什么要接上拉电阻?

接上拉电阻是因为I2C通信需要输出高电平的能力。一般开漏输出无法输出高电平,如果在漏极接上拉电阻,则可以进行电平转换。

I2C由两条总线SDA和SCL组成。连接到总线的器件的输出级必须是漏极开路,都通过上拉电阻连接到电源,这样才能够实现“线与”功能。

当总线空闲时,这两条线路都是高电平。

3

上拉电阻阻值怎么确定?

一般IO端口的驱动能力在2mA~4mA量级。

阻值不能过小

功耗问题。如果上拉阻值过小,VDD灌入端口的电流将较大,功耗会很大,导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V)。

故通常上拉电阻应选取不低于1K的电阻(当VDD=3V时,灌入电流不超过3mA)。

阻值不能过大

速度问题。它取决于上拉电阻和线上电容形成的RC延时,RC延时越大,波形越偏离方波趋向于正弦波,数据读写正确的概率就越低,所以上拉电阻不能过大。

I2C总线上的负载电容不能超过400pF。当I2C总线上器件逐渐增多时,总线负载电容也相应增加。当总的负载电容大于400pF时,就不能可靠的工作。这也是I2C的局限性。

建议上拉电阻可选用1.5K,2.2K,4.7K。

4

I2C总线基本操作

根据I2C总线规范,总线空闲时两根线都必须为高。假设主设备A需要启动I2C,他需要在SCL高电平时,将SDA由高电平转换为低电平作为启动信号

主设备A在把SDA拉高后,它需要再检查一下SDA的电平。为什么? 因为线与,如果主设备A拉高SDA时,已经有其他主设备将SDA拉低了,由于 1 & 0 = 0 那么主设备A在检查SDA电平时, 会发现不是高电平,而是低电平。

说明其他主设备抢占总线的时间比它早,主设备A只能放弃占用总线。如果SDA是高电平,说明主设备A可以占用总线,然后主设备A将SDA拉低,开始通信。

因此,模拟I2C一定要将GPIO端口设置为开漏输出并加上拉电阻。

编辑:jq

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

    关注

    85

    文章

    5037

    浏览量

    169626
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1346

    浏览量

    120809
  • SDA
    SDA
    +关注

    关注

    0

    文章

    122

    浏览量

    27548

原文标题:I2C总线为什么要接上拉电阻?

文章出处:【微信号:eda365wx,微信公众号:EDA365电子论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问H743的USB硬件连接不需要外部电阻

    各位好,我在查看USB协议时看到是需要在DP或DM接上电阻来选择速度模式的,且F1系列的评估板也是如此,如图 但当我查看H7的评估板时就没看到外部
    发表于 03-08 06:54

    IO内置电阻阻值是多少?所有IO都有内置电阻么,阻值是否样?

    IO内置电阻阻值是多少?所有IO都有内置电阻
    发表于 02-21 06:17

    当使用外接电阻确定LTM4676/LTM4677的输出电压时,是否还需要通过I2C总线对其进行控制?

    当使用外接电阻确定LTM4676/LTM4677的输出电压时,是否还需要通过I2C总线对其进行控制?谢谢。
    发表于 01-08 08:02

    ADXL313加速度传感器用I²C通信协议与外部连接时,电阻阻值如何确定呢?

    ADXL313加速度传感器用I²C通信协议与外部连接时,电阻阻值如何
    发表于 12-27 08:16

    个简单的电阻问题

    通过上电阻,我们可以输出高电平和低电平,可为什么不把电阻并联进去呢?如图
    发表于 12-15 01:12

    电阻到底是咋完成的啊?

    电阻到底是咋完成的啊
    发表于 10-31 06:52

    电路设计的/下拉电阻阻值应该怎样选?

    电路设计的/下拉电阻阻值应该怎样选?随便弄个,如4.k、10k的成吗?
    发表于 10-28 07:37

    电阻主要与什么有关?是否高波特率必须强

    般IIC和SPI接口建议加上电阻 但有时(比如SPI)不,或使用内部
    发表于 10-28 06:23

    单片机上电阻的作用是什么

    电阻在单片机电路中的作用主要有以下几点: 限制电流的流动:在单片机电路中,电阻的作用之是限制电流的流动。
    发表于 09-05 16:45

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

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

    I2C为什么要接上电阻

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

    GPIO上有电阻吗?

    GPIO上有电阻吗? 如果不是,那么当您释放按钮时,GPIO 基本只是浮动的,可以是任何值。 要么从 GPIO
    发表于 05-22 06:54

    今日说“法”:、下拉电阻那点事

    些 CMOS 输入端接上或下拉电阻是为了预设缺省电位。当你不用这些引脚的时候,这些输入端下拉接 0 或接 1。在I2C
    发表于 05-18 17:30

    电路是怎么的?它是怎样将不确定的信号箝位在高电平的?

    的作用是将不确定的信号通过电阻嵌位在高电平!虽然在电路设计里经常用,但原理上我还有点不明白,假设图1,输出端OUT输出
    发表于 05-15 10:59

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

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