一、RS485 通信----簡介
RS485 是美國電子工業協會Electronic Industries AssociationEIA于1983年發布的串行通信接口標準經通訊工業協會TIA修訂后命名為 TIA/EIA-485-A。
RS485 是一種工業控制環境中常用的通訊協議其中RS 是 Recommended Standard 的縮寫。
RS485 是 半雙工異步 串行通信。
-
支持多節點一般最大支持 32 個節點。
-
傳輸距離遠最遠通訊距離可達1200米。
-
抗干擾能力強差分信號傳輸。
-
連接簡單只需要兩根信號線A+和B-就可以進行正常的通信。
RS485 通信采用差分信號傳輸通常情況下只需要兩根信號線就可以進行正常的通信。
在差分信號中邏輯0和邏輯1是用兩根信號線A+和B-的電壓差來表示。
-
邏輯 1兩根信號線A+和B-的電壓差在 +2V~+6V 之間。
-
邏輯 0兩根信號線A+和B-的電壓差在 -2V~-6V 之間。
在 RS485 通信網絡中通常會使用 485 收發器來轉換 TTL 電平和 RS485 電平。
節點中的串口控制器使用 RX 與 TX 信號線連接到 485 收發器上而收發器通過差分線連接到網絡總線。
串口控制器與收發器之間一般使用 TTL 信號傳輸收發器與總線則使用差分信號來傳輸。
發送數據時串口控制器的 TX 信號經過收發器轉換成差分信號傳輸到總線上。
接收數據時收發器把總線上的差分信號轉化成 TTL 信號通過 RX 引腳傳輸到串口控制器中。
通常在這些節點中只能有一個主機剩下的全為從機。
在總線的起止端分別加了一個 120 歐的匹配電阻。
具體連接圖如下所示
二、RS485 通信----電路圖SP3485
SP3485 芯片是一款非常經典的+3.3V低功耗半雙工RS485收發器數據傳輸速率高達10Mbps。
單片機串口通信一般是TTL電平如果需要RS485 通信就需要RS485芯片在中間轉換一下。
因為RS485通信是半雙工通信就是發送數據的時候不能同時接收數據所以我們選擇SP3485做RS485收發器。
SP3485 芯片的引腳圖如下所示
引腳 | 名稱 | 功能 |
---|---|---|
1 | RO | 接收器輸出 |
2 | RE | 接收器輸出使能低電平-接收使能 |
3 | DE | 驅動器輸出使能高電平-發送使能 |
4 | DI | 驅動器輸入 |
5 | GND | 接地 |
6 | A | 驅動器輸出/接收器輸入同相 |
7 | B | 驅動器輸出/接收器輸入反相 |
8 | VCC | 芯片供電+3.3V |
RS485 電路圖如下圖所示
RS485 普通收發電路圖原理
-
RS485_EN 為高電平邏輯為1發送使能接收禁止。
-
RS485_EN 為低電平邏輯為0發送禁止接收使能
在編寫驅動程序時
-
在發送數據前給RS485_EN 置高電平。
-
在發送數據后給RS485_EN 置低電平。
RS485 電路圖如下圖所示
RS485 自動收發電路比RS485 普通收發電路增加了一個三極管開關電路是由電阻R8、電阻R9 和 NPN三極管Q1 組成。
R9是限流電阻最好選擇4.7K也可以選擇10K。
R8是上拉電阻可以選擇4.7K或者10K。
NPN三極管Q1高電平導通低電平截止。
接收數據
接收數據引腳是 RS485_RX在接收數據過程中RS485_TX引腳一直保持高電平NPN三極管Q1導通RE和DE的引腳是低電平發送禁止接收使能進入接收狀態。
發送數據
發送數據引腳是 RS485_TX應該 RS485_TX 發送1AB發送1RS485_TX 發送0AB發送0。
-
當 RS485_TX 發送1時NPN三極管導通RE和DE的引腳是低電平發送禁止接收使能進入接收狀態SP3485芯片的AB引腳進入高阻狀態因為R4把A拉高R5把B拉低所以AB傳輸的是1。所以當RS485_TX發送1時AB引腳發送1。
-
當 RS485_TX 發送0時NPN三極管不導通RE和DE的引腳是高電平進入發送狀態SP3485芯片會把DI上的電平反應到AB引腳上輸出因為DI已經接地所以AB引腳會傳輸0。所以當RS485_TX發送0時AB引腳發送0。