寫在前面:兩個單片機由于電平不同,串口通信可能會失敗,這時候需要通過電平轉換電路來解決,本文給出了兩種方法,一種是通過三極管搭建,另一種是MOS管搭建,在硬件工程師的筆試中也經(jīng)常會出現(xiàn)這樣的題目。
3.3V單片機和5V單片機通信的思路
3.3V單片機通信方向5V單片機發(fā)送邏輯1(對應電壓3.3V)→接受邏輯1(對應電壓5V)發(fā)送邏輯0(對應電壓0V)→接受邏輯0(對應電壓0V)接受邏輯1(對應電壓3.3V)←發(fā)送邏輯1(對應電壓5V)接受邏輯0(對應電壓0V)←發(fā)送邏輯0(對應電壓0V)
MOS管轉換電路
工作原理:
1、當3V3單片機發(fā)送邏輯1,即3V3_TX=3.3V,Ugs=0V,MOS管截止,5V_RX通過R2上拉到+5V,5V_RX=5V;
2、當3V3單片機發(fā)送邏輯0,即3V3_TX=0V,Ugs=3V,MOS管導通,5V_RX會被拉低,5V_RX=0V;
3V3_TX發(fā)送給5V_RX
那有人說了,5V的數(shù)據(jù)怎么發(fā)送給3V3單片機呢?是不是將信號方向及電源更換即可,我們來看一下。
工作原理:
1、當5V單片機發(fā)送邏輯1,即5V_TX=5V,Ugs=0V,MOS管截止,3V3_RX通過R1上拉到3V3,3V3_RX=3.3V;
2、當5V單片機發(fā)送邏輯0,即5V_TX=0V,Ugs=5V,MOS管導通,3V3_RX被拉低,所以3V3_RX=0;
以上分析似乎合情合理,其實如下電路不可用,上面的第2點其實是沒有問題的,主要是第1點,當MOS管截止時,5V_TX的5V電壓會經(jīng)過MOS管的體二極管到達3V3_RX,使3V3_RX的電壓高于3.3V(4V多,取決于體二極管的導通壓降)。這樣的話,一方面4V多的電壓與3.3V有壓差,經(jīng)過R1電阻會有耗電;另一方面,4V多的電壓也可能損壞3.3V單片機的RX管腳。
此電路不可用
利用仿真軟件仿真,可以看到MOS管截止時,輸出是4.44V,明顯高于3.3V,驗證了上述的觀點。
仿真上述不可用電路
那如何設計5V發(fā)送到3.3V單片機呢?其實也簡單,兩個器件搞定,如下是電路圖。
1、5V_TX=5V時,二極管D1截止,3V3_RX=3.3V;
2、5V_TX=0V時,二極管D1導通,3V3_RX≈0.6V;實際3V3_RX是多少,取決于D1的正向導通壓降,因為要得到更低的電壓,一般D1選擇肖特基二極管,肖特基優(yōu)點就是導通壓降小。
5V_TX發(fā)送給3V3_RX
三極管轉換電路
工作原理:
1、當3V3單片機發(fā)送邏輯1,即3V3_TX=3.3V,NPN三極管截止,5V_RX通過R2上拉到+5V,5V_RX=5V;
2、當3V3單片機發(fā)送邏輯0,即3V3_TX=0V,NPN三極管導通,5V_RX會被拉低,所以5V_RX=0V;
3V3_TX發(fā)送給5V_RX
利用三極管,5V單片機發(fā)送給3.3V單片機,是不是電源和信號互換就可以,和MOS管電路一樣,如下電路同樣不能用。
原因是當5V_TX為5V時,發(fā)射極反偏,但是5V通過電阻R1由三極管的基極到達三極管的集電極,造成集電極正偏,和MOS管電路一樣,使3V3_RX電壓高于3.3V(4V多),大家可以仿真一下,這里我就不仿真了。
此電路不可用
如下,給出了5V單片機向3.3V單片機發(fā)送的電路圖,用兩個NPN三極管搭建。
工作原理:
1、當5V單片機發(fā)送邏輯1,即5V_TX=5V,Q1導通,Q2的基極被拉低,Q2截止,所以3V3_RX=3.3V;
2、當5V單片機發(fā)送邏輯0,即5V_TX=0V,Q1截止,Q2導通,所以3V3_RX=0V;
5V_TX發(fā)送給3V3_RX
可以看到,我并沒有畫兩個NMOS管搭建5V單片機向3.3V單片機發(fā)送的電路,其實將上圖中的三極管換成NMOS管,就能實現(xiàn),在實際的電路設計中,為減少成本,應盡量考慮用較少的器件搭電路,所以一般就用二極管方案。
今天的文章到這里就結束了。