485 通信實驗
這篇文章是對 RS485通信 的原理、硬件連接、接口芯片(SP3485)、總線結構等都有詳盡的說明。我們在此處進行清晰有條理的講解整理,便于學習和實驗操作。
在了解485接口通信原理之前,我們先復習一下串口:
串口是一種接口標準,它規定了接口的電氣標準,簡單說只是物理層的一個標準。沒有規定接口插件電纜以及使用的協議,所以只要我們使用的接口插件電纜符合串口標準就可以在實際中靈活使用,在串口接口標準上使用各種協議進行通訊及設備控制。
典型的串行通訊標準是
RS232
和RS485
,它們定義了電壓,阻抗等,但不對軟件協議給予定義。
RS232接口缺陷:
(1)接口的信號電平值較高(+/-12V),易損壞接口電路的芯片。
(2)傳輸速率較低,在異步傳輸時,波特率為20Kbps。
(3)接口使用一根信號線和一根信號返回線而構成共地的傳輸形式,這種共地傳輸容易產生共模干擾,所以抗噪聲干擾性弱。
(4)傳輸距離有限,最大傳輸距離標準值為50英尺,實際上也只能用在50米左右。
🔹 第一部分:RS485 接口原理
RS485 是什么?
485(一般稱作RS485/EIA-485)是隸屬于OSI模型物理層的電氣特性規定為2線,半雙工,多點通信的標準。它的電氣特性和RS-232大不一樣。用纜線兩端的電壓差值來表示傳遞信號。RS485僅僅規定了接受端和發送端的電氣特性。它沒有規定或推薦任何數據協議。
簡單點說,RS485 是一種用于串行通信的物理層標準,主要特性包括:
- 差分傳輸(A/B 兩線電壓差)
- 半雙工通信(收發不能同時)
- 多點通信(支持多個節點)
- 傳輸距離遠(可達 1200 米)
- 抗干擾能力強
📏 RS485 與 RS232 對比簡表:
特性 | RS232 | RS485 |
---|---|---|
信號類型 | 單端信號 | 差分信號 |
電平 | ±12V | ±2~6V |
接口形式 | 點對點 | 多點總線 |
通信距離 | < 50 米 | > 1200 米 |
抗干擾性 | 差 | 強 |
通信方式 | 全雙工 | 半雙工 |
RS485的特點包括:
① 接口電平低,不易損壞芯片。 RS485的電氣特性:邏輯“1” 以兩線間的電壓差為+(2~6)V 表示;邏輯“0” 以兩線間的電壓差為-(2~6)V 表示。接口信號電平比RS232降低了,不易損壞接口電路的芯片。
② 傳輸速率高。 10米時,RS485的數據最高傳輸速率可達35Mbps,在1200m時,傳輸速度可達100Kbps。
③ 抗干擾能力強。 RS485接口是采用平衡驅動器和差分接收器的組合,抗共模干擾能力增強,即抗噪聲干擾性好。
④ 傳輸距離遠,支持節點多。 RS485總線最長可以傳輸1200m以上(速率≤100Kbps)一般最大支持32個節點,如果使用特制的485芯片,可以達到128個或者256個節點,最大的可以支持到400個節點。
🔹 第二部分:RS485 硬件結構與連接
RS485推薦使用在點對點網絡中,線型,總線型,不能是星型,環型網絡。理想情況下RS485需要2個匹配電阻,其阻值要求等于傳輸電纜的特性阻抗(一般為120Ω)。沒有特性阻抗的話,當所有的設備都靜止或者沒有能量的時候就會產生噪聲,而且線移需要雙端的電壓差。沒有終接電阻的話,會使得較快速的發送端產生多個數據信號的邊緣,導致數據傳輸出錯。485推薦的連接方式:
總線拓撲結構圖:
總線型拓撲
A連A,B連B
首尾兩端需加終端電阻(120Ω) → 抑制反射
避免星型/分支結構 → 增加干擾、波形反射
√ 在上面的連接中,如果需要添加匹配電阻,我們一般在總線的起止端加入,也就是主機和設備4上面各加一個120Ω的匹配電阻。
收發器SP3485
SP3485 收發器結構圖:
圖中A、B總線接口,用于連接485總線。RO是接收輸出端,DI是發送數據收入端,RE是接收使能信號(低電平有效),DE是發送使能信號(高電平有效)。
引腳 | 名稱 | 功能說明 |
---|---|---|
1 | RO | 接收輸出(接到 MCU RX) |
2 | RE | 接收使能(低有效) |
3 | DE | 發送使能(高有效) |
4 | DI | 發送輸入(接到 MCU TX) |
6/7 | A/B | 差分數據線 |
8/5 | VCC / GND | 電源和地 |
? 控制方式(DE / RE):
發送模式:DE = 1, RE = 1
(關閉接收)
接收模式:DE = 0, RE = 0
(開啟接收)
可將 DE 和 RE 連接到同一IO口控制
RS485 實際硬件原理圖
注意:
1)R14和R17是兩個偏置電阻,用來保證總線空閑時,AB之間的電壓差都會大約200mV,避免總線空閑時壓差不定邏輯混亂。
2)兩個485接口連接,A連接A,B連接B。
💡 說明:
- MCU 使用 USART2 (PA2/PA3) 進行串口通信
PD7
控制 DE/RE 引腳,實現收發模式切換SP3485
芯片將 TTL 串口電平轉換為 RS485 差分信號- R14/R17:偏置電阻(保持總線空閑時有穩定電壓)
- R20(120Ω):終端匹配電阻(抑制反射)
🔹 第三部分:實驗程序講解要點
🧱 1. 初始化串口(USART)
void USART2_Init(void) {// 配置PA2(TX),PA3(RX),波特率等
}
🧱 2. 初始化控制引腳(DE / RE)
void RS485_DIR_Init(void) {// PD7 設置為輸出模式
}
🧱 3. 控制收發方向的宏定義
#define RS485_TX_EN() GPIO_SetBits(GPIOD, GPIO_Pin_7) // 發
#define RS485_RX_EN() GPIO_ResetBits(GPIOD, GPIO_Pin_7) // 收
🧱 4. 發送函數
void RS485_Send(uint8_t *data, uint16_t len) {RS485_TX_EN(); // 切換到發送模式for (int i = 0; i < len; i++) {USART_SendData(USART2, data[i]);while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET);}RS485_RX_EN(); // 切換回接收
}
🧱 5. 接收處理
可以使用中斷 / 查詢方式接收數據
接收模式時要保證 DE = 0,RE = 0
注意事項:
- 發送和接收需要控制方向切換(半雙工)
- 匹配電阻必須加在總線兩端(主機 + 末端設備)
- 偏置電阻保證空閑時有穩定電平差
- A對A、B對B連接,切勿反接
- 如果多個設備通信,要采用 協議約定主從通信(如
Modbus
)
RS485 是一種穩定、高抗干擾、長距離的通信方式,廣泛應用于工業控制、儀表、智能電網等場景。通過 USART + SP3485 可以實現基于 STM32 的 485 通信實驗。如果說RS232 簡單點對點;那么,RS485 則為差分長距離;CAN 差分 + 協議智能總線。這些通信方式都可以用于串口通信,但差分通信(RS485/CAN) 更適合工業場景,特別是在噪聲干擾強、距離長、設備多的環境中。
以上,歡迎有從事同行業的電子信息工程、互聯網通信、嵌入式開發的朋友共同探討與提問,我可以提供實戰演示或模板庫。希望內容能夠對你產生幫助!