一、什么是 UART?
UART(Universal Asynchronous Receiver/Transmitter) 是一種 串行通信協議,它的特點是通信時不需要專門的時鐘信號(叫做“異步”通信),常用于兩個設備之間的簡單數據通信,比如:
-
單片機 <-------------> 傳感器
-
開發板 <-------------> 電腦
-
藍牙模塊 <-------------> MCU
二、UART 的核心硬件信號線有哪些?
信號線 | 全稱 | 作用 |
---|---|---|
TX | Transmit(發送) | 把自己數據“發出去” |
RX | Receive(接收) | 接收對方發來的數據 |
RTS | Request To Send(請求發送)(輸出端) | 告訴對方:“我準備好接收了,你可以發!” |
CTS | Clear To Send(可以發送)(輸入端) | 對方回應:“我準備好了,你可以發!” |
三、用對話打比方來理解這些信號:
假設你和朋友用對講機聊天,你就是設備A,你朋友是設備B。
最基本的兩條線:TX 和 RX
-
你說話 = TX
-
你聽對方說話 = RX
所以,A 的 TX 要連到 B 的 RX,B 的 TX 要連到 A 的 RX(交叉連接):
A: TX -----> RX :B
A: RX <----- TX :B
加上禮貌對話:RTS 和 CTS
當兩個人說話都很快、信息很多的時候,就可能“說太多聽不過來”,這時候就需要**“打招呼”和“確認”機制**,也就是 RTS/CTS。
A 想發數據給 B 的流程:
-
A 拉低 RTS(Request To Send) => 告訴 B:“我準備發數據了,可以嗎?”
-
B 檢查自己的情況,發現自己可以接收,于是拉低自己的RTS, 也就是對應A的 CTS(Clear To Send)=> 回復 A:“可以,你發吧!”
-
A 開始通過 TX 發數據,B 用 RX 收
這個過程就叫做 硬件流控(Hardware Flow Control),防止數據丟失或對方來不及接收。
四、總結圖示:
五、實際應用場景舉例
-
簡單場合(比如開發板 <—> 串口調試工具)
-
通常只用 TX、RX、GND 三根線。
-
比如你用 USB-TTL 模塊和串口調試助手通信。
-
-
可靠傳輸(比如 GSM 模塊、藍牙模塊等)
- 會用到 RTS/CTS,防止串口緩存溢出,數據丟失。
-
帶流控的通信
- 比如你和一個大容量數據設備通信(像 GPS、WIFI 模塊等),建議打開 RTS/CTS 硬件流控.
六、額外一根線:GND(地線)
千萬別忘了,通信的兩個設備必須共地! 否則收發信號沒有參考電平,可能根本收不到數據。