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