1. 程式人生 > >5V到3V3的電平轉換-串列埠通訊

5V到3V3的電平轉換-串列埠通訊

轉載自http://blog.sina.com.cn/s/blog_7880f98301014fmj.html

一、電平轉換電路

下面來分析一下電路的設計思路:

http://bbs.ednchina.com/BLOG_ARTICLE_244240.HTM

首先宣告一下:這個電路是從3V3的角度考慮的!


1、接收通道


我們首先來明確一下資料流向(其實就是電平驅動方向),接收通道是由5V方驅動的(Source),3V3方只是取電平(Sink),因此TXD5V作為此通道的輸入方,RXD3V3作為通道的輸出方。


我們知道,三極體(開關型)集電極輸出驅動能力不錯,我們就設計為集電極輸出;但是,只有一個三極體是不行的,因為集電極輸出的時候,基極電平和集電極邏輯是相反的;那麼,加一個反相器?沒必要,那是另外一種電平轉換的方法了,我們只需要再使用一個三極體,基極接前級輸出就可以了。這樣,邏輯轉換就完成了,當輸入低電平時,Q1截止,集電極輸出高電平,Q2導通,集電極輸出低電平。同理,高電平分析是一樣的。


邏輯轉換完成了,那麼就是電平的問題了。這很好解決,輸入方為5V邏輯,那麼就給它一個VCC5,3V3邏輯高電平需要一個3V3,那麼就給一個VCC3V3;OK!


2、傳送通道


分析完接收通道,傳送通道的原理其實也是一樣的,就不詳細介紹了。



3、結論


其實如果稍微熟悉電子電路知識的人看來,這個電路實在太簡單,正因為如此,我才要強調,基礎很重要!否則,一個系統的設計會在這些小地方卡住。


二、電平問題:

微控制器手冊————電氣特性

常用邏輯電平:12V,5V,3.3V;

1.TTL電平:
輸出高電平>2.4V,輸出低電平<0.4V。在室溫下,一般輸出高電平是3.5V,輸出低電平是0.2V。最小輸入高電平和低電平:輸入高電平>=2.0V,輸入低電平<=0.8V,噪聲容限是0.4V。

2.CMOS電平:
'1'邏輯電平電壓接近於電源電壓,'0'邏輯電平接近於0V。而且具有很寬的噪聲容限。

3.首先要知道以下幾個概念的含義:

  1:輸入高電壓(Vih): 保證邏輯閘的輸入為高電平時所允許的最小輸入高電平,當輸入電平高於Vih時,則認為輸入電平為高電平。

  2:輸入低電壓(Vil):保證邏輯閘的輸入為低電平時所允許的最大輸入低電平,當輸入電平低於Vil時,則認為輸入電平為低電平。

  3:輸出高電壓(Voh):保證邏輯閘的輸出為高電平時的輸出電平的最小值,邏輯閘的輸出為高電平時的電平值都必須大於此Voh。

  4:輸出低電壓(Vol):保證邏輯閘的輸出為低電平時的輸出電平的最大值,邏輯閘的輸出為低電平時的電平值都必須小於此Vol。

  5:閥值電平電壓(Vt): 數字

電路晶片都存在一個閾值電壓,就是電路剛剛勉強能翻轉動作時的電平。

三、相關電路


中級會員——樓上的方法很哈,我之前用MOS管打過,原理差不多


高階會員

當你使用3.3V的微控制器的時候,電平轉換就在所難免了,經常會遇到3.3轉5V或者5V轉3.3V的情況,這裡介紹一個簡單的電路,他可以實現兩個電平的相互轉換(注意是相互哦,雙向的,不是單向的!).電路十分簡單,僅由3個電阻加一個MOS管構成,電路圖如下:


上圖中,S1,S2為兩個訊號端,VCC_S1和VCC_S2為這兩個訊號的高電平電壓.另外限制條件為:
1,VCC_S1<=VCC_S2.
2,S1的低電平門限大於0.7V左右(視NMOS內的二極體壓降而定).
3,Vgs<=VCC_S1.
4,Vds<=VCC_S2
對於3.3V和5V/12V等電路的相互轉換,NMOS管選擇AP2306即可.原理比較簡單,大家自行分析吧!此電路我已在多處應用,效果很好.

相關推薦

5V到3V3的電平轉換-串列通訊

轉載自http://blog.sina.com.cn/s/blog_7880f98301014fmj.html 一、電平轉換電路 下面來分析一下電路的設計思路: http://bbs.ednchina.com/BLOG_ARTICLE_244240.HTM 首先宣

微控制器電平轉換電路5V 3.3V串列通訊

很早的時候除錯串列埠通訊遇到微控制器和模組電壓不匹配,訊號無法傳輸,所以整理後來遇到的轉換電路。 1.最簡單的用轉換電平IC,可以去淘寶上搜索,有四路的有兩路的,比如這個雙向電平轉換模組 2.根據接觸

UART串列通訊淺談之(三)--字元與資料的轉換

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/solar_Lan/article/details/78093692 學串列埠通訊的應用主要是實現微控制器和電腦之間的資訊互發,可以用電腦控制微控制器的一些資訊,可以把微控制器的一些資訊狀況發給電腦

【C# 4】文字轉換串列通訊中字串string和位元組陣列byte[]、ASCII的轉換

string轉byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );byte[]轉string:string str = System.Text.Encoding.Default.GetString ( byteArra

Quectel GSM模組串列通訊電平匹配

在硬體設計串列埠通訊時候,經常會出現電平匹配的問題.如今,在自己的GSM應用產品設計中也出現這樣的問題. 參考Quectel GSM模組串的硬體設計datasheet,可以找到相應的解決方法. 3.3V連線方法: 5V連線方法:

MFC串列通訊例項

參考MSComm控制元件的用法和函式說明。裡面講得也算詳細了。所以這裡直接獻上原始碼示例。 github下載地址 CSDN下載地址 效果如圖: 需要注意的是: 1.如果想同時recv/send,則必須加個執行緒。 2.奇偶校驗中,引數設定為,無(n),偶校驗(o),

C++實現串列通訊上位機軟體

串列埠使用的是RS232匯流排進行通訊,通訊方式是半雙工。有兩種方式可以實現串列埠通訊,一種是通過ActiveX控制元件這種方法程式簡單,但欠靈活。第二個是可以通過呼叫Windows的API函式,本例程通過第二種方式。 一般通過四步來完成通訊(1)開啟串列埠(2)配置串列埠(3)讀寫串列埠(4)

Boost串列通訊第一課 boost::asio::serial_port基本使用

boost庫有一個asio,支援串列埠通訊。步驟:  1、產生一個boost::asio::io_service(前攝模式,類似於完成埠,不過,可以針對不同IO物件)  2、構造一個boost::asio::serial_port,有兩種方法:      (一)boost::asio::serial_po

CnComm多執行緒串列通訊類的封裝實現v0.02

 在CnComm多執行緒串列埠通訊類的封裝實現一文中實現了對於cncomm多執行緒串列埠類的簡單封裝,新版本將串列埠管理類改成了工廠類和單例類,實現了對於動態擴充套件新的串列埠,新的版本符合開閉原則。 1.串列埠管理類 #ifndef _COMM_MANAGE_H_ #def

Boost串列通訊第二課 阻塞問題

場景         按照第一課提供的程式碼,在阻塞等待時間多長,會導致Win10系統崩潰,崩潰的資訊如下: 1)第一種情形 終止程式碼:DRIVER_IRQL_NOT_LESS_EQUAL2)第二種情形  wd

在AT151上面測試串列通訊

如下圖所示,分別用putty開啟兩個視窗,一個是串列埠開啟的,另外一個是網口連線的,分別是接收和傳送,硬體上面RXD和TXD進行短接進行資料迴流。 使用microcom工具,ctrl+x可以退出 參考文件 https://www.cnblogs.com/chenfulin5/p/6089

C語言RL78 serial bootloader和C#語言bootloader PC端串列通訊程式

            瞭解更多關於bootloader 的C語言實現,請加我QQ: 1273623966 (驗證資訊請填 bootloader),歡迎諮詢或定製bootloader(線上升級程式)。   前段時間完成的hyperboot_rl78, 是專門為Renesas 16-bit微控制器RL78 通

【C語言實現串列通訊知識點整理(四)】關於執行緒和程序

轉載:https://www.cnblogs.com/fuchongjundream/p/3829508.html 因為在外部檔案中呼叫結構體沒有用extern修飾,導致獲取不到正確的值,一直糾結線上程上。現在大概總結執行緒和程序的特點: 概念 1、程序(process) 狹義定義:

【C語言實現串列通訊知識點整理(三)】串列開啟、設定資料成功後進行資料讀寫

int OpenDev(char *Dev) { int fd = open(Dev,O_RDWR | O_NOCTTY | O_NONBLOCK); if(-1 == fd) { perror("Can't Open Serial Port"); return -1;

【C語言實現串列通訊知識點整理(二)】遇到的問題整理(待續....)

1.c編譯錯誤--error:stray \357 in program UTF-8編碼問題。UTF-8編碼有BOM和無BOM格式。BOM,ByteOrderMark(位元組標記順序),表明使用UTF8來進行編碼。UTF-8的BOM通常為3個位元組EF BB BF。轉換成對應的字元檢視,就是‘\

【C語言實現串列通訊知識點整理(一)】執行緒、開啟串列、設定波特率、設定校驗位、互斥鎖等實現基本的通訊

  部分程式碼借鑑地址:https://blog.csdn.net/wangqingchuan92/article/details/73497354/ 謝謝! 1.建立執行緒線上程內進行串列埠之間的收發 void CREAT_pthread(void) { pthr

arduino學習系列——串列通訊

今天學習了串列埠通訊的相關內容,其實就是Serial的一系列函式: Serial.begin(); //開啟串列埠 Serial.end(); //關閉串列埠 Serial.available();//判斷串列埠緩衝器是否有資料裝入 Serial.read(); //讀取

STM32系統學習——USART(串列通訊

串列埠通訊是一種裝置間非常常用的序列通行方式,其簡單便捷,大部分電子裝置都支援。 一、物理層 常用RS-232標準,主要規定了訊號的用途、通訊介面以及訊號的電平標準。     “DB9介面”之間通過串列埠訊號線建立起連線,串列埠訊號線使用”RS-232標準“傳

UART串列通訊淺談之(二)--暫存器設定

1.1 通訊的三種基本型別 常用的通訊通常可以分為單工、半雙工、全雙工通訊。 單工就是指只允許一方向另外一方傳送資訊,而另一方不能回傳資訊。比如我們的電視遙控器,我們的收音機廣播等,都是單工通訊技術。 半雙工是指資料可以在雙方之間相互傳播,但是同一時刻只能其中一方發給另外一方,

UART串列通訊淺談之(一)--基礎概述

通訊按照傳統的理解就是資訊的傳輸與交換。UART(Universal Asynchronous Receiver/Transmitter,即通用非同步收發器)序列通訊是微控制器最常用的一種通訊技術,通常用於微控制器和電腦之間以及微控制器和微控制器之間的通訊。 以下我們以STC98C52微控制器為