I2C 上拉电阻计算

上拉电阻有上下两个边界:太大上升沿太缓,太小灌电流超标。中间才是能用的区间,4.7k 只是其中一种巧合。

常见问题

为什么常见的 4.7k 上拉有时候不工作?

4.7k 只在总线电容小、速率低时合适。100 kHz 下 4.7k 配 200 pF 的上升时间约 800 ns,还在 1000 ns 限内;一旦电容到 400 pF 或速率提到 400 kHz,上升时间就超标,波形变成圆角,采样点读错。

上拉电阻越小越好吗?

不是。电阻越小上升越快,但器件拉低时灌电流越大。3.3 V、1kΩ 时灌电流约 2.9 mA,已经接近很多器件的 3 mA 上限;多主仲裁或时钟拉伸时,某个器件可能拉不动。功耗也会上升。

总线电容怎么估?

每个器件的引脚电容约 10 pF,OLED 这类模组可到 20 pF;FR4 走线大约 1 pF/cm,排线更高。把它们相加,再留 20% 余量。超过 400 pF 就不该继续靠减小上拉硬撑,应该缩短走线或加 I2C 缓冲器。

快速模式为什么上限只有 300 ns?

400 kHz 的一个位只有 2.5 μs,上升沿必须在前 300 ns 内完成,否则留给采样和保持的时间不够。规范按 30%/70% VDD 定义上升时间,所以公式里是 0.8473·R·C,不是简单的 R·C。

1.8 V 系统和 3.3 V 有什么不同?

上限由上升时间决定,和电压关系不大;下限由 (VDD − V_OL)/I_OL 决定,电压越低允许的电阻越小。1.8 V、3 mA、V_OL 0.4 V 时下限约 467Ω,可选范围明显比 5 V 窄。

多个上拉并联会怎样?

并联电阻变小,上升更快,但等效灌电流变大。两块板各带 4.7k 上拉,接在一起就是 2.35k,电流翻倍。模块化设计时只保留一组上拉,或者用跳线断开。