I2C详解(四)

上拉电阻的选择

针对不同应用场景及供电电压下,上拉电阻的值有明确的最大值最小值限制,不能过大也不能过小。

  • 上拉电阻最小值Rp(min):

如果Rp阻值过小,VDD灌入端口的电流将较大,这导致端口输出的低电平值增大(I2C协议规定,端口输出低电平的最高允许值Vol=0.4V);如果灌入端口的电流过大,还可能损坏端口。一般标准模式和快速模式下灌电流不超过3mA,快速模式+及以上灌电流不超过20mA。所以Rp最小值计算公式为:

Rp(min)= ( VDD - Vol(max))/ Iol

I2C详解(四)_第1张图片


  • 上拉电阻最大值Rp(max):

端口输出高电平是通过Rp实现的,线上电平从低到高变化时,VDD通过Rp对线上负载电容Cb充电,这需要一定的时间,即上升时间。如果Rp过大,信号上升沿变化缓慢,导致规定的时间内没有到达高电平,造成数据错误。所以Rp最大值计算公式为:

对于RC曲线:V(t) = VDD (1 - e-t / RC)
V(t1) = 0.3 × VDD = VDD (1 - e-t1 / RC) ,t1 = 0.3566749 × RC
V(t2) = 0.7 × VDD = VDD (1 - e-t2 / RC) ,t2 = 1.2039729 × RC
T = t2 - t1 = 0.8473 × RC
所以Rp(max)与最大上升时间(tr)和负载电容(Cb)有关,计算公式:
Rp(max)=tr /(0.8437*Cb)

I2C详解(四)_第2张图片


关于计算Rp的基本参数如下表所示:
I2C详解(四)_第3张图片

一旦确定了Rp上下限值后,就可以根据速率和功耗两方面来权衡Rp的具体阻值,较小的Rp会因为小RC延时而提供较快的速度,较大的Rp会因为电流减小而有较低功耗。


实例计算

举例说明快速模式下I2C总线基本参数是Cb=200pF,VDD=3.3V,计算Rp值。

Rp(max)= tr /(0.8437*Cb)= (300 x 10^-9) / (0.8437 x 200 x 10 ^-12)=1.77KΩ

Rp(min)= ( VDD - Vol(max))/ Iol = (3.3-0.4)/ (3 x 10^-3)=966.667Ω

根据以上计算,Rp应选择966.667Ω–1.77KΩ之间的即可,具体阻值根据实际情况来确定。

你可能感兴趣的:(硬件接口)