欢迎光临
我们一直在努力

I2C 上拉电阻选 10k 还是 4.7k?实测波形告诉你答案(附速查表)

摘要:I2C 通讯失败,示波器一看 SDA/SCL 上升沿是个圆弧?别急着换芯片,90% 的情况是你的上拉电阻在“偷懒”。本文不只讲理论,更教你如何用示波器 30 秒定乾坤。


一、问题描述(现象)

**I2C 频率标称 400kHz,示波器测出来只有 100kHz;

或者波形看着还行,但读数据偶尔丢 ACK。**

很多工程师的选值是:

  • 照抄开发板,选 10kΩ。

  • 为了“稳一点”,选 4.7kΩ。

  • 甚至为了省事,直接用 MCU 内部上拉。

  • 结果:​ 量产时一批货出问题,研发和生产互相甩锅。


    二、原理分析(为什么要这么选?)

    1. 物理模型

    I2C 总线是开漏输出(Open Drain)。

    VCC -> [Rp] -> SDA/SCL -> [NMOS] -> GND

    2. 核心参数

    • Tr (Rise Time):信号从 0.3VCC 上升到 0.7VCC 的时间。

    • Cb (Bus Capacitance):PCB 走线 + 从机引脚的寄生电容。

    RC 充电公式:

    Tr ≈ 0.847 × Rp × Cb

    3. 反直觉真相(新手 vs 老鸟)

    为什么开发板用 10k 能跑,你的一上量产就挂?

    • 开发板:EEPROM 就在 MCU 旁边,连线短,电容 Cb 极小。

    • 你的板子:加了排线、插座、3 个传感器,Cb 直接翻倍。

    这时候你还用 10kΩ,上升时间 Tr 直接超标,波形变成圆弧,ACK 自然读不到。


    三、工程级解决方案

    方案 1:按公式计算(最靠谱)

    以 400kHz I2C 为例,标准要求 Tr ≤ 300ns。

    假设总线电容 Cb = 200pF(常见值):

    Rp_max = Tr / (0.847 × Cb)
    = 300ns / (0.847 × 200pF)
    ≈ 1.77 kΩ

    结论:​ 400kHz 下,1.8kΩ 是理论最大值。

    方案 2:经验速查表(建议收藏)

    速率

    常用阻值

    适用场景

    100 kHz​

    10 kΩ​

    板内通信,电容小

    400 kHz​

    4.7 kΩ​

    工业标准值

    1 MHz​

    2.2 kΩ​

    必须计算,不建议拍脑袋

    方案 3:降低电容(硬件解法)

    如果必须用高频 I2C:

    • 缩短走线长度。

    • 减少从机数量(< 8 个)。

    • 不要使用插座或排针。


    四、选型避坑建议

  • 千万别用 MCU 内部上拉:通常 30kΩ~50kΩ,完全带不动总线电容。

  • 电源电压:

    • 3.3V 系统:上拉到 3.3V。

    • 5V 系统:上拉到 5V(注意电平兼容)。

  • 多设备冲突:多个从设备分散在不同板子上,总电容会叠加。


  • 五、总结 Checklist

    • [ ] 是否用示波器看过上升沿时间?

    • [ ] 上拉电阻是否小于 1.8kΩ(400kHz 下)?

    • [ ] 是否排除了排针/插座带来的寄生电容?

    • [ ] 是否计算了所有从机输入电容的总和?


    六、写在最后(关注我,少走弯路)

    我是 XXX,一个拒绝调包、专注底层逻辑的嵌入式工程师。

    做项目时,最怕的不是代码写不出,而是硬件行为诡异:

    • I2C 读数据全是 0xFF?

    • DMA 传输莫名错位?

    • 示波器波形看着对,逻辑就是不通?

    这些“玄学问题”往往要查好几天。

    关注我的专栏《嵌入式底层避坑指南》,我会把多年踩过的坑和对应的示波器波形图整理出来。

    关注我,下次遇到问题,直接翻历史文章就能救急。

    👉 下一篇预告:《I2C 死锁了?SDA 一直被拉低?别复位 MCU,试试这 3 种救活方法》


    References

    • NXP UM10204 – I2C-bus specification and user manual

    • TI Application Report SLVA689 – I2C Bus Pull-Up Resistor Calculation


    如果你曾被 I2C 的波形折磨过,欢迎在评论区晒出你的示波器截图,我们一起分析。​

    原创文章,转载请注明出处。

    赞(0)
    未经允许不得转载:171主机测评 » I2C 上拉电阻选 10k 还是 4.7k?实测波形告诉你答案(附速查表)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址