當(dāng)前位置:首頁 > 學(xué)習(xí)資源 > 講師博文 > uart協(xié)議
uart協(xié)議
時間:2025-11-19 來源:華清遠(yuǎn)見
UART(Universal Asynchronous Receiver/Transmitter,通用異步收發(fā)傳輸器)是一種異步串行通信協(xié)議,核心作用是實現(xiàn)設(shè)備間的低成本、近距離數(shù)據(jù)傳輸,廣泛用于嵌入式系統(tǒng)、工業(yè)控制等場景。
它的核心特點是 “異步”—— 無需時鐘信號同步,僅通過兩根數(shù)據(jù)線(TX 發(fā)送、RX 接收)即可完成雙向通信,硬件結(jié)構(gòu)和協(xié)議邏輯都相對簡單。
一、UART 核心工作原理
數(shù)據(jù)幀結(jié)構(gòu)(協(xié)議核心)UART 數(shù)據(jù)以 “幀” 為單位傳輸,每幀包含固定格式的信號,確保接收方準(zhǔn)確解析,標(biāo)準(zhǔn)幀結(jié)構(gòu)如下(從左到右):
起始位:1 位低電平,標(biāo)志數(shù)據(jù)幀開始(打破空閑時的高電平狀態(tài),觸發(fā)接收方準(zhǔn)備)。
數(shù)據(jù)位:5-9 位(最常用 8 位),實際傳輸?shù)亩M制數(shù)據(jù)(如 ASCII 碼,8 位可覆蓋 0-255 所有字符)。
校驗位(可選):1 位,用于校驗數(shù)據(jù)是否傳輸錯誤,支持兩種模式:
奇校驗:數(shù)據(jù)位 + 校驗位中 “1” 的總數(shù)為奇數(shù);
偶校驗:數(shù)據(jù)位 + 校驗位中 “1” 的總數(shù)為偶數(shù);
無校驗:省略校驗位(適合傳輸可靠性要求不高的場景,如普通指令)。
停止位:1-2 位高電平,標(biāo)志數(shù)據(jù)幀結(jié)束(接收方通過高電平判斷一幀數(shù)據(jù)完成)。
波特率(通信速率)收發(fā)雙方必須約定相同的 “波特率”(單位:bps,比特 / 秒),即每秒傳輸?shù)亩M制位數(shù)(含起始位、校驗位、停止位),常見波特率有:9600、19200、38400、115200 bps(115200 為嵌入式開發(fā)常用速率)。
二、UART 硬件連接方式
UART 是 “點對點” 通信(不支持多設(shè)備共享總線),核心需 3 根線(全雙工,即收發(fā)可同時進行):

三、UART 典型應(yīng)用場景
嵌入式開發(fā):單片機(如 STM32、51 單片機)與電腦之間的 “串口調(diào)試”(通過 USB 轉(zhuǎn) UART 模塊,輸出日志、發(fā)送指令)。
工業(yè)控制:傳感器(如溫濕度傳感器、GPS 模塊)向控制器(如 PLC)傳輸數(shù)據(jù)(速率要求低,對可靠性要求中等)。
外設(shè)通信D:打印機、調(diào)制解調(diào)器(Modem)、藍(lán)牙模塊(經(jīng)典藍(lán)牙的串口透傳模式)與主機的低速數(shù)據(jù)交互。
消費電子:智能家居設(shè)備(如掃地機器人、智能插座)的本地調(diào)試或簡單指令傳輸。
四:嵌入式虛擬仿真平臺中的uart控制器
仿真系統(tǒng)中,UART控制器原理結(jié)構(gòu)圖如下:

基礎(chǔ)串口數(shù)據(jù)收發(fā):
1. 使能時鐘

2. 配置串口通信協(xié)議
在協(xié)議配置中設(shè)置波特率為“115200”、數(shù)據(jù)位“8位”、奇偶校驗“None”、停止位“1位”,并且不啟用硬流控。

3. 串口控制
在串口控制中需要依次將“使能UART時鐘”、“USART使能(UE)”、“使能發(fā)送器(TE)”、“使能接收器(RE)”勾選上,串口模式選擇“Asynchronous”。

4. 點擊左邊寄存器映射下的“運行”按鈕,開始仿真

在虛擬仿真系統(tǒng)中,模擬了一個虛擬透傳串口,數(shù)據(jù)流向的基本過程為,UART控制器給虛擬透傳串口發(fā)送數(shù)據(jù),然后透傳串口將接收到的數(shù)據(jù),再發(fā)送給UART控制器,所以UART會接收到同樣的數(shù)據(jù)。點擊“寫入”,將內(nèi)存中的數(shù)據(jù)寫入到發(fā)送數(shù)據(jù)寄存器(TDR)中,當(dāng)數(shù)據(jù)從內(nèi)存寫入到發(fā)送數(shù)據(jù)寄存器(TDR)之后,TDR中的數(shù)據(jù)會自動并行傳輸?shù)桨l(fā)送位移寄存器中,然后數(shù)據(jù)會通過發(fā)送位移寄存器,按照LSB的方式將數(shù)據(jù)一位一位的從Tx引腳移出
如仿真系統(tǒng)中的動畫所示:發(fā)送位移寄存器,按照LSB的方式將數(shù)據(jù)一位一位的從Tx引腳發(fā)出。

可以發(fā)現(xiàn),當(dāng)內(nèi)存數(shù)據(jù)被寫入到發(fā)送數(shù)據(jù)寄存器(TDR)后,USART_SR寄存器中的TXE位被控制器清0,串口狀態(tài)欄下的TXE位變成N,說明發(fā)送數(shù)據(jù)寄存器不為空,有待發(fā)送的數(shù)據(jù)
實際應(yīng)用中,TXE位即可作為數(shù)據(jù)寫到TDR寄存器時機標(biāo)志位,當(dāng)TXE被控制器置1時,則表明可以往TDR寄存器中寫入下一次需要發(fā)送的數(shù)據(jù)。

