资讯详情

教你精确计算 I2C 上拉电阻阻值

I2C 总线能挂多少设备?

理论上:

7-bit address :2 的 7 次方,能挂 128 个设备。

10-bit address :2 的 10 次方,能挂 1024 个设备。

当然要去掉预留设备的地址,7 bit 协议规定了 普通厂家不能使用8个预留地址。保留地址如下:

0a061e6e4b6d97ee6554c18b24a59e89.png

但是 I2C 协议规定,总线上的电容器不得超过 400pF。管脚有输入电容,PCB 寄生电容生电容,所以会有限制。实际设计中的经验值可能是

总线规定电容大小的原因是,I2C 使用的 GPIO 为了泄漏结构,泄漏结构不能输出高电平,需要外部拉电阻拉高。电阻和总线电容产生一个 RC 电容器越大,信号边缘越慢,可能会带来信号质量风险。

传输速度越快,信号窗口越小,上升下降时间越短越陡,所以 RC 乘积必须更小。

I2C 架构

我们知道 I2C 速度模式不同,标准(100KHz)、快速(400KHz)、快速plus(1MHz)、高速(3.4MHz)。

Vdd 可以采用 5V、3.3V、1.8V 电源电压不同,上拉电阻值也不同。

一般总线认为低于 0.3Vdd 高于低电平 0.7Vdd 为高电平。

上拉电阻计算

1.上拉电阻过小,总线电流增大,端口输出低电平增大。

2.上拉电阻过大,上升沿时间增加,方波可能变成三角波。

因此,计算精确的上拉电阻值是非常重要的。

计算上拉电阻的电阻值有明确的计算公式:

最大电阻和上升时间 tr 、总线电容 Cb 、标准上升时间 0.8473 有关。

最小电阻和电源 Vdd 电压、GPIO 口本身最大输出电压 Vol、 GPIO口本身最大电流 Vol 有关。

查《I2C-bus specification and user manual.pdf》7.1节:

查《I2C-bus specification and user manual.pdf》表10:

从上表可知:

标准模式:0~100KHz,上升沿时间 tr = 1us

2.快速模式:1000~400KHz,上升沿时间 tr = 0.3us

三、高速模式:up to 3.4MHz,上升沿时间 tr = 0.12us

假设这个公式 Vdd 是 1.8V 供电,Cb 总线电容是200pF虽然协议规定负载电容最大 400pF,实际上超过 200pF 波形很差,我们认为 200pF 来计算)

(Vdd上拉电阻越大):

note:在高速模式下,一般采用电源电压 1.8 V,不会采用 3.3V,因为如果用 3.3V 你会发现最小电阻大于最大电阻。

不同速率使用的电阻一般如下:1.5K、2.2K、4.7K。

一般大家采用 I2C 使用标准模式,也就是 100KHz,推荐上拉电阻 4.7K,当然可以用示波器看传输波形,适当调整。

结论:I2C 上拉电阻值与电源电压、传输速度、总线电容器(负载因素)有关。您可以根据自己的板计算,选择最佳电阻值,以获得最佳的传输波形。

最大电阻 Rp 和总线电容 Cb 关系图:

note:建议保持总线电容 100pF 以下。

关于 I2C 我在我的博客上写了各个方面,包括 10 篇,包括 I2C 传输协议和Linux 下 I2C 您可以查看软件驱动框架。网站如下:

http://www.linuxer.vip/i2c-bus-spec/

也可以在左下角点击阅读原文,电脑端阅读更方便。

··················END··················

点击关注微信官方账号,免费获取学习资料

标签: 684k电阻105t电阻电阻110k324k电阻影响电阻大小的因素110rp电阻

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台