最近幾天,有不少粉絲問我,局哥,什么時候可以寫一篇關于UART協(xié)議的文章?。烤W上的太繁雜,想偷個懶,你直接給介紹總結一下吧。那么今天就介紹一下UART協(xié)議,后面也會抽時間介紹一些其他的常用協(xié)議。
UART簡介
UART全稱universal asynchronous receiver transmitter,翻譯過來就是通用異步收發(fā)器(一般也很少有人這么叫啦)。UART的應用場景非常廣泛,比如上位機與下位機之間的通信,各種外接模塊,比如GPS和藍牙模塊等等。UART作為串行通信,利用一條傳輸線將數(shù)據(jù)按bit進行順序傳送,特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本,適用于遠距離通信,但傳輸速度慢的應用場合。
物理層
在物理層上,UART協(xié)議只有三條信號線:TX,RX和GND??吹竭@兒看官您就要問了,為什么沒有時鐘線?對,UART協(xié)議就是這么任性,不需要時鐘線,那么它是怎么通信的呢?下面的協(xié)議層章節(jié)會做詳細的介紹。
UART使用標準的TTL/CMOS邏輯電平(0~5V,0~3.3V,0~2.5V或0~1.8V)來表示數(shù)據(jù),1表示高電平,0表示低電平。為了提高抗干擾能力、提高傳輸?shù)木嚯x,通常也會TTL/CMOS邏輯電平轉換為RS-232邏輯電平,3~15V表示0,-3~-15V表示1。
舉個例子,對于傳輸數(shù)據(jù)0x55,即二進制的01010101,RS232和TTL的區(qū)別如下;
協(xié)議層
波特率
協(xié)議層上,首先來介紹一下波特率的概念。波特率可以被理解為一個設備在單位時間內發(fā)送(或接收)了多少碼元的數(shù)據(jù),它是對符號傳輸速率的一種度量,表示單位時間內傳輸符號的個數(shù)(傳符號率)。說白了,波特率是串口數(shù)據(jù)的傳輸速度,即Bit/s,常見的波特率有:9600,19200,38400,57600,115200。假設目前UART的配置為,1個起始位,8個數(shù)據(jù)位,0個校驗位,1個停止位,那么9600的波特率,可以計算出每一位數(shù)據(jù)的時間寬度為104us,那么傳輸一個數(shù)據(jù)包(也就是10 bit 數(shù)據(jù))需要的時間為 1.04 毫秒。
數(shù)據(jù)包格式
介紹完了波特率,再來介紹一下數(shù)據(jù)包的格式。UART傳輸?shù)臄?shù)據(jù)被封裝成數(shù)據(jù)包,每個數(shù)據(jù)包包含1個起始位,5~8個數(shù)據(jù)位(取決于UART的具體設置),一個可選的奇偶校驗位以及1個或2個停止位,具體如下圖所示:
起始位:UART數(shù)據(jù)傳輸線在空閑狀態(tài)時時保持高電平。當master先發(fā)出一個邏輯”0”的信號時,表示傳輸數(shù)據(jù)的開始。
數(shù)據(jù)位:可以選擇的值有5,6,7,8這四個值,可以傳輸這么多個值為0或者1的bit位。這個參數(shù)最好為8,因為如果此值為其他的值時當你傳輸?shù)氖茿SCII值時一般解析肯定會出問題。理由很簡單,一個ASCII字符值為8位,如果一幀的數(shù)據(jù)位為7,那么還有一位就是不確定的值,這樣就會出錯。
校驗位:在串口通信中一種簡單的檢錯方式。有下面四種檢錯方式:偶校驗、奇校驗、高校驗和低校驗。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設置校驗位(數(shù)據(jù)位后面的一位),用1bit確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。
舉個例子,如果數(shù)據(jù)是011,假如為偶校驗,則校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。假如為奇校驗,校驗位為1,保證邏輯高的位數(shù)是奇數(shù)個。
停止位:發(fā)送端UART將數(shù)據(jù)傳輸線從低電壓驅動到高電壓至少持續(xù)兩位數(shù)據(jù)的時間寬度來表示整個數(shù)據(jù)包的傳輸已經結束。由于數(shù)據(jù)是在傳輸線上定時的,不同設備之間的時鐘存在偏差,誤差的積累有可能會造成數(shù)據(jù)位的傳輸錯誤。因此停止位不僅僅是表示傳輸?shù)慕Y束,并且提供校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容錯性越好,但是數(shù)據(jù)傳輸率同時也越慢。
優(yōu)缺點
沒有任何通信協(xié)議是完美的,以下是UART的一些利弊,可幫助您確定它們是否適合您的項目需求:
優(yōu)點:
通信只需要兩條數(shù)據(jù)線;
無需時鐘信號;
有奇偶校驗位,方便通信的差錯檢查;
只需要接收端和發(fā)送端設置好數(shù)據(jù)包結構,即可穩(wěn)定通信;
缺點:
數(shù)據(jù)幀最大支持9位數(shù)據(jù);
不支持多主機或多從機的主從系統(tǒng);
原文標題:干貨 | UART協(xié)議詳解
文章出處:【微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
審核編輯:湯梓紅
-
物理層
+關注
關注
1文章
151瀏覽量
34389 -
uart
+關注
關注
22文章
1237瀏覽量
101429 -
串行通信
+關注
關注
4文章
574瀏覽量
35412 -
UART協(xié)議
+關注
關注
0文章
6瀏覽量
6313
原文標題:干貨 | UART協(xié)議詳解
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論