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