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

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

3天内不再提示

I2C为什么要接上拉电阻?

Q4MP_gh_c472c21 来源:硬件笔记本 作者:硬件笔记本 2021-06-21 16:34 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

4f661fb8-d12c-11eb-9e57-12bb97331649.jpg

为什么是开漏输出?

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

为什么要接上拉电阻?

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

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

上拉电阻阻值怎么确定?

一般而言,IO端口的驱动能力在2mA~4mA量级。 阻值不能过小。

功耗问题。如果上拉阻值过小,VDD灌入端口的电流将较大,功耗会很大,导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值为0.4V)。故通常上拉电阻应选取不低于1K的电阻(当VDD=3V时,灌入电流不超过3mA)。

阻值不能过大。 速度问题。它取决于上拉电阻和线上电容形成的RC延时,RC延时越大,波形越偏离方波趋向于正弦波,数据读写正确的概率就越低,所以上拉电阻不能过大。 I2C总线上的负载电容不能超过400pF。当I2C总线上器件逐渐增多时,总线负载电容也相应增加。当总的负载电容大于400pF时,就不能可靠的工作。这也是I2C的局限性。

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

I2C总线基本操作

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

主设备A在把SDA拉高后,它需要再检查一下SDA的电平。

为什么? 因为线与,如果主设备A拉高SDA时,已经有其他主设备将SDA拉低了,由于 1 & 0 = 0 那么主设备A在检查SDA电平时, 会发现不是高电平,而是低电平。说明其他主设备抢占总线的时间比它早,主设备A只能放弃占用总线。如果SDA是高电平,说明主设备A可以占用总线,然后主设备A将SDA拉低,开始通信。

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

责任编辑:lq6

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

    关注

    88

    文章

    5811

    浏览量

    179906
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1562

    浏览量

    131709

原文标题:嵌入式开发之IIC通讯为什么要加上拉电阻?

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    I2C总线-通信线缆长度的影响及改进措施

    例关系的: 通信线缆越长,上电阻越小。而通信线缆越短,上电阻越大。比如: ① 通信线
    发表于 01-21 06:03

    I2C 为什么只要两根线就能搞定通信?

    到目前为止,我们已经讨论了SPI通信和UART通信的基础知识,现在让我们讨论本系列的最后一个协议,即集成电路间协议(I2C)。如果您曾经构建过使用OLED显示器、气压传感器或陀螺仪/加速度计模块
    的头像 发表于 01-04 09:14 2023次阅读
    <b class='flag-5'>I2C</b> 为什么只要两根线就能搞定通信?

    基于FPGA的I2C控制模块设计

    I2C_WRITE_WDATA.v模块实现I2C写时序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的头像 发表于 12-26 09:48 5881次阅读
    基于FPGA的<b class='flag-5'>I2C</b>控制模块设计

    AS32X601的I2C模块操作EEPROM详解

    国科安芯推出的AS32X601系列MCU芯片内置的I2C模块提供了符合工业标准的两线串行制接口,可用于MCU和外部I2C设备的通讯。I2C总线使用两条串行线:串行数据线SDA和串行时钟线SCL
    的头像 发表于 12-21 21:39 1557次阅读
    AS32X601的<b class='flag-5'>I2C</b>模块操作EEPROM详解

    I2C死锁的问题

    产生8个时钟脉冲,然后低SCL信号为低电平,在这个时候,从设备输出应答信号,将SDA信号为低电平。 如果这个时候主设备异常复位,SCL就会被释放为高电平。此时,如果从设备没有复位,就会继续I2C
    发表于 12-04 06:00

    基于CW32 MCU的I2C接口优化稳定读写EEPROM关键技术

    过低的频率导致通信错误。 上电阻的选择与配置:探讨I2C总线上电阻的作用,如何根据线缆长度、负载电容等实际情况,选择合适的上
    发表于 12-03 07:29

    I2C的缺点介绍

    距离限制: I2C 主要设计用于单个电路板内或位置较近的组件之间的短距离通信。总线的电容和上电阻电阻限制了可实现的最大通信距离。随着 SDA 和 SCL 线长度的增加,总电容也会
    发表于 11-27 06:10

    SPI、I2C、UART三种串行总线的区别与对比

    、SPI更为强大,但是技术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用上电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片之间的通信,较少用于远距离通信。SPI实现简单
    发表于 11-20 07:19

    深入剖析I2C协议

    I2C是由Philips开发的简单的双向两线总线,在深入浅出理解SPI协议中,我们区分了单工,半双工,全双工协议数据流向的区别,根据特征,I2C协议属于半双工协议(即同一时刻,数据单向流动)。此外
    的头像 发表于 08-21 15:10 3869次阅读
    深入剖析<b class='flag-5'>I2C</b>协议

    I2C总线通信,为什么进行电气隔离?

    I2C总线采用双向二线制,支持多主机多从机通信,具备高可靠性、抗干扰能力强,广泛应用于嵌入式系统中。
    的头像 发表于 08-11 11:04 2655次阅读
    <b class='flag-5'>I2C</b>总线通信,为什么<b class='flag-5'>要</b>进行电气隔离?

    请问I2C和驱动能力怎么修改?

    我想关闭芯片内部I2C的上并调整引脚的驱动能力,软件上怎么操作呢?
    发表于 08-11 06:54

    第十八章 I2C通信测试

    本章介绍了I2C协议,其物理层用SDA和SCL双线,支持多设备:协议层含起始/停止信号、应答机制等。还讲解W55MH32的I2C外设及初始化,并进行了通信测试代码的分析。
    的头像 发表于 06-19 17:07 1456次阅读
    第十八章 <b class='flag-5'>I2C</b>通信测试

    【技术说明】数字输出压力传感器的I2C通信

    介绍I2C总线是一个简单的,串行8位面向计算机总线有效的I2C(集成电路间)控制。It提供了良好的支持不同电路板距离之间的通信,例如与各种低速外围设备接口的微控制器。连接到总线的每个设备都可通过唯一
    的头像 发表于 06-19 11:02 1948次阅读
    【技术说明】数字输出压力传感器的<b class='flag-5'>I2C</b>通信

    FX2 I2C代码挂起的原因?

    我编写了一段简单的代码,通过 I2C 访问 esp8266。 bilnk led 和 i2c_write ; LOOP 当 SDL 没有连接到 ESP8266 时,循环重复(LED 闪烁,我可以在
    发表于 05-26 08:09

    简单了解I2C接口

    在电子电路的复杂世界里,各种电路模块设备需要相互通信才能协同工作 ,I2C接口就像是电路模块设备间的沟通桥梁,今天就带大家深入了解它。
    的头像 发表于 05-08 14:15 2793次阅读
    简单了解<b class='flag-5'>I2C</b>接口