我正在尝试将 3.3VI 2 C 设备连接到 5V Arduino。
我对 SCL 线没有任何问题。我可以使用一个简单的分压器,但我对 SDA 线有疑问,因为它是双向的。
我完全不确定如何处理这个问题。我已经添加了一对二极管,在从输入端有一个分压器,在主输入端没有额外的东西。
还有其他解决方案吗?
我正在尝试将 3.3VI 2 C 设备连接到 5V Arduino。
我对 SCL 线没有任何问题。我可以使用一个简单的分压器,但我对 SDA 线有疑问,因为它是双向的。
我完全不确定如何处理这个问题。我已经添加了一对二极管,在从输入端有一个分压器,在主输入端没有额外的东西。
还有其他解决方案吗?
关于该主题的好文档是用于 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线。你可以试试这个。但也有其他选择。
最后,我们在 Chiphacker 上讨论了关于降压的单向和双向解决方案,您可能对此感兴趣。todbot 提到的关于 SparkFun 的这篇文章很有用,与 SparkFun 链接的关于双向MOSFET文章的讨论也很有用。总结 SparkFun 文章:
有专门用于电平转换 I2C 的 IC:
我不知道你的设计有什么样的限制,但我认为使用专用 IC 会更容易,然后提出你自己的解决方案。