<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 一文搞懂UART通信協(xié)議

一文搞懂UART通信協(xié)議

發(fā)布人:美男子玩編程 時(shí)間:2022-09-19 來(lái)源:工程師 發(fā)布文章

1


UART簡(jiǎn)介

UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)器)是一種雙向、串行、異步的通信總線(xiàn),僅用一根數據接收線(xiàn)和一根數據發(fā)送線(xiàn)就能實(shí)現全雙工通信。


典型的串口通信使用3根線(xiàn)完成,分別是:發(fā)送線(xiàn)(TX)、接收線(xiàn)(RX)和地線(xiàn)(GND),通信時(shí)必須將雙方的TX和RX交叉連接并且GND相連才可正常通信,如下圖所示:


圖片


2


UART特性

UART接口不使用時(shí)鐘信號來(lái)同步發(fā)送器和接收器設備,而是以異步方式傳輸數據。發(fā)送器根據其時(shí)鐘信號生成的位流取代了時(shí)鐘信號,接收器使用其內部時(shí)鐘信號對輸入數據進(jìn)行采樣。


同步點(diǎn)是通過(guò)兩個(gè)設備的相同波特率(UART和大多數串行通信一樣,發(fā)送和接收設備需要將波特率(波特率是指信息傳輸到信道的速率)設置為相同的值。對于串行端口,設定的波特率將用作每秒傳輸的最大位數)來(lái)管理的。


如果波特率不同,發(fā)送和接收數據的時(shí)序可能會(huì )受影響,導致數據處理過(guò)程出現不一致。允許的波特率差異最大值為10%,超過(guò)此值,位的時(shí)序就會(huì )脫節。


圖片

下總結了關(guān)于UART必須了解的幾點(diǎn):


導線(xiàn)數量3根(TX、RX和GND)
速度1200、2400、4800、9600、19200、38400、57600、115200等
傳輸方式全雙工異步
最大主機數量1
最大從機數量1



3


UART協(xié)議幀

在UART中,傳輸模式為數據包形式。數據包由起始位、數據幀、奇偶校驗位和停止位組成。


圖片


3.1、起始位

當不傳輸數據時(shí),UART數據傳輸線(xiàn)通常保持高電壓電平。若要開(kāi)始數據傳輸,發(fā)送UART會(huì )將傳輸線(xiàn)從高電平拉到低電平并保持1個(gè)時(shí)鐘周期。


當接收UART檢測到高到低電壓躍遷時(shí),便開(kāi)始以波特率對應的頻率讀取數據幀中的位。


圖片


3.2、數據位

數據幀包含所傳輸的實(shí)際數據。如果使用奇偶校驗位,數據幀長(cháng)度可以是5位到8位。如果不使用奇偶校驗位,數據幀長(cháng)度可以是9位。


在大多數情況下,數據以最低有效位優(yōu)先方式發(fā)送。


圖片


3.3、奇偶校驗位

奇偶性描述數字是偶數還是奇數。通過(guò)奇偶校驗位,接收UART判斷傳輸期間是否有數據發(fā)生改變。電磁輻射、不一致的波特率或長(cháng)距離數據傳輸都可能改變數據位。


校驗位可以配置成 1 位偶校驗或 1 位奇校驗或無(wú)校驗位。


接收UART讀取數據幀后,將統計數值為1的位,檢查總數是偶數還是奇數。如果奇偶校驗位為0(偶數奇偶校驗),則數據幀中的1或邏輯高位總計應為偶數。如果奇偶校驗位為1(奇數奇偶校驗),則數據幀中的1或邏輯高位總計應為奇數。


當奇偶校驗位與數據匹配時(shí),UART認為傳輸未出錯。但是,如果奇偶校驗位為0,而總和為奇數,或者奇偶校驗位為1,而總和為偶數,則UART認為數據幀中的位已改變。


圖片


3.4、停止位

為了表示數據包結束,發(fā)送UART將數據傳輸線(xiàn)從低電壓驅動(dòng)到高電壓并保持1到2位時(shí)間。


圖片


4


UART通信步驟

第1步:數據從數據總線(xiàn)到發(fā)送器。


圖片

第2步:發(fā)送UART將起始位、奇偶校驗位和停止位添加到數據幀。


圖片

第3步:從起始位到結束位,整個(gè)數據包以串行方式從發(fā)送器送至接收器。


接收UART以預配置的波特率對數據線(xiàn)進(jìn)行采樣。


圖片

第4步:接收器丟棄數據幀中的起始位、奇偶校驗位和停止位。


圖片

第5步:接收器將串行數據轉換回并行數據,并將其傳輸到接收端的數據總線(xiàn)。


圖片


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: UART

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>