嵌入式開發-RS-485
- ■ RS-485 連接方式
- ■ RS-485 半雙工通訊
- ■ RS-485 的特點
- ■ UART硬流控
- ■ RS-485
- 1. 全雙工、半雙工接線
- 2. 拓撲結構
- 3. RS-485收發器
- 3.1 發送模式(TX)
- 3.2 接收模式(RX)
- 4. RS-485數據鏈路
- 5. RS-485常用電路
- 6. CH340芯片USB轉RS485參考電路
■ RS-485 連接方式
■ RS-485 半雙工通訊
一線定義為A
一線定義為B
RS-485傳輸方式:半雙工通信、(邏輯1:+2V ~ +6V 邏輯0:-6V ~ -2V)這里的電平指AB 兩線間的電壓差。
■ RS-485 的特點
- 電氣特性:邏輯“1”通常由兩線間的電壓差為+(2-6)V表示,而邏輯“0”由兩線間的電壓差為-(2-6)V表示。
- 傳輸速率:數據最高傳輸速率可達10Mbps。
- 抗干擾性:采用平衡驅動器和差分接收器的組合,增強了抗共模干擾能力。
- 傳輸距離:最大傳輸距離可達1200米。
- 多點通信:允許在總線上連接多達32個設備,實現多點通信。
■ UART硬流控
如果有RX,TX,CTS,RTS 四個信號,則多半是支持硬流控的UART;
RTS | CTS |
---|---|
RTS (Require ToSend,發送請求) : | 為輸出信號,用于指示本設備準備好可接收;發送請求低電平有效,低電平說明本設備可以接收數據。 |
CTS (Clear ToSend,發送清除): | 為輸入信號,有效時停止發送。 發送允許 用于判斷是否可以向對方發送數據,低電平有效,低電平說明本設備可以向對方發送數據。 |
編程思路
編號 | 說明 |
---|---|
1 | 模塊與MCU之間的串口是用硬件流控CTS、RTS兩個IO口進行發送接收的通知和控制。 |
2 | 這兩個IO常態高位,置低觸發。 |
3 | 當模塊可以接收數據時,模塊會置低本機RTS(MCU為CTS)信號通知MCU可以發送數據。 |
4 | 當MCU可以接收數據時,MCU要置低其RTS(模塊為CTS)信號通知模塊可以發送數據 |
■ RS-485
1. 全雙工、半雙工接線
DB9 | 輸出信號 | RS-422全雙工接線 | RS-485半雙工接線 |
---|---|---|---|
1 | T/R+ | 發(A+) | RS-485(A+) |
2 | T/R- | 發(B-) | RS-485(B-) |
3 | RXD+ | 收(A+) | 空 |
4 | RXD- | 收(B-) | 空 |
5 | GND | 地線 | 地線 |
2. 拓撲結構
3. RS-485收發器
RO 一 接收器輸出
RE 一 接收器輸出使能(低電平有效)
DE — 驅動器輸出使能(高電平有效)
DI 一 驅動器輸入
3.1 發送模式(TX)
DE:發送器輸出使能(高電平有效)
引腳DE為邏輯高時,差分輸出A和B遵循數據輸入DI 處的邏輯狀態。
數據流向: MCU_TX -> DI -> 內部驅動器 -> A/B差分輸出
3.2 接收模式(RX)
RE:接收器輸出使能(低電平有效)
數據流向: A/B差分信號 -> 內部接收器 -> RO -> MCU_RX
4. RS-485數據鏈路
當DIR=0時,接收電路使能,發送電路禁止DE=0,對總線而言相當于高阻;
當DIR=1時,接收電路使能,發送電路禁止DE=1,對總線A/B信號取決于DI的信號。
5. RS-485常用電路
1)使能信號RE和DE可采用一個GPIO控制,節省資源,
GPIO25 輸出高電平,RE=DE=0V, 進入接收模式;
GPIO25 輸出低電平,RE=DE=3.3V,進入發送模式。
2)有一些電路中會在A上加上拉,B上加下拉電阻,
主要原因是:RS-485總線在idle狀態,電平是不固定的,即電平在-200mV~+200mV之間,收發器可能輸出高也可能輸出低,UART在空閑時需要保持高電平的,如果此時收發器輸出一個低電平,對UART來說是一個start bit,會導致通信異常,