UART簡介
UART全稱universal asynchronous receiver transmitter,翻譯過來就是通用異步收發器(一般也很少有人這么叫啦)。UART的應用場景非常廣泛,比如上位機與下位機之間的通信,各種外接模塊,比如GPS和藍牙模塊等等。UART作為串行通信,利用一條傳輸線將數據按bit進行順序傳送,特點是通信線路簡單,利用簡單的線纜就可實現通信,降低成本,適用于遠距離通信,但傳輸速度慢的應用場合。
物理層
在物理層上,UART協議只有三條信號線:TX,RX和GND。看到這兒看官您就要問了,為什么沒有時鐘線?對,UART協議就是這么任性,不需要時鐘線,那么它是怎么通信的呢?下面的協議層章節會做詳細的介紹。
UART使用標準的TTL/CMOS邏輯電平(0~5V,0~3.3V,0~2.5V或0~1.8V)來表示數據,1表示高電平,0表示低電平。為了提高抗干擾能力、提高傳輸的距離,通常也會TTL/CMOS邏輯電平轉換為RS-232邏輯電平,3~15V表示0,-3~-15V表示1。
舉個例子,對于傳輸數據0x55,即二進制的01010101,RS232和TTL的區別如下;
協議層
波特率
協議層上,首先來介紹一下波特率的概念。波特率可以被理解為一個設備在單位時間內發送(或接收)了多少碼元的數據,它是對符號傳輸速率的一種度量,表示單位時間內傳輸符號的個數(傳符號率)。說白了,波特率是串口數據的傳輸速度,即Bit/s,常見的波特率有:9600,19200,38400,57600,115200。假設目前UART的配置為,1個起始位,8個數據位,0個校驗位,1個停止位,那么9600的波特率,可以計算出每一位數據的時間寬度為104us,那么傳輸一個數據包(也就是10 bit 數據)需要的時間為 1.04 毫秒。
數據包格式
介紹完了波特率,再來介紹一下數據包的格式。UART傳輸的數據被封裝成數據包,每個數據包包含1個起始位,5~8個數據位(取決于UART的具體設置),一個可選的奇偶校驗位以及1個或2個停止位,具體如下圖所示:
起始位:UART數據傳輸線在空閑狀態時時保持高電平。當master先發出一個邏輯”0”的信號時,表示傳輸數據的開始。
數據位:可以選擇的值有5,6,7,8這四個值,可以傳輸這么多個值為0或者1的bit位。這個參數最好為8,因為如果此值為其他的值時當你傳輸的是ASCII值時一般解析肯定會出問題。理由很簡單,一個ASCII字符值為8位,如果一幀的數據位為7,那么還有一位就是不確定的值,這樣就會出錯。
校驗位:在串口通信中一種簡單的檢錯方式。有下面四種檢錯方式:偶校驗、奇校驗、高校驗和低校驗。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗位(數據位后面的一位),用1bit確保傳輸的數據有偶個或者奇個邏輯高位。
舉個例子,如果數據是011,假如為偶校驗,則校驗位為0,保證邏輯高的位數是偶數個。假如為奇校驗,校驗位為1,保證邏輯高的位數是奇數個。
停止位:發送端UART將數據傳輸線從低電壓驅動到高電壓至少持續兩位數據的時間寬度來表示整個數據包的傳輸已經結束。由于數據是在傳輸線上定時的,不同設備之間的時鐘存在偏差,誤差的積累有可能會造成數據位的傳輸錯誤。因此停止位不僅僅是表示傳輸的結束,并且提供校正時鐘同步的機會。適用于停止位的位數越多,不同時鐘同步的容錯性越好,但是數據傳輸率同時也越慢。
優缺點
沒有任何通信協議是完美的,以下是UART的一些利弊,可幫助您確定它們是否適合您的項目需求:
優點:
通信只需要兩條數據線;
無需時鐘信號;
有奇偶校驗位,方便通信的差錯檢查;
只需要接收端和發送端設置好數據包結構,即可穩定通信;
缺點:
數據幀最大支持9位數據;
不支持多主機或多從機的主從系統;
參考文獻:https://blog.csdn.net/u010632165/article/小麥大叔
-
uart
+關注
關注
22文章
1227瀏覽量
101178 -
波特率
+關注
關注
2文章
303瀏覽量
34068 -
異步收發器
+關注
關注
0文章
36瀏覽量
10837
發布評論請先 登錄
相關推薦
評論