是否有可将任何3.3V输入/输出连接到5V输出/输入的IC?我主要在Arduino Due上需要它,但是如果有像这样的双向IC会很好。
有人建议我使用SN74AHC125和CD4050 IC,但我不了解它们的工作方式或接口。
是否有可将任何3.3V输入/输出连接到5V输出/输入的IC?我主要在Arduino Due上需要它,但是如果有像这样的双向IC会很好。
有人建议我使用SN74AHC125和CD4050 IC,但我不了解它们的工作方式或接口。
Answers:
一个简单的双向电平转换器可以用单个N-mosfet制成:
所用的MOSFET应该是具有低Vgs阈值的模型,以便在预期的输入电压电平(在这种情况下为3.3v)下具有相对较低的Rds-ON(导通电阻)。在一个这样的示例中,
BSS138的Vgs-th为1.5v max,并且被指定为具有低漏极-源极电阻,且Vgs电压低至2.5v(也可能稍低)。
所示示例使用3.3v <-> 5v转换,但即使在2.5v <-> 12v之间,它也可以在2.5v <-> 3.3v或2.5v <-> 5v下工作。该范围仅受所用MOSFET的特性限制。
所示电路基于NXP
AN97055的应用笔记,适用于I2C总线和其他系统的双向电平转换器
新的较短版本:AN10441 I2C总线设计中的电平转换技术
当L1为高电平(3v3)或悬空R1时,MOSFET保持截止状态,因此R2将漏极侧拉高(至5v)。
当L1拉低时,MOSFET导通,漏极变低。
当对H1施加低电平(0)时,该电压通过衬底二极管传输到源极(L1)
请注意,电阻大小会影响速度(图像来源)
替代晶体管解决方案
您可能会发现有用的相关文章:
由于问题似乎是针对提供双向电平转换的IC的,因此考虑德州仪器(TI)的TXB010x系列部件:TXB0102有2个通道,TXB0104有4个通道,TXB0108有8个通道。
该系列IC的突出特点是可以自动检测信号方向,因此不需要单独的方向设置引脚。
高达10 MHz的开关速度可靠地工作。理论上的最大速度可能更高-根据我的判断,数据表对此并不明确。
我有一个在3.6伏MSP430启动板和5伏Arduino Nano之间工作的TXB0108,因此涵盖了该问题的用例。
为了进行试验,Adafruit提供了一个包含TXB0108的预构建模块,从而节省了焊接SMD零件的麻烦。0102和0104可能有其他类似的选项。
如果目的是对不适合TXB系列IC 的I2C信号进行电平转换,则专门解决I2C的上拉电阻和集电极开路拓扑的选件是这样的模块,该模块再次由Adafruit出售。和其他供应商。
该模块以alexan_e的答案中所述的方式使用BSS138 MOSFET。虽然不是问题所要求的单个IC,但它也许可以实现预期的目的。另外,使用MOSFET自己构建该电路也很简单。
您应该考虑的另一件事是,您是否真的需要电平转换。即使在较低的电压(例如3.3)下运行,许多芯片也具有5V耐压输入引脚。atmega CPU还将arduino的任何高于0.6 * Vcc或3V的内容都解释为逻辑高电平,因此3.3V信号可以直接驱动arduino引脚而无电平移位。
假设您使用的是5V arduino,并且需要与3.3V部件通信,如果该部件具有5V耐压输入(如今很多),只需将它们连接起来就可以使用。如果您的双向线路是集电极开路设计,例如i2c,其中设备仅将线路拉低,则只需将上拉电阻连接到3.3V而不是5V,事情就可以了。
否则,您需要做的就是确保线路电压不超过3.3V,您可以使用电阻和齐纳管进行此操作,在arduino线上放置一个电阻,然后通过齐纳管将电压钳位至3.3V。(来源:repetae.net)
您可能会想住危险的生活,只使用10k电阻就可以了。之所以可行(有时!)是因为接收芯片内部存在一个钳位二极管,该钳位二极管将多余的电压分流至vcc或3.3V。如果您尝试将整个3.3V线路通过它拉至5V,则该二极管会烧坏(除了将该线路拉至5V所造成的任何损害),但是如果使用电阻器,则不会流过太多电流,并且假设您的3.3V线路负载很小,不会显着改变电源线的电平,但有很多警告。因此,总的来说,除非您有本地隔离的3.3V总线,否则真的不能为齐纳管多花2美分。我之所以只提它,是因为您会在原理图上看到它,因为它是在ebay上买到的便宜便宜的分线板,可能会想要复制它,只是不要让它越过面包板进入生产设计。:)
编辑只是注意到您正在使用更新的3.3V arduino,所以只要反转我上面所说的,尽管显然某些I / O线路可能耐受5v电压,但齐纳电阻技巧仍然可以使用,似乎有些分歧在论坛上。Teensy 3.1还是一个不错的小型ARM板,具有所有5V耐压引脚,不到适当设计更好的恕我直言的成本的一半,http: //www.pjrc.com/store/teensy31.html
从便宜的解决方案部门,可以像在Silicon Labs AN883中那样,用BJT和肖特基二极管代替FET(根据基于恩智浦应用笔记的公认答案)。他们的原理图与其他事物有些复杂,因此我在这里提取了必要的部分,并对其进行了重新定向,因此看起来像在接受的答案中,可以轻松比较两个原理图:
BJT仅在从低到高的方向上进行平移...完全与单晶体管电平上移器中讨论的一样。肖特基取代了FET的体二极管,实现了高→低转换。
以下是他们针对3.3 <-> 1.8V转换器的放大范围测量;他们还提出了5→1.8V转换等原理图。当进行3.3→1.8V转换时,MMBT3904仅具有150mV(饱和)压降。BAS40二极管在相反方向上的压降为350mV。这些信号影响(显然)在转换器的低端和高端上的逻辑低电平输出。
他们两边都有不错的CMOS器件,因此输入阻抗不是什么大问题。在它们的1V / div迹线中没有可见的逻辑高容限的下降/偏移,因此我在这里没有打扰。根据我的仿真结果,他们设备的输入阻抗至少为1Mohm。逻辑高裕度开始下降到低于100K输入阻抗左右。
另外,他们建议这种基于BJT的转换器最高只能达到300KHz左右。
我不确定这些解决方案中的哪一种更便宜,实际上是FET还是Schottky + BJT ...,但是这肯定需要更多的零件...除非您使用确实存在的那些二极管+晶体管封装之一,例如PZMT1101。但您还需要3个电阻。
最简单的解决方案是在3.3V电压下运行所有电路。HC芯片将很高兴在该级别上运行。
如果无法做到这一点,当您将自己局限于一个方向时,可以使事情变得简单得多。电压为5V的HCT芯片可以接受3.3V的电压,而简单的两电阻分压器可以将5V降低至3.3V。一些uC的引脚可以承受5V的电压,因此您不需要分压器。如果在引脚上放置5V上拉电阻,并在接地和开路(=输入)之间切换,那么您将获得0-5V的可通过输出。
对于耦合集电极开路总线(I2C,达拉斯1线制),BS138技巧是一个可行的方法。有一些用于I2C的小芯片,可将两个FET放在一个外壳中。(PCA9306等)
但是,如果您真的想进行双向电平转换:确实存在此类芯片,请检查TXB0108。