選單

UART波形詳解,看完即懂!

UART(Universal Asynchronous Receiver/Transmitter)是一種

非同步全雙工序列通訊

協議,由Tx和Rx兩根資料線組成,因為沒有參考時鐘訊號,所以通訊的雙方必須約定

串列埠波特率、資料位寬、奇偶校驗位、停止位

等配置引數,從而按照相同的速率進行通訊。

非同步通訊以一個字元為傳輸單位,通訊中兩個字元間的時間間隔多少是不固定的,然而在同一個字元中的兩個相鄰位間的時間間隔是固定的。當波特率為9600bps時,傳輸一個bit的時間間隔大約為104。16us;波特率為115200bps時,傳輸一個bit的時間間隔大約為8us。

UART波形詳解,看完即懂!

資料傳送速率用波特率來表示,即每秒鐘傳送的二進位制位數。例如資料傳送速率為120字元/秒,而每一個字元為10位(1個起始位,7個數據位,1個校驗位,1個結束位),則其傳送的波特率為10×120=1200字元/秒=1200波特。

資料通訊時序圖:

UART波形詳解,看完即懂!

其中各位的意義如下:

起始位:

先發出一個邏輯”0”訊號,表示傳輸字元的開始;

資料位:

可以是5~8位邏輯”0”或”1”;如ASCII碼(7位),擴充套件BCD碼(8位);小端傳輸,即LSB先發,MSB後發;

校驗位:

資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗);

停止位:

它是一個字元資料的結束標誌。可以是1位、1。5位、2位的高電平(用於雙方同步,停止位時間間隔越長,容錯能力越強);

空閒位:

處於邏輯“1”狀態,表示當前線路上沒有資料傳送;注:非同步通訊是按字元傳輸的,接收裝置在收到起始訊號之後只要在一個字元的傳輸時間內能和傳送裝置保持同步就能正確接收。下一個字元起始位的到來又使同步重新校準(依靠檢測起始位來實現傳送與接收方的時鐘自同步的)。

圖-1 起始位和停止位

UART波形詳解,看完即懂!

圖-2 資料位

傳輸“A”

上圖是uart協議傳輸一個”A”字元透過示波器的uart解碼而得到的波形示意圖。根據此圖來介紹一下uart的一些基本引數。

波特率:

此引數容易和位元率混淆,其實他們是由區別的。但是我認為uart中的波特率就可以認為是位元率,即每秒傳輸的位數(bit)。一般選波特率都會有9600,19200,115200等選項。其實意思就是每秒傳輸這麼多個位元位數(bit)。

起始位:

先發出一個邏輯”0”的訊號,表示傳輸資料的開始。

資料位:

可以選擇的值有5,6,7,8這四個值,可以傳輸這麼多個值為0或者1的bit位。這個引數最好為8,因為如果此值為其他的值時當你傳輸的是ASCII值時一般解析肯定會出問題。理由很簡單,一個ASCII字元值為8位,如果一幀的資料位為7,那麼還有一位就是不確定的值,這樣就會出錯。

校驗位:

資料位加上這一位後,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗),以此來校驗資料傳送的正確性。就比如傳輸“A”(01000001)為例。

1、當為奇數校驗:”A”字元的8個bit位中有兩個1,那麼奇偶校驗位為1才能滿足1的個數為奇數(奇校驗)。圖-1的波形就是這種情況。

2、當為偶數校驗:”A”字元的8個bit位中有兩個1,那麼奇偶校驗位為0才能滿足1的個數為偶數(偶校驗)。

此位還可以去除,即不需要奇偶校驗位。

停止位:

它是一幀資料的結束標誌。可以是1bit、1。5bit、2bit的空閒電平。可能大家會覺得很奇怪,怎麼會有1。5位~沒錯,確實有的。所以我在生產此uart訊號時用兩個波形點來表示一個bit。這個可以不必深究。。。

空閒位:

沒有資料傳輸時線路上的電平狀態。為邏輯1。

傳輸方向:

即資料是從高位(MSB)開始傳輸還是從低位(LSB)開始傳輸。比如傳輸“A”如果是MSB那麼就是01000001(如圖-2),如果是LSB那麼就是10000010(如下圖的圖-4)

uart傳輸資料的順序就是:剛開始傳輸一個起始位,接著傳輸資料位,接著傳輸校驗位(可不需要此位),最後傳輸停止位。這樣一幀的資料就傳輸完了。接下來接著像這樣一直傳送。在這裡還要說一個引數。

幀間隔:

即傳送資料的幀與幀之間的間隔大小,可以以位為計量也可以用時間(知道波特率那麼位數和時間可以換算)。比如傳送”A”完後,這為一幀資料,再傳”B”,那麼A與B之間的間隔即為幀間隔。

UART波形詳解,看完即懂!

圖-3

圖-4

上兩圖和下兩圖傳送的資料和波特率都是一樣的,但是有幾個引數是故意設定反了從而形成對比。有助於更深入的理解UART。

UART波形詳解,看完即懂!

文章整理自麵包板社群