I2C:3.3 V 和 5 V 设备在 3.3 V 总线上没有电平转换?

电器工程 电压 i2c 电平转换
2022-01-09 16:35:13

如果我在具有上拉至 3.3 V 的 I2C 总线上使用 5 V 供电设备,我真的需要电平转换器吗?

据我了解,这些设备只会将线路(SDA、SCL)拉低(接地),而不会将它们的电源电压驱动到总线。因此,只要所有设备都将上拉电阻 (3.3 V) 的电压检测为逻辑高电平,我就没有理由使用电平转换器。使用 5 V 作为电源的设备应该是这种情况。

在我的情况下,我有一个 IC,其输入不能作为主设备承受 5 V,我可以用 3.3 V 为我的从设备供电,但在我的电路中使用 5 V 更容易,并且允许从设备更高的(内部)时钟速率。

4个回答

根据\$\mathrm{I^2C}\$ 规范的第 4 版

“由于可以连接到 I2C 总线的各种不同技术设备(CMOS、NMOS、双极),逻辑‘0’(低)和‘1’(高)的电平不是固定的,取决于VDD 的相关电平。输入参考电平设置为 VDD 的 30 % 和 70 %;VIL 为 0.3VDD,VIH 为 0.7VDD。参见图 38,时序图。一些传统器件输入电平固定为 VIL = 1.5 V 和VIH = 3.0 V,但所有新设备都需要此 30 %/70 % 规范。有关电气规范,请参见第 6 节。(第 9 页)

在规范的更深处,你会看到这个 \$ 0.7 \times V_{DD}\$ 是最小逻辑高电压:

摘自 NXP I2C 规范修订版。 4

对于您的 5V 系统:

\$ 0.7 \times 5 V = 3.5 V\$

\$ 0.3 \times 5 V = 1.5 V\$

对我来说,3.3 V 上拉看起来微不足道,尤其是如果您的任何 5V 设备使用 \$ 0.7 \times V_{DD}\$ 的“新”标准来表示逻辑高电平。

您的里程可能会有所不同,但最好尽可能在规格范围内......

Cees 的回答是不正确的,尤其是“总是”和“任何”。微控制器 I/O 可能需要 0.6 Vdd 作为高电平的最低值,其他最低为 0.7 Vdd,就像 Madmanguruman 指出的那样,这是 I2C 的标准。0.7 Vdd 在 5 V 电源下为 3.5 V,因此 3.3 V 已经太低了。

但情况更糟。稳压器通常对其标称输出电压有 5% 的容差,因此最坏情况下 5 V 可能为 5.25 V,然后 0.7 Vdd 变为 3.675 V。高电平的最小输入。如果 3.3 V 具有 5% 的负容差,则 3.3 V 变为 3.135 V。因此,考虑到容差,输入很可能太低半伏或 15%。

所以,

因此,只要所有设备都将来自上拉电阻 (3.3V) 的电压检测为逻辑高电平,我就没有理由使用电平转换器。使用 5V 作为电源的设备应该是这种情况。

是一个不合时宜的结论。始终检查数据表并进行计算。

这是一个相当古老的问题,并且已经讨论了很多问题。但是,这里没有一个答案提到在 I2C 中的错误假设

这些设备只会拉线(..)并且永远不会开车

事实上,在 I2C 模式之一,即高速模式下,主设备可以主动驱动总线,因此如果您正在考虑允许通过总线进行 HS 通信,那么混合电压可能不是一个好主意:

  • 高速 IC 器件向下兼容,允许混合总线系统。
  • 为了缩短信号上升时间,HS 模式主器件在 SCL 输出上结合了开漏下拉和电流源上拉电路。
  • HS IC 主机实际上可以为总线提供电流,这称为升压
  • 此电流源仅在 HS 操作期间启用 (!) 并且仅用于一个主控。

引用来自我刚刚在这里找到的 HS 模式的介绍。我添加的亮点。

我觉得其他答案并没有真正回答 Jannis 的问题。他询问在 3.3V 总线上使用 5V 设备(大概是 3.3V MCU)。我同意将上拉连接到 3.3V 是可以的,例如对主设备安全,因为 SDA/SCL 引脚只会拉低,正如他所提到的。请注意,从属设备和主设备需要共享一个公共接地(Vss 引脚等电位)以保护 MCU 免受过压,但无论如何可能都是这种情况。所以 Jannis 的方法应该可以工作,没有电平转换器。