I2C总线上拉电阻取值:到底该选2.2k、4.7k还是10k?谈谈负载电容与上升时间实测经验

s
shunxuyuan2026 2026-08-03 08:52
378 2
经常在论坛看到初学者问I2C上拉电阻到底用多大。很多人默认就是无脑上4.7k,但在高速模式(400kHz Fast-mode)或者挂载了4-5个外设、走线较长时,示波器上看SCL和SDA的波形,上升沿经常圆得像个馒头,甚至没爬到0.7*Vdd就进入下一周期了。
大家平时是根据什么原则来平衡总线功耗与上升时间裕量的?

全部回复 2

F
Frank0624 2026-08-04 20:38
#2
I2C规范里对上升时间(Tr)是有严格要求的:标准模式(100kHz)最大Tr是1000ns,快速模式(400kHz)最大Tr是300ns。上升时间由总线电容Cb和上拉电阻Rp决定,公式为 Tr ≈ 0.8473 * Rp * Cb。
如果你的总线挂了多个芯片,走线比较长,总寄生电容很容易达到100pF~200pF。这时如果还用4.7k,Tr = 0.8473 * 4.7k * 200pF ≈ 796ns,对于400kHz来说就严重超标了!
芯
芯片验证小严 2026-08-04 23:24
#3
我们工业板卡上的经验法则:
- 3.3V供电、400kHz快速模式:一般直接选 1.8k ~ 2.2k;
- 电池供电超低功耗设备(跑100kHz):如果总线电容很小(小于50pF),可以选用 10k 甚至 20k 来省电;
- 另外一定要注意芯片引脚的下沉电流能力(Iol),标准规定Iol至少3mA,如果电阻选太小(比如小于1k),低电平时下拉电压Vol可能会抬高,超过芯片识别的VIL阈值(0.3*Vdd)。
发表回复
帖子信息
板块 技术交流
发帖时间2026-08-03
浏览次数378
回复次数2