UART 概述
通用異步收發器(UART)是一種全雙工、串行、異步通信協議,常用于設備間數據傳輸。包含兩根信號線:
- RXD(接收信號線)
- TXD(發送信號線)
通信方式
單工
- 通信方向固定,僅支持單向傳輸(如廣播)。
- 單根信號線實現數據傳輸。
半雙工(如I2C)
- 通信雙方可切換發送/接收角色。
- 單根信號線雙向傳輸,但同一時刻只能單向傳輸。
全雙工(UART)
- 通信雙方同時收發數據。
- 雙信號線(RXD/TXD)實現雙向實時傳輸。
數據傳輸規則
LSB優先
- 數據位傳輸從最低位(LSB)開始。
串行 vs 并行
特性 | 串行 | 并行 |
---|---|---|
速率 | 較慢(逐位傳輸) | 較快(多線同時傳輸) |
硬件成本 | 低 | 高 |
抗干擾性 | 強(適合遠距離,如RS485) | 弱(30米內有效) |
串口通信時序
- 空閑狀態:高電平。
- 起始位:高→低電平跳變,標志通信開始。
- 數據位:8位(LSB優先),可配置為5-9位。
- 校驗位(可選):奇偶校驗(見下文)。
- 停止位:高電平,標志幀結束(通常1-2位)。
奇偶校驗
問題:無法檢測偶數個位錯誤。
- 奇校驗:數據位+校驗位中“1”的總數為奇數。
- 偶校驗:數據位+校驗位中“1”的總數為偶數。
串口參數配置
常見參數組合:
9600,8,N,1
(波特率9600,8位數據,無校驗,1位停止)2400,8,E,1
(偶校驗)115200,8,O,1
(奇校驗)
參數說明:
- 波特率:bps(如9600=9600bit/s)。
- 校驗位:
N
(無)、E
(偶)、O
(奇)。
同步與異步通信
- 同步(如I2C/SPI):依賴共享時鐘線(SCL/SCLK)同步數據。
- 異步(UART):無時鐘線,通過預定義波特率同步。
寄存器配置(以8051為例)
SCON/PCON寄存器
- 工作模式:
SM0=0
,SM1=1
(8位UART)。 - 允許接收:
REN=1
。 - 中斷標志:
TI
(發送完成)、RI
(接收完成),需軟件清零。
定時器配置
- 模式:
TMOD=0x20
(定時器1,8位自動重載)。 - 波特率:寫入
TH1/TL1
初值,TCON.TR1=1
啟動。
中斷配置
- 全局中斷:
IE.EA=1
。 - 串口中斷:
IE.ES=1
。
主從應答機制
- 主機:發起通信請求(如發送指令
01
控制LED)。 - 從機:解析指令并執行操作,返回應答信號。
補充要點
- 差分信號(如RS485):增強抗干擾能力,適合長距離通信。
- 硬件流控:通過
RTS/CTS
信號線控制數據流,避免緩沖區溢出。 - 現代應用:USB轉UART芯片(如CH340)簡化嵌入式調試。
常見問題
- 波特率誤差:需保證收發雙方誤差<2%(如晶振精度影響)。
- 電平標準:UART通常為TTL電平(0-3.3V/5V),與RS232(±12V)需電平轉換。
通過合理配置參數和寄存器,UART可實現穩定可靠的設備間通信。