博客專欄

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

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

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

        1


        UART簡(jiǎn)介

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


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


        圖片


        2


        UART特性

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


        同步點(diǎn)是通過(guò)兩個(gè)設(shè)備的相同波特率(UART和大多數(shù)串行通信一樣,發(fā)送和接收設(shè)備需要將波特率(波特率是指信息傳輸?shù)叫诺赖乃俾剩┰O(shè)置為相同的值。對(duì)于串行端口,設(shè)定的波特率將用作每秒傳輸?shù)淖畲笪粩?shù))來(lái)管理的。


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


        圖片

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


        導(dǎo)線數(shù)量3根(TX、RX和GND)
        速度1200、2400、4800、9600、19200、38400、57600、115200等
        傳輸方式全雙工異步
        最大主機(jī)數(shù)量1
        最大從機(jī)數(shù)量1



        3


        UART協(xié)議幀

        在UART中,傳輸模式為數(shù)據(jù)包形式。數(shù)據(jù)包由起始位、數(shù)據(jù)幀、奇偶校驗(yàn)位和停止位組成。


        圖片


        3.1、起始位

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


        當(dāng)接收UART檢測(cè)到高到低電壓躍遷時(shí),便開始以波特率對(duì)應(yīng)的頻率讀取數(shù)據(jù)幀中的位。


        圖片


        3.2、數(shù)據(jù)位

        數(shù)據(jù)幀包含所傳輸?shù)膶?shí)際數(shù)據(jù)。如果使用奇偶校驗(yàn)位,數(shù)據(jù)幀長(zhǎng)度可以是5位到8位。如果不使用奇偶校驗(yàn)位,數(shù)據(jù)幀長(zhǎng)度可以是9位。


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


        圖片


        3.3、奇偶校驗(yàn)位

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


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


        接收UART讀取數(shù)據(jù)幀后,將統(tǒng)計(jì)數(shù)值為1的位,檢查總數(shù)是偶數(shù)還是奇數(shù)。如果奇偶校驗(yàn)位為0(偶數(shù)奇偶校驗(yàn)),則數(shù)據(jù)幀中的1或邏輯高位總計(jì)應(yīng)為偶數(shù)。如果奇偶校驗(yàn)位為1(奇數(shù)奇偶校驗(yàn)),則數(shù)據(jù)幀中的1或邏輯高位總計(jì)應(yīng)為奇數(shù)。


        當(dāng)奇偶校驗(yàn)位與數(shù)據(jù)匹配時(shí),UART認(rèn)為傳輸未出錯(cuò)。但是,如果奇偶校驗(yàn)位為0,而總和為奇數(shù),或者奇偶校驗(yàn)位為1,而總和為偶數(shù),則UART認(rèn)為數(shù)據(jù)幀中的位已改變。


        圖片


        3.4、停止位

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


        圖片


        4


        UART通信步驟

        第1步:數(shù)據(jù)從數(shù)據(jù)總線到發(fā)送器。


        圖片

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


        圖片

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


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


        圖片

        第4步:接收器丟棄數(shù)據(jù)幀中的起始位、奇偶校驗(yàn)位和停止位。


        圖片

        第5步:接收器將串行數(shù)據(jù)轉(zhuǎn)換回并行數(shù)據(jù),并將其傳輸?shù)浇邮斩说臄?shù)據(jù)總線。


        圖片


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



        關(guān)鍵詞: UART

        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 甘南县| 大丰市| 白朗县| 华池县| 金秀| 阳信县| 兴和县| 陆丰市| 油尖旺区| 岳阳县| 桃园市| 马鞍山市| 汉源县| 伊通| 马边| 手游| 仙游县| 忻城县| 马山县| 永川市| 色达县| 九龙坡区| 泽普县| 盐源县| 郑州市| 稷山县| 左权县| 游戏| 江华| 开江县| 淮阳县| 天镇县| 靖西县| 鸡东县| 龙陵县| 密云县| 莒南县| 福泉市| 孟村| 土默特右旗| 镇安县|