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