嵌入式硬件通信接口協(xié)議-UART(一)協(xié)議基礎
一、 簡(jiǎn)介
本文引用地址:http://dyxdggzs.com/article/201812/395785.htmUART,全稱(chēng)UniversalAsynchrONous Receiver/Transmitter,譯為通用異步收發(fā)器。
串口的出現是在1980年前后,數據傳輸率是115kbps~230kbps。串口出現的初期是為了實(shí)現連接計算機外設的目的,初期串口一般用來(lái)連接鼠標和外置Modem以及老式攝像頭和寫(xiě)字板等設備。串口也可以應用于兩臺計算機(或設備)之間的互聯(lián)及數據傳輸。由于串口(COM)不支持熱插拔及傳輸速率較低,目前部分新主板和大部分便攜電腦已開(kāi)始取消該接口。目前串口多用于工控和測量設備以及部分通信設備中。
在幾乎所有的MCU中都會(huì )有UART接口。
from 百度百科串行接口
每當口中提到“串口”,很容易讓人想到的名詞有UART、USART、COM口、TTL/CMOS、RS-232、RS-422、RS-485。其中:
UART,“串口”時(shí)序協(xié)議的名稱(chēng),定義了各個(gè)信號時(shí)序協(xié)議;
USART,相比UART增加了同步信號,可實(shí)現ISO-7816智能卡接口;
COM口,在PC等操作系統上,區別于USB、SATA接口的串行接口,定義了在操作系統中的規范;
TTL/CMOS,嵌入式硬件系統的信號電平;
RS-232,在UART基礎上再定義了信號的電氣特性
RS-422,在RS-232基礎上定義了差分信號傳輸的電氣特性
RS-485,在RS-422基礎上定義了半雙工模式
二、 信號線(xiàn)
信號線(xiàn)的命名,都是基于當前終端設備而定義的。
UART常用的信號線(xiàn)有:
RxD,當前終端設備的接收管腳
TxD,當前終端設備的發(fā)送管腳
GND,當前終端設備的地
如上所述,信號線(xiàn)的命名基于當前終端設備而做的標記,在手工接線(xiàn)時(shí),可以快速判斷連接的線(xiàn)序。
一般的,設計者在設計PCB時(shí),對外連接做的一些預留接口,標記接口管腳時(shí),都會(huì )添加絲印標記,這時(shí)標記的都是當前終端設備的管腳信息。
例如標記著(zhù)RxD的引腳,應該與外部的UART接口TxD連接。

三、 信號時(shí)序
信號線(xiàn)空閑時(shí),處于高電平,當有數據發(fā)送時(shí),信號線(xiàn)以1個(gè)bit時(shí)長(cháng)的低電平標志開(kāi)始通信,通信過(guò)程中,單個(gè)字節在信號線(xiàn)上的幀結構如下圖:

信號管腳傳輸每個(gè)數據時(shí),在管腳上呈現的是電氣信號為高低電平的變化,對應數據每個(gè)bit的邏輯“1”和“0”。
組成UART幀結構時(shí),附帶的起始位、停止位,實(shí)現了對傳輸數據流每個(gè)字節的界定,該過(guò)程實(shí)現了起始式協(xié)議。同時(shí)在停止位前可選擇地插入校驗位,實(shí)現了對數據幀正確性的校驗。
如下圖是常見(jiàn)的UART通信過(guò)程中使用的配置參數8-N-1對應的時(shí)序:

配置參數(8-N-1):8bit數據、無(wú)校驗位、1bit停止位
四、 接口配置項
在啟用UART接口時(shí),需要通信雙方對接口進(jìn)行相同參數的配置,才能夠正確通信。而UART可配置的參數有:
(一)波特率Baudrate:
由于UART屬于異步通信,在通信過(guò)程中沒(méi)有同步時(shí)鐘CLK來(lái)提供給接收方,接收方也就無(wú)法同步地確定每個(gè)bit的寬度,也就無(wú)法對每個(gè)bit進(jìn)行正確的采樣。因此接收方必須依靠設置與發(fā)送方相同的波特率參數,這樣接收方對信號管腳進(jìn)行采樣和解碼時(shí),才能正確判斷每個(gè)bit的值是“1”還是“0”,這也就是異步通信的特點(diǎn)。
在各類(lèi)MCU的UART配置中,常用的波特率值有:
4800Bd、9600Bd、19200Bd、115200Bd,單位Bd。常見(jiàn)有如下代碼截圖:

要想理解波特率,來(lái)的維基百科中查詢(xún)一番

在維基百科的介紹中,可看到,波特率的值,直接以bit/s的單位取倒數后得到單位s/bit,同時(shí)在示波器端對UART發(fā)出的波形進(jìn)行抓取,可見(jiàn)每bit的寬度在誤差允許范圍內基本就是波特率的倒數值。
在百度百科的詞條《波特》介紹中,波特率是指:
調制速率,指的是有效數據信號調制載波的速率,即單位時(shí)間內載波調制狀態(tài)變化的次數。它是對符號傳輸速率的一種度量,1波特即指每秒傳輸1個(gè)符號,而通過(guò)不同的調制方式,可以在一個(gè)碼元符號上負載多個(gè)bit位信息。 單位“波特”本身就已經(jīng)是代表每秒的調制數,以“波特每秒”(Baud per second)為單位是一種常見(jiàn)的錯誤。
它代表的是信號的變化,而不是傳輸數據的多少。它表示每秒鐘內通信線(xiàn)路狀態(tài)改變的次數。如果數據不壓縮,波特等于每秒鐘傳輸的數據位數,如果數據進(jìn)行了壓縮。那么每秒鐘傳輸的數據位數通常大于調制速率,使得交換使用波特和比特/秒有時(shí)會(huì )產(chǎn)生錯誤。
但是在現代的實(shí)際使用中,多數情況下,配置了MCU的波特率后,對輸出信號進(jìn)行觀(guān)測發(fā)現,此時(shí)波特率等于比特率。也正是因為此時(shí)傳輸的符號即8bit一個(gè)Byte的數據量,從而波特率等于比特率。
評論