来源:IIC上拉电阻,为什么偏偏选4.7K? · 华清远见小美老师讲嵌入式
先记住:4.7 kΩ 是常见的折中选择;实际是否合适,还要看电路的电压、速度、总线电容和芯片的拉低能力。
1. I²C 的两根线在做什么?
I²C 通常用两根线让主控和传感器等芯片通信:
| 线 | 作用 | 可以怎样理解 |
|---|---|---|
| SDA | 传数据 | 传递一个个高、低电平 |
| SCL | 传时钟 | 告诉双方什么时候读取数据 |
这两根线都要能够变成高电平和低电平。普通 I²C 总线空闲时,两根线通常都是高电平。
2. 为什么要接上拉电阻?
可以把上拉电阻想成一根往上拉的弹簧:
- 芯片想把线路变低,就像用手把弹簧往下拉。
- 芯片松手后,上拉电阻把线路带回高电平。
芯片这种“能主动拉低,也能松手”的输出方式叫开漏输出。如果大家都松手而线路没有合适的上拉,线路可能浮空,高电平就没有可靠保障。
此处配图暂缺,参阅原帖。
图左只画了 SDA:电阻接在上拉电源与 SDA 之间。SCL 也需要上拉。图里的 Cb 表示线路、器件引脚、连接器等带来的总电容,不一定是一颗单独焊上去的电容。
3. 为什么不直接选最大的或最小的电阻?
继续用弹簧来理解:电阻小,相当于往上拉得更有力;电阻大,相当于往上拉得更弱。
| 上拉电阻 | 电压回到高电平 | 芯片拉低时 |
|---|---|---|
| 小一些,例如 1 kΩ | 上升比较快 | 电流比较大,芯片可能拉不够低,功耗也更大 |
| 大一些,例如 10 kΩ | 上升比较慢 | 电流比较小,但速度快时可能来不及升高 |
| 4.7 kΩ | 在一些短距离、低速电路中比较折中 | 需要结合实际参数验证 |
线路有电容,就像需要先充一点电,电压才会上升。看上面的右图:相同示例条件下,10 kΩ 的蓝线比 4.7 kΩ 的橙线上升得慢。如果到了接收数据的时刻,电压还没升到对方能识别的高电平,就可能出现通信异常。
4. 4.7 kΩ 到底什么时候合适?
举个例子:假设上拉电压 3.3 V,总线电容 100 pF,用 4.7 kΩ 时,上升时间约 398 ns。这里的电容只是举例,不是我的实际电路测量值。上升时间按电压从 30% 上升到 70% 来计算。
| 工作模式 | 允许的最大上升时间 | 这个例子的结果 |
|---|---|---|
| 标准模式:最高 100 kHz | 1000 ns | 398 ns 满足这一项 |
| 快速模式:最高 400 kHz | 300 ns | 398 ns 不满足这一项 |
所以,同一个 4.7 kΩ,在一个例子里低速可以、高速可能不行。实际总线电容不同,结果也会不同;上升时间合格也不代表其他电气和时序要求全部合格。NXP I²C 规范
5. 做自己的板子,先检查什么?
- 每根线都要上拉。 SDA 和 SCL 分别检查;同一根线上可以有多个上拉电阻,但要把它们并联后的等效阻值一起计算。
- 先看模块是否自带上拉。 两个 4.7 kΩ 接在同一根线、同一上拉电源时,并联后相当于约 2.35 kΩ,拉低时的电流会增大。确认电阻是否已经焊上、接到哪个电源。
- 确认上拉电压。 3.3 V 和 5 V 模块共用总线时,要查每个引脚允许的电压和高电平要求;必要时使用合适的电平转换。
- 检查最弱器件的拉低能力。 看所有参与拉低总线的器件手册:在指定下拉电流下,能否保证足够低的电平。
- 有条件就用示波器测。 分别观察 SDA、SCL 的上升沿和低电平;示波器探头也会增加一些电容。通信频率、走线和模块数量变化后应重新检查。
例如连接 ESP32-S3、PCA9685 或 MPU6050 时,应以实际模块原理图、实物上拉电阻、引脚电压和通信配置为准;本笔记没有测量或核验你的具体电路。
6. 通信不正常时怎么排查?
- 两根线一直低: 检查上拉是否存在、接线或焊接是否短路,以及是否有器件持续拉低线路。
- 低速能用,高速不稳定: 用示波器观察上升沿;总线电容过大或上拉电阻过大是需要检查的可能原因。
- 多接一块模块后出问题: 检查模块自身上拉并联、上拉电压、电源和地址冲突。
这些都是排查方向,不能仅凭现象直接认定原因。
7. 想知道怎么算,再看这里
根据 TI 上拉电阻计算说明:
上升时间 ≈ 0.8473 × 上拉电阻 × 总线电容
R最小 = (上拉电源电压 − VOL最大值) / IOL
R最大 = 允许的最大上升时间 / (0.8473 × 总线电容)
- R最小:电阻太小时,芯片可能拉不够低;
VOL最大值与IOL要使用同一器件手册中对应的保证条件,检查拉低能力最弱的器件。 - R最大:电阻太大时,上升沿可能太慢;由允许的上升时间和总线电容决定。
- 举例:假设上拉为 3.3 V、相关器件都保证在 3 mA 时
VOL ≤ 0.4 V,则R最小 ≈ 0.97 kΩ;再假设总线电容 100 pF、快速模式上升时间上限 300 ns,则R最大 ≈ 3.54 kΩ。这组假设下可先评估 2.2 kΩ,还要考虑误差并测量。这里的 3 mA 是示例保证条件,不是所有芯片的绝对最大电流。
来源与关联索引
- 来源
- 个人知识库
- 原笔记
- 抖音收藏待整理/004-I2C上拉电阻怎么选.md
- 资料性质
- 工程笔记。原文的版本、来源与验证边界继续保留。