• 正文
    • Part 01、前言
    • Part 02、为啥I2C需要上拉电阻?
    • Part 03、上拉电阻计算
    • Part 04、注意事项
  • 相关推荐
申请入驻 产业图谱

I2C电路上拉电阻选1K还是10K?如何计算?1200字手把手教你搞定它

05/09 15:00
925
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Part 01、前言

I2C通信电路嵌入式设计中的“常客”,在各种产品比如家电,工控,医疗器械等产品的板内通信中I2C总能派上用场。但设计I2C电路时,上拉电阻Rp的选择却是个让人头疼的问题:选小了不行,选大了也不行。今天咱们就来聊聊I2C上拉电阻的计算方法吧。

Part 02、为啥I2C需要上拉电阻?

I2C是一种开漏Open-Drain通信协议,SDA和SCL线上的信号只能被拉低(输出0V),而拉高(输出1)全靠上拉电阻Rp。

工作原理:

没有信号时,上拉电阻把线路拉到高电平(接近Vcc)。

IC需要输出0时,会通过内部的MOSFET把线路拉低到接近0V。

上拉电阻的作用:

电阻决定了线路从低电平到高电平的上升速度,同时也影响功耗。选的值不对,要么通信慢得像“乌龟爬”,要么功耗高得像“电老虎”。

那上拉电阻的阻值如何确定呢?

Part 03、上拉电阻计算

我们需要计算上拉电阻的最小值Rp(min)和最大值Rp(max),咱们一步步分析。

最小值 Rp(min)计算

如果上拉电阻太小,电流会太大,IC可能拉不下来低电平,导致通信失败。最小电阻由以下公式决定:

Vcc:电源电压

VoL(max):IC能输出的最大低电平电压(I2C标准要求逻辑低电平低于 0.3×Vcc)

IoL:IC拉低时的灌电流能力(Sink Current)

举个例子,Vcc = 3.3V,VoL(max)=0.4V,IoL=3mA,

所以,上拉电阻不能小于966.67Ω,不然IC拉低电平会“力不从心”,逻辑0 可能变成“半吊子”,通信直接崩。

最大值 Rp(max)计算

如果上拉电阻太大,线路的上升时间会变长,达不到I2C标准的上升时间要求(Rise Time),导致通信失败。最大电阻由以下公式决定:

tr:I2C标准的最大上升时间

Cb:总线电容(包括线路电容和IC的引I脚电容)

0.8473:RC电路上升时间的常数(从0.3×Vcc到0.7×Vcc的时间系数)

举个例子,如果tr=300 ns,Cb = 200pF

所以,上拉电阻不能大于1770Ω,不然信号上升太慢,I2C主设备可能还没等到高电平就“等不及了”,通信又崩。

上拉电阻的范围算出来了(966.67Ω到1770Ω),但具体选多大,还得看速度和功耗的平衡。小电阻(接近Rp(min)),优点是上升时间短,通信速度快。缺点是电流大,功耗高。比如用1kΩ,上升时间:

速度很快,但平均电流(信号频繁切换时):

功耗

大电阻(接近 Rp(max)),优点是电流小,功耗低。缺点是上升时间长,速度慢。比如用1.5kΩ,上升时间:

速度慢了点,但功耗:

Part 04、注意事项

1.总线线电容Cb要估准:

Cb包括PCB走线电容(每厘米约1-2pF)、IC引脚电容(通常5-10pF/个)。比如10cm走线+2个IC,Cb ≈ 20 + 2 × 10 = 40 pF。实际设计时留点余量,测一下最好。

2.Vcc变化的影响:

Vcc不是稳定的,而是波动的,比如不是3.3V,而是2.9-3.5V之间,Rp(min)会变化,重新算一下。

3.环境温度:

高温下IC的IoL可能变小,Rp(min)会变大,注意评估。

4.多设备场景:

多个IC挂在I2C 总线上,电容Cb会增加,Rp(max)变小,重新算一下范围。

有问题欢迎在评论区留言交流哦!

相关推荐