1 UART協議詳解

2021-10-25 18:27:23 字數 1970 閱讀 5110

一、簡述

通用非同步收發傳輸器(universal asynchronous receiver/transmitter,通常稱作uart)。常用的是序列非同步收發協議,其原理是將傳輸線上的二進位制一位一位地順序傳輸。uart的通訊線路簡單,只需要三根線即可實現兩個裝置之間的傳輸,但是傳輸速率是最慢的。當然兩個裝置使用uart串列埠通訊時,必須先約定好傳輸速率和一些資料位。

二、連線方式

三、通訊協議

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

2、如下是工作模式

對應的含義如下:

停止位:它是乙個字元資料的結束標誌。可以是1位、1.5位、2位的高電平。

空閒位:uart協議規定,當匯流排處於空閒狀態時訊號線的狀態為『1』即高電平。

注:

☆ 波特率:資料傳輸速率使用波特率來表示,單位bps(bits per second),常見的波特率9600bps,115200bps等等,其他標準的波特率是1200,2400,4800,19200,38400,57600。舉個例子,如果串列埠波特率設定為9600bps,那麼傳輸乙個位元需要的時間是1/9600≈104.2us。

☆ 該非同步通訊是按字元傳輸的,接收裝置在收到起始訊號後,只要在乙個字元的傳輸時間內能和傳送裝置保持同步就能正確的接收。下乙個字元起始位的到來又使同步重新校準(依靠檢測起始位來實現傳送方與接收方時鐘能夠同步)。例如我們手機抓取串列埠log時,一般使用的是115200bps,手機是設定好的,pc端抓取的時候如果不是這個波特率就會出現亂碼,就是因為時鐘不同步,導致接收到的資料錯位,無法解析成我們想要的資料。

☆ 位元率:指的是1,0的訊號bit速率。而波特率指的是碼元的速率。因為有些編碼協議標準中,並非只有0和1,如五級編碼就是+-1,+-0.5以及0五個電平碼元,每乙個電平碼元變化代表2個位元位的資料資訊,這種情況的位元率就是波特率的一倍,如果乙個碼元代表的是10bit的資訊,則位元率是波特率的10倍。當然如果協議是每個碼元只代表0和1的,那位元率是等於波特率

四、例項

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

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

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

傳輸方向:即資料是從高位(msb)開始傳輸還是從低位(lsb)開始傳輸。比如傳輸「a」如果是msb那麼就是01000001(如上圖),如果是lsb那麼就是10000010(如下圖)。uart傳輸資料的順序就是:剛開始傳輸乙個起始位,接著傳輸資料位,接著傳輸校驗位(可不需要此位),最後傳輸停止位。這樣一幀的資料就傳輸完了。接下來接著像這樣一直傳送。

五、**相關

以串列埠log為例。我們使用的tx:18  rx:19。

對應原理圖:

**裡配置資訊

UART協議詳解

uart簡介 通用非同步收發傳輸器 universal asynchronous receiver transmitter 通常稱作uart。uart通訊在工作中相當常見,專案中需要生成uart訊號,在部落格中記錄下。uart是非同步通訊,因為它只有一根線就可以資料的通訊。不像spi,i2c等同步傳...

UART協議詳解

uart使用的是 非同步,序列通訊。序列通訊是指利用一條傳輸線將資料一位位地順序傳送。特點是通訊線路簡單,利用簡單的線纜就可實現通訊,降低成本,適用於遠距離通訊,但傳輸速度慢的應用場合。非同步通訊以乙個字元為傳輸單位,通訊中兩個字元間的時間間隔多少是不固定的,然而在同乙個字元中的兩個相鄰位間的時間間...

UART協議詳解

通用非同步收發傳輸器 universal asynchronous receiver transmitter 通常稱作uart。定義 uart是一種通用序列資料匯流排,用於非同步通訊。該匯流排雙向通訊,可以實現全雙工傳輸和接收。在嵌入式設計中,uart用於主機與輔助裝置通訊,如汽車音響與外接ap之間...