I2C 3.3 至 5.0 V 转换

电器工程 Arduino 电压 i2c 数字通信
2022-01-15 10:03:12

我正在尝试将 3.3VI 2 C 设备连接到 5V Arduino。

我对 SCL 线没有任何问题。我可以使用一个简单的分压器,但我对 SDA 线有疑问,因为它是双向的。

我完全不确定如何处理这个问题。我已经添加了一对二极管,在从输入端有一个分压器,在主输入端没有额外的东西。

还有其他解决方案吗?

4个回答

关于该主题的好文档是用于 I2C 总线和其他系统的双向电平转换器,它使用单个 mosfet 作为双向电平转换器。

为了扩展 sivu 的答案,这是所谓的“总线开关”的常见用途,它们基本上是逻辑控制的 MOSFET。使用分立 MOSFET 有一些缺点(寄生电容/电容耦合就是其中之一),选择一个好的 MOSFET 可能会很棘手。总线开关经过优化,可用于高速逻辑电路。

有几家制造商生产它们,包括 Fairchild、TI、IDT 和 Pericom。看看NC7SZ384

除其他外,请参阅以下应用说明:

许多 Arduino 板载支持在 3.3 V 下运行。实际上,所有的都可以在 3.3 V 下运行,FTDI 芯片原理图在示例中说明了如何运行。制作Teensy USB Arduino的 Paul建议我可以将 USB 电缆打开并提供 3.3 V 电压来代替电缆的 V CC线。你可以试试这个。但也有其他选择。

  1. 检查 Arduino 的逻辑电平。我相信即使在 5 V 的 Atmel 上,它们也支持 3.3 V 作为逻辑高电平。一篇 SparkFun 文章指出:“*将 3.3 V 数字输出引脚连接到 5 V 输入引脚通常很简单。大多数设备都可以承受它们接受为数字高值的最小电压。例如,大多数 Atmel 微控制器,接受任何高于 0.6*V CC的高电平,因此 3.3 V 设备必须输出高于 3 V (0.6*5 V) 的电平。*"
  2. 购买一个跨接 3.3 V 和 5 V 选择器的 Arduino 克隆。我使用RBBB cloan,我已将电源线 FTDI 芯片设置为 3.3 V。但还有许多其他具有实际 3.3 V 配置选项,如果我没记错的话,包括最近的官方 Arduinos 之一。您还可以将 Teensy USB 与他的 Arduino 插件一起使用,并按照他网站上的说明安装3.3 V 稳压器
  3. 拼接 USB 电缆并提供实验室电源质量的 3.3 V 电源来代替 USB 电缆的 V CC线。正如保罗所建议的那样,它应该是低电流。因此,要么是优质的电压源。您也可以将几个电池串联起来以获得所需的电压。
  4. 如果您有兴趣,我可以尝试检查您的 Arduino 的原理图,也许可以对允许 3.3 V 的 FTDI 配置进行更改。

最后,我们在 Chiphacker 上讨论了关于降压的单向和双向解决方案,您可能对此感兴趣todbot 提到的关于 SparkFun 的这篇文章很有用,与 SparkFun 链接的关于双向MOSFET文章的讨论也很有用。总结 SparkFun 文章:

  • 内联电阻。单向。仅降压 - 降低电流,IC I/O 钳位二极管可以限制最大输入。
  • 串联电阻。单向。仅降级,但细化。
  • 二极管。单向。降压。更安全。来自 5 V 的高阻二极管;3.3 V 侧然后连接到高电平。但是,如果你颠倒二极管配置,你不能也升压吗?
  • MOSFET。双向。降压或升压。
  • 在评论中:光隔离示例:4N25。大电流。
  • 在评论中:齐纳二极管示例:1N4728A
  • 在评论中:74HC244/125 单向

有专门用于电平转换 I2C 的 IC:

我不知道你的设计有什么样的限制,但我认为使用专用 IC 会更容易,然后提出你自己的解决方案。