本文分享下I2C双向电平转换电路的设计原理,以及需要注意的事项。
在I2C主从设备对接时,需要考虑主从设备的电平情况,常规的主要有3种:5V,3.3V,1.8V。如果电平相同,比如都是3.3V,那么可以直接对接。如果电平不同,一个高电平是3.3V ,另外一个是1.8V,那么就需要接入其它的器件来做一下电平转换,通常是接入NMOS管。
如上图,此图来源于I2C官方协议,协议标准文件里面已对此作了一些说明。见附件获取I2C协议的英文版源文件和中文版本。
下面解释下这个电平是如何双向工作的,即不论是低压那边还是高压那边主动发生电平变化,都是可以正常通信的。
工作原理:
---当总线上没有数据发送时,两边都没有主动去拉低总线,因此MOS管也不导通,都因为各自的上拉电阻存在,左边为高电平3.3V,右边为高电平5V。
---当左边需要发送数据1到右边时,即SDA1/SCL1为高电平3.3V,MOS管的Vgs=0,不导通,右边因为上拉电阻的存在,SDA2/SCL2电平保持为5V。即可看作左边正常将数据1发送到右边。
---当左边需要发送数据0到右边时,即SDA1/SCL1为低电平0V,Vgs=3.3V,MOS管导通,右边电压就跟左边电平一样了,SDA2/SCL2为低电平0V。即可看作左边正常将数据0发送到右边。
---当右边需要发送数据1到左边时,即SDA2/SCL2为高电平5V,左边SDA1/SCL1因为没有主动拉低总线,所以MOS管不导通,左边保持上拉电平3.3V。即可看作右边将数据1正常发送到左边。
---当右边需要发送数据0到左边时 ,即SDA2/SCL2为低电平0V时,因为MOS管体二极管的存在,体二极管导通,MOS管的S极被拉低,Vgs接近3.3V,MOS管导通,进一步导致左边和右边电平一样,为0V。即可看作右边正常将数据0发送到左边。
由上可知,不论I2C的主设备(Master)接在上面电路的左边(低压电源)还是右边(高压电压),都是能够正常通信的。
以上是电路的工作说明,实际应用中,有以下两点需要注意:
注意事项:
--MOS管的接入方法---MOS管的S极要接到低电源那边,不能接反。
--MOS管的选型---MOS管的导通电压需要注意。MOS管导通电压门限(Vgsth里面的最大值)需要小于低电源电压。
如上图是2N7002K的NMOS管,1V<Vgs<2.5V。如果5V和3.3V之间的互转,那么可以用这个管子。但如果是3.3V和1.8V之间的互转,那么是不能用的。因为导通门限电压是1-2.5V,因为可能会用到导通电压大于1.8V的器件,那么MOS管就可能永远无法导通了。这个需要特别注意,因为一旦没注意选用了,可能就是有的板子功能OK,有的板子NG。