两个单片机由于电平不同,串口通信可能会失败,这时候需要通过电平转换电路来解决,本文给出了两种方法,一种是通过三极管搭建,另一种是 MOS 管搭建,在硬件工程师的笔试中也经常会出现这样的题目。
3.3V 单片机和 5V 单片机通信的思路
MOS 管转换电路
工作原理:
1、当 3V3 单片机发送逻辑 1,即 3V3_TX=3.3V,Ugs=0V,MOS 管截止,5V_RX 通过 R2 上拉到+5V,5V_RX=5V;
2、当 3V3 单片机发送逻辑 0,即 3V3_TX=0V,Ugs=3V,MOS 管导通,5V_RX 会被拉低,5V_RX=0V;
3V3_TX 发送给 5V_RX
那有人说了,5V 的数据怎么发送给 3V3 单片机呢?是不是将信号方向及电源更换即可,我们来看一下。
工作原理:
1、当 5V 单片机发送逻辑 1,即 5V_TX=5V,Ugs=0V,MOS 管截止,3V3_RX 通过 R1 上拉到 3V3,3V3_RX=3.3V;
2、当 5V 单片机发送逻辑 0,即 5V_TX=0V,Ugs=5V,MOS 管导通,3V3_RX 被拉低,所以 3V3_RX=0;
以上分析似乎合情合理,其实如下电路不可用,上面的第 2 点其实是没有问题的,主要是第 1 点,当 MOS 管截止时,5V_TX 的 5V 电压会经过 MOS 管的体二极管到达 3V3_RX,使 3V3_RX 的电压高于 3.3V(4V 多,取决于体二极管的导通压降)。这样的话,一方面 4V 多的电压与 3.3V 有压差,经过 R1 电阻会有耗电;另一方面,4V 多的电压也可能损坏 3.3V 单片机的 RX 管脚。
此电路不可用
利用仿真软件仿真,可以看到 MOS 管截止时,输出是 4.44V,明显高于 3.3V,验证了上述的观点。
仿真上述不可用电路
那如何设计 5V 发送到 3.3V 单片机呢?其实也简单,两个器件搞定,如下是电路图。
1、5V_TX=5V 时,二极管 D1 截止,3V3_RX=3.3V;
2、5V_TX=0V 时,二极管 D1 导通,3V3_RX≈0.6V;实际 3V3_RX 是多少,取决于 D1 的正向导通压降,因为要得到更低的电压,一般 D1 选择肖特基二极管,肖特基优点就是导通压降小。
5V_TX 发送给 3V3_RX
三极管转换电路
工作原理:
1、当 3V3 单片机发送逻辑 1,即 3V3_TX=3.3V,NPN 三极管截止,5V_RX 通过 R2 上拉到+5V,5V_RX=5V;
2、当 3V3 单片机发送逻辑 0,即 3V3_TX=0V,NPN 三极管导通,5V_RX 会被拉低,所以 5V_RX=0V;
3V3_TX 发送给 5V_RX
利用三极管,5V 单片机发送给 3.3V 单片机,是不是电源和信号互换就可以,和 MOS 管电路一样,如下电路同样不能用。
原因是当 5V_TX 为 5V 时,发射极反偏,但是 5V 通过电阻 R1 由三极管的基极到达三极管的集电极,造成集电极正偏,和 MOS 管电路一样,使 3V3_RX 电压高于 3.3V(4V 多),大家可以仿真一下,这里我就不仿真了。
此电路不可用
如下,给出了 5V 单片机向 3.3V 单片机发送的电路图,用两个 NPN 三极管搭建。
工作原理:
1、当 5V 单片机发送逻辑 1,即 5V_TX=5V,Q1 导通,Q2 的基极被拉低,Q2 截止,所以 3V3_RX=3.3V;
2、当 5V 单片机发送逻辑 0,即 5V_TX=0V,Q1 截止,Q2 导通,所以 3V3_RX=0V;
5V_TX 发送给 3V3_RX
可以看到,我并没有画两个 NMOS 管搭建 5V 单片机向 3.3V 单片机发送的电路,其实将上图中的三极管换成 NMOS 管,就能实现,在实际的电路设计中,为减少成本,应尽量考虑用较少的器件搭电路,所以一般就用二极管方案。