查看: 3|回复: 0

I2C总线为什么要挂上拉电阻?聊聊开漏输出

[复制链接]
发表于 昨天 23:52 | 显示全部楼层 |阅读模式
🧵两根线就能挂十几个外设,I2C 简单好用,但新手常栽在第一关:总线没接上拉电阻,一测波形全是"平顶",通信直接罢工。
🔍 根子上的原因:开漏输出
I2C 的 SDA、SCL 都是开漏(开集)结构,芯片只能把线"拉到低",自己没有能力输出高电平——高电平必须靠上拉电阻从电源"拽"回来。
  • ✔ 主机和从机都只做下拉,谁都不主动推高电平
  • ✔ 正因如此才能实现"线与"和时钟拉伸,天然避免多主冲突
  • ✔ 没有上拉,总线松手后悬空,读回来永远不是高

🧮 阻值怎么选
  • ❌ 阻值太大(如 100k):上升沿 RC 充电太慢,高速时波形变"三角",通信出错
  • ❌ 阻值太小(如 470Ω):开漏管灌电流过大,低电平有抬高风险
  • ✔ 100kHz 用 4.7k~10k,400kHz 建议 2.2k~4.7k,按总线电容微调

⚡ 两个实用提醒
  • ✔ 长线或挂载外设多时总线电容大,上拉要相应减小
  • 🔒 有些模块自带上拉,多块并联会拉得太强,留一个即可



一句话:开漏是 I2C 的规矩,上拉电阻就是替它"举手"的那只手。

互动一下:你调 I2C 时踩过最离谱的坑是什么?靠示波器还是逻辑分析仪抓出来的?💬
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号
免责声明|Archiver|手机版|小黑屋|半导贴吧

相关侵权、举报、投诉及建议等,请发 E-mail:1152577621@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|渝ICP备2024033348号|渝ICP备2024033348号-1

在本版发帖
关注公众号
QQ客服返回顶部