I2C 上拉电阻计算

电器工程 i2c 拉起
2022-01-09 07:44:32

我正在尝试ATxmega16A4U微控制器驱动这个 I2C LCD 显示器

列出的这两款器件都可以使用高达 400 kHz 的 I2C 时钟频率。这两个设备是 I2C 总线上的唯一设备。

然而,上拉电阻界限的计算给出了一些相当奇怪的值。

计算 I2C 最小上拉电阻值:

\begin{方程} R_{min} = \frac{Vcc - 0.4}{3mA} = 966.7 \Omega \end{方程}

查看 uC 数据表,第 92 页列出了 10pF 的最大引脚输入电容。

然而对于 LCD,它在第 8 页上有称为Capacitive load represent by each bus lineCb 的标记,并且列出的最大值为 400pF。我假设我应该只将此值添加到 10pF uC 输入电容,但这似乎真的很高而且计算很不稳定。

例如,当我尝试计算 400kHz 时钟的最大上拉电阻值时:

\begin{方程} R_{max} = \frac{300ns}{10pF + 400pF} = 731.7 \Omega \end{方程}

我是否误解了 LCD 数据表?显然最大允许上拉电阻值不能小于最小允许值。

同样,如果我假设最大净总线电容为 400pF,我得到:

\begin{方程} R_{max} = \frac{300ns}{400pF} = 750 \Omega \end{方程}

仍低于最大允许值。

2个回答

Atmel 数据表中有一个错字,100kHz 情况下的上升时间应该是 1000ns,而不是 100ns(它不需要低于 300ns 的 400kHz 情况下)然后你得到:

\$\dfrac{1us}{400pF} = 2.5k\Omega \$; 对于 100kHz 的情况

LCD 数据表(几乎可以肯定)是指最大总线电容,而不是它添加到总线的电容。它可能会增加大约 10pF。您可以使用 LCR 表检查,也可以使用 2k 电阻器对其进行设置并查看上升时间。

许多设备不完全符合官方的 400kHz 规范,因此最好参考这些以了解 400kHz 可以工作的条件(总线电容、上拉/电流源/等),具体参见第 6 节(例如参见第 47 页的注释 4:

[4] 为了以 400 kHz 驱动全总线负载,在 0.6 V VOL 下需要 6 mA IOL。不符合此规范的部件仍然可以工作,但在 400 kHz 和 400 pF 时不可用)

此外,这些表格非常有用,并且看起来与您的计算一致:

I2C 上拉

你的计算是有道理的。此TI 应用笔记(第 4.1 节)中有类似的计算请注意,他们使用V cc =1.8V 来计算R min

可以想象,C b是 LCD 可以使用的最大总线电容,而不是 LCD 添加到总线的电容。您可以通过测量其 RC 常数来测试 I 2 C 输入的电容。这将提供数量级的健全性检查。