一、两颗NMOS搭建的电平转换电路
我们两个设备或者芯片之间要进行I2C通讯,但他们I2C的电平不匹配,就需要增加电平转换电路了,这里我们用两颗NMOS管实现的I2C电平电路,从而实现3.3V电压域与5V电压域间的双向通讯。
我们这里讲解的是3.3V电压域与5V电压域,如果是2.5V、1.8V的电压域,设计的时候一定要考虑MOS管的Vgs开启导通电压是否满足。
二、两颗NPN三极管搭建的电平转换电路
我们这里用三极管来搭建UART通讯的电平转换电路,从电路模型上看跟MOS管的差不多,只是我们需要在三极管的b极串一个限流电阻。我们看看它的工作原理,这里以Q5这组为例:1)当5V_TXD输出高电平时,Q5的Vbe < 0.7V,三极管截止,3.3V_RXD被R5上拉到3.3V,所以3.3V_RXD为高;2)当5V_TXD输出低电平时,Q5的Vbe > 0.7V,三极管导通,3.3V_RXD通过三极管被5V_TXD拉低,所以3.3V_RXD为低;
三、二极管钳位搭建电平转换电路
其实用二极管钳位法来搭建的电平转换电路,在工作中也经常在用。我们来看看它的工作原理:1)当3.3V_TXD输出高电平时,D2截止,5V_RXD被R14上拉到5V,同时又被D1钳位到3.3V,所以5V_RXD为高,即A点电平大概为4V左右;2)当3.3V_TXD输出低电平时,D2导通,5V_RXD被D2拉低,所以5V_RXD为低,即A点电平大概为0.3V左右;
3)当5V_TXD输出高电平时,通过二极管D3钳位到3.3V,所以3.3V_RXD为高,即B点电平大概为3.6V左右;4)当5V_TXD输出低电平时,D3不导通,直接通过电阻R15将3.3V_RXD拉低,所以3.3V_RXD为低;
这个电路虽然成本低,漏电流小;但它电平还是存在一定的误差,因为二极管都有一个正向压降,所以要正确的选择二极管,并且电平不能超出芯片正常工作的电平,还有一个缺点就是由于限流电阻会对速度有影响,所以建议此电平转换在100KHz的通讯下使用。
四、二极管和MOS管组合的电平转换电路
为了解决纯二极管搭建电平转换的缺陷,我们将电路做了优化,用一颗二极管和一颗MOS管一起组合搭建一个电平转换电路,如下图,提醒一下读者,我们抖音和西瓜视频都有视频讲解。这个电路在UART通讯的应用中,我经常在用。一般用在波特率115200是完全没有问题。我们来看看它的工作原理:1)当3.3V_TXD输出高电平时,D5截止,1.8V_RXD被R24上拉到1.8V,所以1.8V_RXD为高,即C点电平大概为1.8V左右;2)当3.3V_TXD输出低电平时,D5导通,1.8V_RXD被D5拉低,所以1.8V_RXD为低,由于二极管的压降,所以C点低电平大概为0.3V左右;3)当1.8V_TXD输出高电平时,Q4截止,3.3V_RXD被R25上拉到3.3V,所以3.3V_RXD为高,即D点电平大概为3.3V左右;4)当1.8V_TXD输出低电平时,Q4导通,3.3V_RXD被Q4拉低,所以3.3V_RXD为低,即D点电平大概为0V左右;
五、电平转换芯片
为了稳定和可靠性,很多时候我们都会选择电平转换芯片,用它最省事!我们只需要分别给VCCA和VCCB供上两个不同的电平,那对应的A口也就输出VCCA一样的电平,同理,B口输出的电平跟VCCB的一样,以往我们用一些独立元件搭建的电平转换电路,都只需要一颗芯片就可以实现。在使用电平转换芯片需要注意一点的是,一般是VCCB > VCCA,也就是说VCCB要用在电平高的一侧,VCCA用在电平低的一侧,使用的时候,具体看一下电平转换芯片的Datasheet。
上图中,我们没有给电平转换芯片标明具体的型号,是因为这类芯片有很多个品牌,小编没有理由给某个品牌去打广告。