概述
通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART。它將要傳輸?shù)?a href="http://www.wenjunhu.com/soft/special/" target="_blank">資料在串行通信與并行通信之間加以轉(zhuǎn)換。作為把并行輸入信號轉(zhuǎn)成串行輸出信號的芯片,UART通常被集成于其他通訊接口的連結(jié)上。 具體實物表現(xiàn)為獨(dú)立的模塊化芯片,或作為集成于微處理器中的周邊設(shè)備。一般是RS-232C規(guī)格的,與類似Maxim的MAX232之類的標(biāo)準(zhǔn)信號幅度變換芯片進(jìn)行搭配,作為連接外部設(shè)備的接口。在UART上追加同步方式的序列信號變換電路的產(chǎn)品,被稱為USART(Universal Synchronous Asynchronous Receiver Transmitter)。
接口
在UART通信中,兩個UART直接相互通信。發(fā)送UART將來自CPU等控制設(shè)備的并行數(shù)據(jù)轉(zhuǎn)換為串行形式,并將其串行發(fā)送到接收UART,接收UART然后將串行數(shù)據(jù)轉(zhuǎn)換回接收設(shè)備的并行數(shù)據(jù)。數(shù)據(jù)從發(fā)送UART的Tx引腳流向接收UART的Rx引腳,硬件連接比較簡單,僅需要3條線,如果兩個設(shè)備UART電平不一致需要轉(zhuǎn)換電平再連接。
TX - 數(shù)據(jù)發(fā)送接口 RX - 數(shù)據(jù)接受接口 GND - 保證兩設(shè)備共地,有統(tǒng)一的參考平面
通信協(xié)議
UART串口傳輸?shù)臄?shù)據(jù)被組織成數(shù)據(jù)包。每個數(shù)據(jù)包包含1個起始位,5至9個數(shù)據(jù)位,可選的奇偶校驗位和1或1.5或2個停止位,協(xié)議如下: |起始位|數(shù)據(jù)位 |奇偶校驗位|停止位| |--|--|--|--| | 1bit | 5-9bit |0-1bit | 1-2bit | 空閑位 :UART協(xié)議規(guī)定,當(dāng)總線處于空閑狀態(tài)時信號線的狀態(tài)為‘1’即高電平,表示當(dāng)前線路上沒有數(shù)據(jù)傳輸。
起始位 :開始進(jìn)行數(shù)據(jù)傳輸時發(fā)送方要先發(fā)出一個低電平’0’來表示傳輸字符的開始。因為總線空閑時為高電平所以開始一次通信時先發(fā)送一個明顯區(qū)別于空閑狀態(tài)的信號即低電平。
數(shù)據(jù)位 :起始位之后就是要傳輸需要傳輸?shù)臄?shù)據(jù),數(shù)據(jù)可以是5,6,7,8,9位,構(gòu)成一個字符,一般都是8位。先發(fā)送最低位最后發(fā)送最高位,使用低電平表示‘0’高電平表示‘1’完成數(shù)據(jù)位的傳輸。 奇偶校驗位 :數(shù)據(jù)位加上這一位后,使得“1”的位數(shù)應(yīng)為偶數(shù)(偶校驗)或奇數(shù)(奇校驗),以此來校驗數(shù)據(jù)傳送的正確性。校驗位其實是調(diào)整個數(shù),串口校驗分幾種方式:
- 無校驗(no parity)
- 奇校驗(odd parity):如果數(shù)據(jù)位中“1”的數(shù)目是偶數(shù),則校驗位為“1”,如果“1”的數(shù)目是奇數(shù),校驗位為“0”。
- 偶校驗(even parity):如果數(shù)據(jù)為中“1”的數(shù)目是偶數(shù),則校驗位為“0”,如果為奇數(shù),校驗位為“1”。
- mark parity:校驗位始終為1(不常用)。
- parity:校驗位始終為0(不常用)。
停止位 :數(shù)據(jù)結(jié)束標(biāo)志,可以是1位,1.5位,2位的高電平。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備之間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機(jī)校正時鐘的機(jī)會。停止位個數(shù)越多,數(shù)據(jù)傳輸越穩(wěn)定,但是數(shù)據(jù)傳輸速度也越慢。 傳輸方向 :即數(shù)據(jù)是從高位(MSB)開始傳輸還是從低位(LSB)開始傳輸。
波特率
在電子通信領(lǐng)域,波特(Baud)即調(diào)制速率,指的是有效數(shù)據(jù)訊號調(diào)制載波的速率,即單位時間內(nèi)載波調(diào)制狀態(tài)變化的次數(shù)。 波特率表示每秒鐘傳送的碼元符號的個數(shù),它是對符號傳輸速率的一種度量,它用單位時間內(nèi)載波調(diào)制狀態(tài)改變的次數(shù)來表示,1波特即指每秒傳輸1個符號。 數(shù)據(jù)傳輸速率使用波特率來表示。單位bps(bits per second),常見的波特率9600bps、115200bps等等,其他標(biāo)準(zhǔn)的波特率是1200,2400,4800,19200,38400,57600。舉個例子,如果串口波特率設(shè)置為115200bps,那么傳輸一個比特需要的時間是1/115200≈8.68us。
示例
設(shè)置115200,傳輸單個0x62的數(shù)據(jù),使用示波器抓得的波形如下所示。 上圖是uart協(xié)議傳輸一個0x62的數(shù)據(jù),通過示波器的uart解碼而得到的波形示意圖,由于未設(shè)置奇偶校驗位,故在上圖未顯示出來;比特流格式為LSB,故從低位開始傳輸,接收數(shù)據(jù)為0100 0110,實際的數(shù)據(jù)應(yīng)該反過來,即0110 0010(0x62)。
設(shè)置115200,傳輸0x55,0xAA,0x03等多個數(shù)據(jù)時,使用示波器抓得的波形如下所示。
上圖是uart協(xié)議傳輸0x55,0xAA,0x03等多個數(shù)據(jù),通過示波器的uart解碼而得到的波形示意圖,由于未設(shè)置奇偶校驗位,故在上圖未顯示出來,設(shè)置的停止位為1位;比特流格式為LSB,故從低位開始傳輸,接收三個數(shù)據(jù)分別為1010 1010、0101 0101、1100 0000,實際的數(shù)據(jù)應(yīng)該反過來,即0101 0101(0x55)、1010 1010(0xAA)、0000 0011(0x03)。
審核編輯:湯梓紅
-
串口
+關(guān)注
關(guān)注
14文章
1557瀏覽量
76711 -
uart
+關(guān)注
關(guān)注
22文章
1241瀏覽量
101526 -
通訊協(xié)議
+關(guān)注
關(guān)注
10文章
278瀏覽量
20385
發(fā)布評論請先 登錄
相關(guān)推薦
評論