- 前言 -
開發(fā)中經(jīng)常用到串口通訊,串即串行,顧名思義,是指數(shù)據(jù)在一根數(shù)據(jù)線上按照二進制的數(shù)位,從低到高位一位一位的傳輸。單片機中的串口有UART,USART。
UART/USART 在許多 DIY 電子項目中用于將 GPS 模塊、藍牙模塊、 RFID 讀卡器模塊等連接到Raspberry Pi、Arduino 或其他微控制器。
- UART -
UART介紹:
我們今天要介紹的UART,全稱Universal Asynchronous
Receiver/Transmitter,通用異步收發(fā)傳輸器。使用TTL電平信號,和電腦的COM口(遵循RS-232)不同。它們之間不能直接通訊,需要在之間加入轉(zhuǎn)換器(如MAX232)。
Tips:
采用二進制來表示數(shù)據(jù)時:
TTL(晶體管-晶體管邏輯電平)電平信號規(guī)定,+5V等價于邏輯“1”,0V等價于邏輯“0”。
RS-232規(guī)定邏輯“1”的電平為-5V~-15 V,邏輯“0”的電平為+5 V~+15 V
UART工作原理:
和其它串口一樣,數(shù)據(jù)按照二進制從低位到高位一位一位的傳輸,能將要傳輸?shù)臄?shù)據(jù)在串行通信與并行通信之間加以轉(zhuǎn)換,能夠靈活地與外部設(shè)備進行全雙工數(shù)據(jù)交換。例如要傳輸一個字節(jié)的數(shù)據(jù)10001110,它是從低位0開始,一位一位的傳輸過去。
在 UART 通信中,兩個 UART 直接相互通信。發(fā)送端將來自控制設(shè)備(如 CPU)的并行數(shù)據(jù)轉(zhuǎn)換為串行形式,接著將其串行傳輸?shù)浇邮斩?,然后接收端將串行?shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù)以供接收設(shè)備使用。
數(shù)據(jù)從一個UART的發(fā)送引腳(Tx) 流向另一個UART的接收(Rx) 引腳:

UART通訊分類:
單工:UART只用Tx或Rx其中一根線進行通訊,也就是只作接收或發(fā)送;
半雙工:UART在同一時間,只用作發(fā)送或接收;
全雙工:UART在發(fā)送的同時,也可以接收;
UART波特率:
UART的波特率是指每秒傳輸?shù)亩M制位數(shù)(單位bps),比如9600bps,意思就是每秒鐘可以傳輸9600個位(bit)。
例如:設(shè)字符傳輸?shù)乃俾蕿?20字符/秒,而每1個字符為10位(bit),那么傳送的波特率為:10位/字符 * 120 字符/秒 = 1200 /秒 = 1200bps。那么每1位二進制位(bit)的傳送時間:
T = 1/1200 = 0.833ms
UART要求發(fā)送與接收兩個UART的波特率配置相同。如果發(fā)送與接收波特率不同,相差很大,接收端采樣點跨過多個電平,造成接收丟失,或者造成波特率不匹配,接收失敗,如下圖:

常見的波特率有9600、115200、128000、256000等。
- 通訊 -
通訊過程:
UART屬于異步傳輸數(shù)據(jù),這意味著沒有時鐘信號將發(fā)送的位輸出與接收的位采樣同步,也就是發(fā)送與接收使用各自的時鐘。發(fā)送端將開始和停止位添加到傳輸?shù)臄?shù)據(jù)幀中,通過數(shù)據(jù)幀中定義的開始位和結(jié)束位,接收端知道何時開始讀取這些位。
每個數(shù)據(jù)幀包含 1 個起始位、5 到 9 個數(shù)據(jù)位(取決于 UART的設(shè)置,如果有奇偶校驗位是5到8,沒有則是5到9)、一個可選的奇偶校驗位和 1 個或 2 個停止位:

起始位:UART 數(shù)據(jù)傳輸線在不傳輸數(shù)據(jù)時通常保持在高電平。要開始發(fā)送數(shù)據(jù)時,發(fā)送端UART先在一個時鐘周期內(nèi)將傳輸線從高電平拉到低電平。當(dāng)接收端UART 檢測到從高到低的電壓轉(zhuǎn)換時,它開始以設(shè)置好的波特率的頻率讀取數(shù)據(jù)幀中的位。
數(shù)據(jù):數(shù)據(jù)幀包含正在傳輸?shù)膶嶋H數(shù)據(jù)。如果使用奇偶校驗位,它可以是 5 位到 8 位。如果不使用奇偶校驗位,則數(shù)據(jù)幀可以是 9 位。在大多數(shù)情況下,首先發(fā)送的數(shù)據(jù)是最低有效位。
校驗:奇偶校驗位是接收端UART 判斷數(shù)據(jù)在傳輸過程中是否發(fā)生變化的一種方式。位會因電磁輻射、不匹配的波特率或長距離數(shù)據(jù)傳輸而發(fā)生改變。接收端 UART 讀取數(shù)據(jù)幀后,檢查數(shù)據(jù)部分值為1的個數(shù)是奇數(shù)還是偶數(shù)。當(dāng)奇偶校驗位與數(shù)據(jù)匹配時,UART 知道傳輸沒有錯誤。
停止:發(fā)送端UART 將數(shù)據(jù)傳輸線從低電平拉到高電平持續(xù)至少兩個位的時間來表示整個數(shù)據(jù)包的傳輸已經(jīng)結(jié)束。
發(fā)送接收過程:
1.UART 從數(shù)據(jù)總線并行接收數(shù)據(jù):

2.發(fā)送 UART 將起始位、奇偶校驗位和停止位添加到數(shù)據(jù)幀:

3.整個數(shù)據(jù)包從發(fā)送 UART 串行發(fā)送到接收 UART。接收 UART 以預(yù)配置的波特率對數(shù)據(jù)線進行采樣:

4.接收 UART 丟棄數(shù)據(jù)幀中的起始位、奇偶校驗位和停止位:

5.接收端 UART 將串行數(shù)據(jù)轉(zhuǎn)換回并行,并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線:

-
微控制器
+關(guān)注
關(guān)注
48文章
8196瀏覽量
160528 -
單片機
+關(guān)注
關(guān)注
6072文章
45267瀏覽量
661166 -
串口通訊
+關(guān)注
關(guān)注
2文章
266瀏覽量
26118 -
UART接口
+關(guān)注
關(guān)注
0文章
124瀏覽量
16252 -
RFID讀卡器
+關(guān)注
關(guān)注
0文章
58瀏覽量
12005
發(fā)布評論請先 登錄
UART通訊過程詳解
通過中斷的方式進行UART的通訊
如何實現(xiàn)基于STM32F103ZET6的UART通訊?
鉅泉(HiTrendtech) HT7017,現(xiàn)貨 UART 通訊接口的高精度單相多功能計量芯片
關(guān)于485通訊轉(zhuǎn)UART通訊
uart通訊問題求助
AB32VG1之UART通訊相關(guān)資料分享
使用ISP Uart為LPC5528 CFPA和CMPA編程流程,IC沒有響應(yīng),Uart通訊失敗的原因?
ARM中基于DMA的高效UART通訊及其應(yīng)用
msp430 UART 通訊寄存器的詳細(xì)解讀
UART通訊模塊介紹
振弦采集模塊UART 通訊協(xié)議
HT7017 是一顆帶 UART 通訊接口的高精度單相多功能計量芯片

UART通訊原理
評論