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