当两个电源电压不同的芯片需要通信时可以采用两种方案:
1. 芯片间通过二极管连接,并两个芯片输出端外挂一个上拉电阻。这样的弊端是只能单端通信,且由于二极管压降,无法准确输出低电平。
2. 芯片间通过NMOS连接,两个芯片输出端外挂一个上拉电阻。如下示例:
由于第一种方案的缺陷,除非特殊要求,一般不使用,所以这里主要分析第二种方案。
芯片通信过程
方向1: 芯片A 向 芯片B 发送数据
1. 当A输出高电平时,Q1栅极(G)和源极(S)均为3.3V,Vgs = 0V,NMOS截止,芯片B由上拉电阻拉高至高电平,从而实现A发送高电平,B接收高电平。
2. 当A输出低电平时,NMOS的寄生二极管导通,电流从B芯片输出端上拉的3.3V通过A芯片流至GND,此时虽然二极管的压降为0.7V,源极电压被钳至在0.7V,但是栅极为3.3V大于源极并且Vgs = 2.6V,超过NMOS导通阈值电压,NMOS导通,电流从漏极流向源极,芯片B会收到A传来的低电平。
方向2:芯片B 向 芯片A 发送数据
1. 当B输出高电平时,Q1栅极(G)和源极(S)均为3.3V,Vgs = 0V,NMOS截止,且寄生二极管阴极电平高于阳极,不导通。芯片A由上拉电阻拉高至高电平,从而实现B发送高电平,A接收高电平。
2. 当B输出低电平时,Vgs = 3.3V,超过NMOS导通阈值电压,NMOS导通,芯片A会收到B传来的低电平。
总结
总而言之,方式2可以实现不同电压的芯片间相互通信,其原理是通过输出低电平导通mos,从而传输信号;而输出高电平则mos管截止,接收方芯片靠上拉电阻提供高电平。