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

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

    关注

    86

    文章

    5464

    浏览量

    171612
  • I2C
    I2C
    +关注

    关注

    28

    文章

    1481

    浏览量

    123237

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

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

收藏 人收藏

    评论

    相关推荐

    I2C总线为什么接上电阻

    I2C为什么接上电阻?因为它是开漏输出。 为什么是开漏输出? I2C协议支持多个主设备与多个
    的头像 发表于 11-20 10:07 170次阅读
    <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>

    RISC V的I2C操作

     双向IO,需设置为弱上I2C对应的三态门的OE信号:需要赋值为I2C SDA/SCL的write信号;rtl中的表述如下:主要原因在于:i2c的通信过程中,当总线空闲时,两根线均
    的头像 发表于 11-01 11:06 120次阅读

    I2C协议的基础知识

    本文从I2C协议的概述开始,描述协议的历史、不同速度模式、物理层和数据帧结构,最后介绍I2C混合电压系统中电平兼容性以及上电阻大小计算。
    的头像 发表于 10-22 15:51 280次阅读
    <b class='flag-5'>I2C</b>协议的基础知识

    了解I2C总线

    电子发烧友网站提供《了解I2C总线.pdf》资料免费下载
    发表于 10-08 11:13 1次下载
    了解<b class='flag-5'>I2C</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基本指南.pdf》资料免费下载
    发表于 09-10 09:40 0次下载
    <b class='flag-5'>I2C</b>基本指南

    如何计算上电阻的值

    I2C总线不仅能够确保信号传输的稳定,还能有效地防止多设备操作中的电气冲突。确定适当的上电阻值对于保证I2C通信的可靠性和效率至关重要。虽然在大多数应用中,使用标准的4.7kΩ
    的头像 发表于 09-09 17:20 396次阅读

    I2C总线上电阻的必要性

    数据线加上电阻。这一设计不仅关乎技术的实现,更涉及系统安全和信号传输效率的优化。本文将深入探讨在I2C总线上加上电阻的必要性及其带来的技
    的头像 发表于 09-09 17:16 738次阅读

    I2C通讯为什么要用开漏输出和上电阻

    每个设备都可以将线低(Ground),但不能将线拉高(Vcc)。这种设计使得多个设备可以共享同一条总线,以进行通信。二、I2C接口接外部上电阻的原因
    的头像 发表于 05-16 08:10 5783次阅读
    <b class='flag-5'>I2C</b>通讯为什么要用开漏输出和上<b class='flag-5'>拉</b><b class='flag-5'>电阻</b>?

    请问SMT8S003F3P的I2C模块使用时需要外接上电阻吗?

    SMT8S003F3P的I2C模块使用时需要外接上电阻吗?
    发表于 05-08 06:19

    什么是I2C协议 I2C总线的控制逻辑

    在实际使用过程中,I2C比较容易出现的一个问题就是死锁 ,死锁在I2C中主要表现为:I2C死锁时表现为SCL为高,SDA一直为低。
    发表于 03-12 09:17 946次阅读
    什么是<b class='flag-5'>I2C</b>协议 <b class='flag-5'>I2C</b>总线的控制逻辑

    GD32 MCU硬件I2C不可靠不如软件I2C?来看看红枫派开发版的硬件I2C驱动如何做到稳得一批

    在一个评论中,看到网友对硬件I2C的讨论,硬件I2C Busy找不到原因、软件I2C稳得一批。
    的头像 发表于 02-23 09:37 2685次阅读
    GD32 MCU硬件<b class='flag-5'>I2C</b>不可靠不如软件<b class='flag-5'>I2C</b>?来看看红枫派开发版的硬件<b class='flag-5'>I2C</b>驱动如何做到稳得一批

    关于I2C总线的6个问题分析

    I2C总线上的上电阻范围是多少? 回答: 总线电容是走线部分、连接部分、管脚部分的电容的总和。总线电容限制了上电阻(Rp) 的最大
    发表于 12-25 09:19 1457次阅读

    I2C通信序列的典型特征

     通信从I2C总线空闲开始,时钟和数据线都不被驱动,因此被上电阻拉高。然后,主机(启动通信的器件)启动通信,首先低SDA线,然后低SC
    发表于 11-27 15:32 500次阅读
    <b class='flag-5'>I2C</b>通信序列的典型特征

    I2C地址跳变问题的调试案例

    引言:I2C作为使用最为广泛的通讯接口,调试各类I2C器件,大家应该都很轻车熟路。一般对于外挂电阻配置器件的I2C地址,例如电阻
    的头像 发表于 11-22 10:51 1559次阅读
    <b class='flag-5'>I2C</b>地址跳变问题的调试案例