在最近的项目中,由于CPU所用的IO的电压比较低,很多IO的电压域的电压都是1.8V,而外围设备电路通常所用的电压是3.3V和5V,当CPU需要与外围设备通信时就会出现通信接口电压不匹配的情况,此时就需要对通信接口进行电平转换。下面我们以I2C接口电路进行分析,电路如下:
那么它是如何实现不同电压域之间的双向通信的呢?
原理分析
为了便于分析,我们使用其中一根线进行分析,下面是I2C的数据线原理图:
- 当SDA1输出高电平时:MOS管Q1的Vgs = 0,MOS管关闭,SDA2被电阻R2上拉到3.3V。
- 当SDA1输出低电平时:MOS管Q1的Vgs = 1.8V,大于导通电压,MOS管导通,SDA2通过MOS管被拉到低电平。
- 当SDA2输出高电平时:MOS管Q1的Vgs不变,MOS维持关闭状态,SDA1被电阻R1上拉到1.8V。
- 当SDA2输出低电平时:MOS管不导通,但是它有个寄生二极管!MOS管里的寄生二极管把SDA1拉低到低电平,此时Vgs约等于1.8V,MOS管导通,进一步拉低了SDA1的电压。