电平转换在电路设计中非常常见,因为做电路设计很多时候就像在搭积木,这个电路模块,加上那个电路模块,拼拼凑凑连起来就是一个电子产品了。而各电路模块间经常会出现电压域不一致的情况,所以模块间的通讯就要使用电平转换电路了。
上图是用MOS管实现的I2C总线电平转换电路,实现3.3V电压域与5V电压域间的双向通讯。挂在总线上的有3.3V的器件,也有5V的器件,通过这个电路,大家就可以愉快地玩耍聊天了。
实物对照图如下。实物的上拉电阻用了4.7K欧姆,可以提供更大的电流驱动能力。在满足电路性能的前提下,我喜欢用阻值更大的电阻,因为功耗更低更省电。
原理分析
简化来看,留下I2C的一根线来分析就可以了,如下图:
分四种情况:
1、当SDA1输出高电平时:MOS管Q1的Vgs = 0,MOS管关闭,SDA2被电阻R3上拉到5V。
2、当SDA1输出低电平时:MOS管Q1的Vgs = 3.3V,大于导通电压,MOS管导通,SDA2通过MOS管被拉到低电平。
3、当SDA2输出高电平时:MOS管Q1的Vgs不变,MOS维持关闭状态,SDA1