1. 程式人生 > >MCU和模組之間的電平轉換電路

MCU和模組之間的電平轉換電路

電子工程師在電路設計過程中,經常會碰到處理器MCU的I/O電平與模組的I/O電平不相同的問題,為了保證兩者的正常通訊,需要進行電平轉換。以下,我們將針對電平轉換電路做出詳細的分析。

  對於多數MCU,其引腳基本上是CMOS結構,因此輸入電壓範圍是:高電平不低於0.7VCC,低電平不高於0.3VCC。

  但在介紹電平轉換電路之前,我們需要先來了解以下幾點:

  ⒈解決電平轉換問題,最根本的就是要解決電平的相容問題,而電平相容原則有兩條:①VOH>VIH②VOL<vil
   

 
  圖1閾值電壓
  
  ⒉對於多電源系統,某些器件不允許輸入電平超過電源電壓,針對有類似要求的器件,電路上應適當做些保護。
  
  ⒊電平轉換電路會影響通訊速度,所以使用時應當注意通訊速率上的要求。
  
  ⒋不同轉換方式的驅動能力有所不同,在選擇上應適當地加以考慮。
  
  ⒌當需要轉換的路數較多時,轉換方式選擇不當將會導致元器件較多,或佈線不方便。
  
  下面通過致遠電子MiniARM核心板的例項來給大家分享常用的電平轉換電路方法。
  
  1.電阻分壓法
  
  電阻分壓法是最簡便的一種方法,該電路的工作方式是對邏輯電平高的進行分壓。以MiniARM核心板與GPRS模組通訊為例。MiniARM核心板IO電平為3.3V,而GPRS模組的IO電平為2.8V,兩者之間通訊時可以用圖2來實現電平匹配。
  

 
  圖2電阻分壓法
  
  對電阻分壓的轉換電路進行測試,轉換後波形如圖3所示。
  

 
  圖3電平轉換波形
  
  2.二極體鉗位法
  
  使用二極體來實現電平匹配,以MiniARM核心板與GPRS模組為例。
  

 
  圖4二極體鉗位法
  
  當GPRS模組TXD為高電平時,由於二極體D2的鉗位作用,MiniARM的RXD會得到2.8V+VF高電平電壓。
  
  當MiniARM的TXD為高電平時,由於二極體D1的鉗位作用,GPRS模組的RXD會得到2.8V+VF高電平電壓.
  
  使用該電路應注意:
  
  1.MiniARM的TXD輸出端串聯電阻R1的作用是限流,同時R1會限制兩者之間的通訊速度。
  
  2.MiniARM的TXD輸出端會通過二極體D1向GPRS模組的VDD_EXT電源輸入電流,防止VDD_EXT過壓。
  
  3.GPRS模組TXD的VOL最大值為0.1V,當輸出低電平時,由於二極體的鉗位作用,MiniARM的RXD的電壓是0.1V+VF,該低電壓應低於VIL。
  
  先為大家介紹以上兩種電平轉換電路,後續將介紹其他幾種方法。

       3.電晶體+上拉電阻



  通過雙極性電晶體,集電極由上拉電阻接到電源,輸入的高電平的電壓值就是電源電壓值。以MiniARM核心板與GPRS模組為例,如圖1所示



  圖1電晶體電平轉換電路

  當GPRS模組TXD為高電平時,由於Q1的Ve=Vb,三極體截止,上拉電阻R1將MiniARM的RXD拉高到高電平。

  當GPRS模組TXD為低電平時,由於Q1的Ve<vb,三極體導通,miniarm的rxd被電晶體q1拉低到0.1v+uce的低電平。
   
  當MiniARM的TXD為高電平時,由於Q2的Ve>Vb,三極體截止,上拉電阻R5將GPRS模組的RXD拉到高電平。
  
  當MiniARM的TXD為低電平時,由於Q2的Ve<vb,三極體導通,gprs模組的rxd被電晶體q2拉低到0.1v+uce的低電平。
   
  在選擇集電極上拉電阻的阻值時,需要考慮輸入的通訊速率和上拉電阻上的電流消耗。減小上拉電阻阻值,可以提高通訊速度,獲取更短的開關時間,但卻增大了低電平時電阻上的電流消耗。增大電阻阻值,開關時間延長,通訊速度降低。
  
  4.MOS管+上拉電阻
  
  採用MOSFET器件實現電平轉換,該設計方法跟方法3相似。
  

 
  圖2MOSFET電平轉換電路
  
  當GPRS模組TXD為高電平時,由於Ugs=0,NMOS截止,上拉電阻將MiniARM的RXD拉高到高電平。
  
  當GPRS模組TXD為低電平時,由於Ugs>0,Uds>0,NMOS導通,MiniARM的RXD會得到電壓值為0.1V+Uds的低電平。
  
  此外,使用該電路需要注意:
  
  1.VDD_EXT≤VCC_MCU
  
  2.MiniARM的低電平門限應大於NMOS管壓降+0.1V。
  
  3.Vgs≤VDD_EXT
  
  4.Vds≤VCC_MCU
  
  5.74xHCT系列晶片(3.3V轉5V)
  
  相容5VTTL電平的CMOS器件,都可以用作3.3V轉5V的電平轉換晶片。這是由於3.3VCMOS的電平剛好和5VTTL電平相容(如圖3所示)。採用這種方法可選擇廉價的74xHCT系列的晶片來實現與TTL相容。
  

 
  圖3 5V與3.3V閾值電壓
  
  6.專用電平轉換晶片
  
  採用專用的電平轉換晶片(如74LVC16245、SN74LVC1T45、SN74LVC2T45)。通過電平轉換晶片,能夠使在晶片所能承受的不同電壓節點之間進行靈活的雙向電平轉換。該方法具有較高的靈活性,但成本較高。
文章連結:中國儀表網 http://www.ybzhan.cn/Tech_news/Detail/143140.html

相關推薦

MCU模組之間電平轉換電路

電子工程師在電路設計過程中,經常會碰到處理器MCU的I/O電平與模組的I/O電平不相同的問題,為了保證兩者的正常通訊,需要進行電平轉換。以下,我們將針對電平轉換電路做出詳細的分析。  對於多數MCU,其引腳基本上是CMOS結構,因此輸入電壓範圍是:高電平不低於0.7VCC,

3.3V 5V電平轉換電路分享

一個IIC的5V和3.3V電平轉換的經典電路分享 在電平轉換器的操作中要考慮下面的三種狀態: 沒有器件下拉匯流排線路。“低電壓”部分的匯流排線路通過上拉電阻Rp 上拉至3.3V。 MOS-FET 管的門極和源極都是3.3V, 所以它的VGS 低於閥值

C# DataTable List之間相互轉換的方法

dbn execute 屬性 ins 集合 方法 summary efault getprop 一、List<T>/IEnumerable轉換到DataTable/DataView private DataTable ToDataTable<T>(

byte[]數組int之間轉換

san bar public ava clas href byte[] bytes 記錄 這裏簡單記錄下兩種轉換方式: 第一種: 1、int與byte[]之間的轉換(類似的byte short,long型) [java] view plain copy /*

Android 單位dppx之間相互轉換

style pan static float logs ati col return roi public class DensityUtil { /** * 根據手機的分辨率從 dp 的單位 轉成為 px(像素) */

ios開發之--CGRect/CGSize/CGPoint/CGVector/CGAffineTransform/UIEdgeInsets/UIOffsetNSString之間轉換

距離 轉換 nsstring transform ans ins -c cto cnblogs 僅做記錄,一個函數和字符串之間的互相轉換 方法如下: UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UI

移動端適配方案以及rempx之間轉換

場景 adding 區間 tin 每一個 left ios7 分辨率 user 背景 開發移動端H5頁面 面對不同分辨率的手機 面對不同屏幕尺寸的手機 視覺稿 在前端開發之前,視覺MM會給我們一個psd文件,稱之為視覺稿。 對於移動端開發而言,為了做到頁面高

PNGPVR之間互相轉換的腳本

path ken 文件 free .gz mar lock packer files 項目經常會將png和pvr之間互相轉換,這裏mark一個腳本,會將當前目錄下的文件全部批量轉換 png轉換成pvr @echo off path %path%;"C:\Program

Android開發中dp,sppx之間轉換

font col art gpo ati pan ext 同時 style 本文轉載於 http://blog.csdn.net/student9128/article/details/53932470 眾所周知,在Android開發中dp和px,sp和px之間的轉換時必不

Android 圖片文件Bitmap之間轉換

對象 如果 path str return stack tac mapfile try String filePath="c:/01.jpg"; Bitmap bitmap=BitmapFactory.decodeFile(filePath); 如果圖片過

關於TCPMQTT之間轉換

ima 基礎 說了 href 感覺 部分 -c 聯網 一點 現在物聯網流行的就是MQTT 其實MQTT就是在TCP的基礎上建立了一套協議 可以看這個,本來我自己想用Wireshark監聽一下,不過百度一搜索一大把,我就不測試了 https://blog.csdn.net

Stream byte[] 之間轉換

Stream 和 byte[] 之間的轉換 一. 二進位制轉換成圖片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pict

字串UTF-8GBK之間轉換以及判定

一、判定字串是否是UTF-8的編碼 bool is_str_utf8(const char* str) { unsigned int nBytes = 0;//UFT8可用1-6個位元組編碼,ASCII用一個位元組 unsigned char chr = *str; boo

陣列字串之間轉換

1、陣列轉換為字串         將陣列元素以逗號隔開連結為字串 var a,b; a=new Array(1,2,3,4); b=a.join(","); 2、字串轉換為陣列         

Byte[]BASE64之間轉換操作

 Byte[]和BASE64之間的轉換操作 (1) static void Main(string[] args) { string factString = "中華人民共和國"; byte[] myByte; string Base64Str;

php中陣列與變數字串之間轉換

 陣列函式_陣列與變數,字串之間的轉換:   1.list($var1,$val2...)   2.extract($arr, $flag)   3.compact(str1,str2...)   4.explode($delimiter, $str

使用json-lib進行JavaJSON之間轉換

lar 泛型 and bean etc log dynamo fir 地址 1. json-lib是一個java類庫,提供將Java對象,包括beans, maps, collections, java arrays and XML等轉換成JSON,或者反向轉換

C# Stream byte[] 之間轉換(檔案流的應用)

一. 二進位制轉換成圖片 MemoryStream ms = new MemoryStream(bytes); ms.Position = 0; Image img = Image.FromStream(ms); ms.Close(); this.pictureBox1.Image 二. C#

Spark 中RDDDataSet之間轉換

什麼是RDD:Spark提供了一個抽象的彈性分散式資料集,是一個由叢集中各個節點以分割槽的方式排列的集合,用以支援平行計算。RDD在驅動程式呼叫hadoop的檔案系統的時候就建立(其實就是讀取檔案的時候就建立),或者通過驅動程式中scala集合轉化而來,使用者也可以用spar

java新手:字串陣列、字元陣列字串之間轉換

(1)字串和字元陣列的轉化 // 字串轉化成字元陣列 String str = "abcdefg"; char[] ch = str.toCharArray(); //輸出a System.out.println(ch[0]); //字元陣列