RS485總線接口協(xié)議詳解
今天分享一篇RS485接口協(xié)議詳解的文章。徹底搞懂 RS485總線接口協(xié)議。
通信協(xié)議
通訊協(xié)議主要是實(shí)現(xiàn)兩個(gè)設(shè)備之間的數(shù)據(jù)交換功能,通訊協(xié)議分硬件層協(xié)議和軟件層協(xié)議。
硬件層協(xié)議決定數(shù)據(jù)如何傳輸問題,比如要在設(shè)備1向設(shè)備2發(fā)送0x63,0x63的二進(jìn)制數(shù)為0110 0011,這 8 個(gè)二進(jìn)制數(shù)從設(shè)備1傳輸?shù)皆O(shè)備2,涉及到1怎么傳,0怎么傳的問題,這就是硬件層要解決的問題。
硬件層協(xié)議目前比較多見的有 RS-232、RS-485、SPI、IIC 等。RS-232規(guī)定,線上的電壓為 x 伏都表示傳輸?shù)氖?0,y 伏傳輸?shù)膭t是1。再者,比如要選擇多少條線傳輸數(shù)據(jù),選擇什么材質(zhì)的線傳輸輸入,這些也屬于硬件層協(xié)議約束的。硬件層協(xié)議也叫接口協(xié)議。
軟件層協(xié)議就指的是通訊雙方在軟件編碼方面約定的通訊規(guī)則,就比如說一個(gè)人說中文,另一個(gè)人也要說中文,兩人才能進(jìn)行交流;常見的軟件層協(xié)議有 Modbus 協(xié)議、TCP/IP協(xié)議、GPRS 等;而 Modbus 協(xié)議可以通過串口、RS-485、以太網(wǎng)等來傳輸;
形象理解為:兩個(gè)用中文(軟件協(xié)議)交流的人,可以通過面對面、打電話、發(fā)短信等不同的方式(硬件協(xié)議)來通信
RS-485通訊協(xié)議
MCU 管腳輸出 TTL 電平,TTL電平的意思是,當(dāng) MCU 管腳輸出0電平時(shí),一般情況下電壓是 0V,當(dāng)MCU管腳輸出1電平時(shí),電壓是5V。
因TTL電平的是由一條信號(hào)線,一條地線產(chǎn)生,信號(hào)線上的干擾信號(hào)會(huì)跟隨有效信號(hào)傳送到接收端,使得有效信號(hào)受到干擾,485通訊實(shí)際上是把 MCU 出來的 TTL 電平通過硬件層的一個(gè)轉(zhuǎn)換器芯片進(jìn)行轉(zhuǎn)換:
把MCU出來的一條的TTL信號(hào)經(jīng)過芯片轉(zhuǎn)換為兩根線(線A、線B)上的信號(hào)。
當(dāng)MCU給轉(zhuǎn)換器輸入 低 TTL電平時(shí),轉(zhuǎn)換器會(huì)使得 B 的電壓比 A 的電壓高,反之,A 的電壓比 B 的電壓高。
485協(xié)議規(guī)約兩條電平線上差值為多少表示0或者1,電壓是通過儀表可以測量得到的,所以說RS-485是硬件層協(xié)議。
485協(xié)議的接收端可能是另一個(gè)MCU,MCU管腳也只接受TTL電平,轉(zhuǎn)換芯片過來的是兩條線的電壓,所以需要對此兩條線差分電壓轉(zhuǎn)換為TTL電平。
把 TTL 轉(zhuǎn)為 485,實(shí)質(zhì)是一個(gè)集成芯片,其間無任何程序代碼,純粹硬件邏輯。同理,將485電平轉(zhuǎn)為TTL也是如此。
現(xiàn)在很多芯片把接收和轉(zhuǎn)換都集成到一塊IC,注意,轉(zhuǎn)換器和接收器依舊是沒有同時(shí)工作的,常見的轉(zhuǎn)換芯片是MAX485。
可以這樣理解,硬件層協(xié)議是公路,路的目的是為了讓車輛能夠過去。
半雙工通訊
首先了解什么是單工通訊,單工通訊是指數(shù)據(jù)只能朝著一個(gè)方向傳輸?shù)耐ㄓ嵎绞?。而半雙工通訊則是指對于通訊兩端,不能同時(shí)相對方法發(fā)送數(shù)據(jù),必須錯(cuò)開時(shí)間段發(fā)送。
RS-485的通訊線只有2條,且這兩條通訊線在一次傳輸中都需要用到,因此485只可實(shí)現(xiàn)半雙工通訊。
485實(shí)現(xiàn)半雙工通訊,會(huì)遇到一個(gè)問題,MCU1 向 MCU2 發(fā)數(shù)據(jù)時(shí),并不知道線上是否正傳來 MCU2 數(shù)據(jù),因?yàn)闆]有其他線可用來判斷對方的收發(fā)狀態(tài),那么可能也會(huì)導(dǎo)致數(shù)據(jù)沖突。
因此,RS-485要實(shí)現(xiàn)半雙工通訊,就需要上層的軟件協(xié)議加以規(guī)約,也就是做到”不能你想發(fā)數(shù)據(jù)就發(fā)數(shù)據(jù)”??梢岳斫猓浖訁f(xié)議就好像交通規(guī)則,它能讓數(shù)據(jù)有序傳輸。
RS-485介紹
電子工業(yè)協(xié)會(huì)(EIA)于1983年制訂并發(fā)布 RS-485 標(biāo)準(zhǔn),并經(jīng)通訊工業(yè)協(xié)會(huì)(TIA) 修訂后命名為TIA/EIA-485-A,所以TIA/EIA-485-A才是真正的名字,因?yàn)槿藗円呀?jīng)叫習(xí)慣RS-485了,所以后續(xù)也一直沿用RS-485這個(gè)叫法。
RS-485標(biāo)準(zhǔn)是為彌補(bǔ)RS-232通信距離短、速率低等缺點(diǎn)而產(chǎn)生的。RS-485標(biāo)準(zhǔn)只規(guī)定了平衡發(fā)送器和接收器的電特性,而沒有規(guī)定接插件、傳輸電纜和應(yīng)用層通信協(xié)議。
RS-485 標(biāo)準(zhǔn)與 RS-232 不一樣,數(shù)據(jù)信號(hào)采用差分傳輸方式(Differential Driver Modc),也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為 B,如圖所示。

傳輸方式以及電平邏輯
RS-485傳輸方式:半雙工通信、==(邏輯1:+2V ~ +6V 邏輯0:-6V ~ -2V)==這里的電平指AB 兩線間的電壓差。
節(jié)點(diǎn)連接示意圖
因?yàn)榇蠖鄶?shù)MCU的信號(hào)都是TTL信號(hào),且數(shù)據(jù)是通過串口發(fā)送和接收,是不符合RS-485標(biāo)準(zhǔn)的。
所以要將數(shù)據(jù)放在485通信線上傳輸?shù)脑?,就要將TTL信號(hào)轉(zhuǎn)為RS-485的差分信號(hào),然后在AB線上傳輸,到達(dá)節(jié)點(diǎn)后再將RS-485的差分信號(hào)轉(zhuǎn)換為TTL信號(hào),給節(jié)點(diǎn)的MCU進(jìn)行數(shù)據(jù)處理

RS-485數(shù)據(jù)鏈路示意圖

拓?fù)浣Y(jié)構(gòu)
RS485有兩線制和四線制兩種接線,四線制只能實(shí)現(xiàn)點(diǎn)對點(diǎn)的通信方式,現(xiàn)很少采用,多采用的是兩線制接線方式,這種接線方式為總線拓?fù)浣Y(jié)構(gòu),在同一總線上最多可以掛接32個(gè)節(jié)點(diǎn)。
RS-485總線同I2C,也是主從模式,支持點(diǎn)對點(diǎn)單從機(jī)模式,也支持多從機(jī)模式,不支持多主機(jī)模式。

電路原理圖

該原理圖是一個(gè)基本的RS-485電路,采用的是Sipex公司的SP3485芯片,是一款低功耗的,工作電壓為3.3V的芯片,該芯片的一些特性后面會(huì)介紹到。
微處理器的標(biāo)準(zhǔn)串行口通過RXD直接連接SP3485芯片的RO引腳,通過TXD直接連接SP485R芯片的DI引腳。
讓該芯片處于發(fā)送模式還是接收模式的選擇位是DE/!RE,一般情況下把這兩個(gè)引腳接在一起,只用微處理器的一個(gè)引腳控制。
U9 是 TVS 管,環(huán)境惡劣時(shí)可加,做保護(hù)作用,平時(shí)實(shí)驗(yàn)可以不加。
R25 是上拉電阻,R27 下拉,默認(rèn)狀態(tài)下將A拉高,B拉低,如果不加電阻,那默認(rèn)情況下是不穩(wěn)定的,會(huì)對單片機(jī)的引腳造成干擾。
芯片內(nèi)部圖
收發(fā)器內(nèi)部是一個(gè)接收器(上半部分)加一個(gè)發(fā)送器(下半部分),然后就是引腳功能。

RO:接收器輸出RE:接收器輸出使能(低電平有效)DE:發(fā)送器輸出使能(高電平有效)DI:發(fā)送器輸入GND:接地連接A:發(fā)送器輸出/接收器輸入反相B:發(fā)送器輸出/接收器輸入反相
Vcc:正極電源(+3.3V<VCC<+3.60V)
【文章福利】小編推薦自己的Linux內(nèi)核技術(shù)交流群:【749907784】整理了一些個(gè)人覺得比較好的學(xué)習(xí)書籍、視頻資料共享在群文件里面,有需要的可以自行添加哦?。。。ê曨l教程、電子書、實(shí)戰(zhàn)項(xiàng)目及代碼)? ?


發(fā)送功能真值表
如果微處理器輸出的信號(hào) DE_nRE 為高電平,則芯片處于發(fā)送模式(發(fā)送器/驅(qū)動(dòng)器),差分輸出A和B遵循數(shù)據(jù)輸入DI處的邏輯狀態(tài);
當(dāng)DI為高電平時(shí),導(dǎo)致A轉(zhuǎn)為高,B轉(zhuǎn)為低。在這種情況下,定義為 VOD=VA-VB
的差分輸出電壓為正,也就是邏輯1(AB間的電壓差為+2V ~ +6V);
當(dāng) DI 為低電平時(shí),輸出狀態(tài)反轉(zhuǎn),B 變高,A 變低,VOD 為負(fù) ,為邏輯 0(AB間的電壓差為 -6V ~ -2V);
當(dāng) DE 低時(shí),兩個(gè)輸出都變成高阻抗。在這種情況下,與D處的邏輯狀態(tài)是不相關(guān)的。

接收功能真值表
如果微處理器輸出的信號(hào) DE_nRE 為低電平,則芯片處于接收模式(接收器),如果為高電平,則關(guān)閉接收模式;
AB間的電平大于 +200mv 時(shí),RO引腳輸出邏輯1;
AB間的電平小于-200mv時(shí),RO引腳輸出邏輯0;
當(dāng)AB間的電平處于-200mv ~ +200mv之間時(shí),則表示不穩(wěn)定

優(yōu)點(diǎn)
半雙工通信
差分信號(hào)傳輸,更加穩(wěn)定
RS485內(nèi)部的物理結(jié)構(gòu),采用的是平衡驅(qū)動(dòng)器和查分接收器的組合,抗干擾能力大大增加。
可以在總線上進(jìn)行聯(lián)網(wǎng)實(shí)現(xiàn)多機(jī)通信,總線上允許掛多個(gè)收發(fā)器,從現(xiàn)有的RS485芯片來看,有可以掛32、64、128、256等不同個(gè)設(shè)備的驅(qū)動(dòng)器。
通信速度快,數(shù)據(jù)最高傳輸速率在10Mbps以上
傳輸速率最遠(yuǎn)可達(dá)到1200米左右,但是傳輸速率和傳輸距離是成反比的,只有在100KB/s以下的傳輸速率,才能達(dá)到最大的通信距離,如果需要傳輸更遠(yuǎn)距離可以使用中繼。
系統(tǒng)運(yùn)行穩(wěn)定。利用專用通信總線把集中器和主站安全、可靠的連接起來。除非設(shè)備接口硬件損壞,或者總線線路斷開,總線抄表系統(tǒng)會(huì)一直保持很好的通信效果和抄收成功率。
通信速率高。由于是專用的有線通信線路連接,線路上除了通信信號(hào)外,再無其他信號(hào)。外來的干擾信號(hào)耦合到線路衰減很大,所以集中器可以以較高的速率與主站通信。
缺點(diǎn)
不支持全雙工
敷設(shè)困難。比如總線抄表系統(tǒng)需要在集中器與主站之間敷設(shè)通信線路。尤其是電能表比較分散時(shí),通信線路敷設(shè)的工程量很大,而且架設(shè)在外的通信線路影響美觀。
維護(hù)成本高。比如通信線路的損傷直接影響總線抄表方式的通信效果。所以需要定時(shí)的檢查線路,保證其正常運(yùn)行。特別是架設(shè)在外面的線路,一旦斷裂或被腐蝕,要重新敷線。對于新增加的用戶,也要及時(shí)敷線,使其進(jìn)入通信網(wǎng)內(nèi)
常用芯片
(1)增強(qiáng)型低功耗半雙工 RS-485 收發(fā)器一 SP481E/SP485E
特點(diǎn):
單一的+5V電源
低功耗BiCMOS工藝制造
發(fā)送器/接收器可使能多分支結(jié)構(gòu)(Mutli-Drop)配置低功耗關(guān)斷模式(SP481E)
描述(SP481E,SP485E)
SP481E 和SP485E是半雙工差分收發(fā)器,完全滿足RS-485和 RS-422的要求。它們由Sipex特有的 BiCMOS工藝制造而成。
RS-485標(biāo)準(zhǔn)理想地用于多分支(multi-drop)應(yīng)用和遠(yuǎn)程接口中。它允許在一條數(shù)據(jù)線上連接32個(gè)發(fā)送器和接收器,非常適合于多分支應(yīng)用。
由于允許使用4000英尺長的電纜,RS-485收發(fā)器可以使用一個(gè)寬(一7V~+12V)共模方式范圍來調(diào)整零電位偏差。因?yàn)镽S-485是一個(gè)差分接口,所以傳輸數(shù)據(jù)時(shí)完全可以抑制來自發(fā)送線的干擾。
(2)1/10單位負(fù)載RS-485收發(fā)器一SP481R/SP485R
特點(diǎn)
單一的+5V電源
允許超過400個(gè)收發(fā)器連接到同一條傳輸線上(1/10單位負(fù)載)接收器輸入高阻抗(標(biāo)準(zhǔn)值RIN=150kQ)
半雙工配置與工業(yè)標(biāo)準(zhǔn)管腳一致
共模輸入電壓范圍為-7V~+12V
包含關(guān)斷模式(ICC<10uA)(適用于SP481R)低功耗(250mW)
獨(dú)立發(fā)送器和接收器使能
SP485R芯片是由業(yè)內(nèi)專業(yè)的通訊接口器件廠商Sipex 公司設(shè)計(jì)生產(chǎn)的高性能RS-485收發(fā)器,能夠替換通用的RS-485收發(fā)器,并在許多方面有所增強(qiáng)。
SP481R和SP485R與現(xiàn)有的SP485產(chǎn)品管腳對應(yīng)相同,而且包含更高的ESD保護(hù)和高接收器輸入阻抗等性能。
接收器輸入高阻抗可以使400個(gè)收發(fā)器接到同一條傳輸線上又不會(huì)引起RS-485發(fā)送器信號(hào)的衰減。各器件封裝為8腳塑料DIP或8腳窄SOIC。SP481R通過使能管腳來提供關(guān)斷功能,可將電源電流(Icc)降低到0.5uA 以下。
(3)+3.3V低功耗半雙工 RS-485收發(fā)器一SP3481/SP3485
特點(diǎn)
RS-485和 RS-422收發(fā)器工作電源為+3.3V
可與+0.5V的邏輯電路共同工作發(fā)送器/接收器使能
低功耗關(guān)斷模式(SP3481)-7V~+12V的共模輸入電壓范圍
允許在同一串行總線上連接32個(gè)收發(fā)器與工業(yè)標(biāo)準(zhǔn)75176管腳配置兼容發(fā)送器輸出短路保護(hù)
描述(SP3481,SP3485)
SP3481和SP3485是 +3.3V 低功耗半雙工收發(fā)器家族的成員,它們完全滿足RS-485和RS-422串行協(xié)議的要求。這兩個(gè)器件與Sipex 的SP481、SP483和SP485的管腳互相兼容,同時(shí)兼容工業(yè)標(biāo)準(zhǔn)規(guī)范。
SP3481和 SP3485由 Sipex特有的BiCMOS工藝制造而成,但性能不受影響。
(4)增強(qiáng)型低功耗全雙工RS-422收發(fā)器一SP490E/SP491E
特點(diǎn)
單一的+5V電源
低功耗BiCMOS工藝制造發(fā)送器/接收器使能(SP491E)RS-485和 RS-422發(fā)送器/接收器
管腳兼容LTC490和 SN75179(SP490E)管腳兼容LTC491和 SN75180 (SP491E)增強(qiáng)型ESD規(guī)范:
正負(fù)15kV人體放電模式(Human Body Model)
SP490E是一個(gè)低功耗差分收發(fā)器,滿足RS-485和RS-422標(biāo)準(zhǔn)規(guī)范,數(shù)據(jù)傳輸速率高達(dá)10Mbps。除了增加了發(fā)送器和接收器三態(tài)使能線外,SP491E和SP490E完全相同。
在共模模式的限制范圍內(nèi),兩者的接收器輸入的靈敏度為士200mV.SP490E包含8腳塑料 DIP和8腳 NSOIC兩種封裝形式,可工作在商業(yè)級(jí)和工業(yè)級(jí)溫度范圍內(nèi)。
SP491E包含14腳DIP和14腳 NSOIC兩種封裝,也可工作在商業(yè)級(jí)和工業(yè)級(jí)溫度范圍內(nèi)。
小結(jié)
上訴列舉了幾款常用芯片,引腳都是兼容的,只是性能上有所差異
注意要點(diǎn)
(1)共模干擾問題:
RS-485接口采用差分方式傳輸信號(hào)方式,并不需要相對于某個(gè)參照點(diǎn)來檢測信號(hào),系統(tǒng)只需檢測兩線之間的電位差就可以。
長距離布線會(huì)有信號(hào)衰減,而且引入噪聲和干擾的可能性更大,在線纜A和B上的表現(xiàn)就是電壓幅度的變化,但是,采用差分線的好處就是,差值相減就會(huì)忽略掉干擾依舊能輸出正常的信號(hào),把這種差分接收器忽略兩條信號(hào)線上相同電壓的能力稱為共模抑制。
通俗來說,就是如果在傳輸過程中遇到干擾,那A、B兩根線的電壓都會(huì)發(fā)生變化,可能本來A是5V,B是2V,被干擾成了A是8V,B是5V,但由于485通信檢測的是兩根線之間的電壓差,所以AB間的電壓差并沒有發(fā)生改變,仍然是3V,所以接收器檢測到的仍然是正確的信號(hào)
相反,像串口和RS232這些單端的通信方式,因?yàn)橹挥幸桓盘?hào)線和一根地線,并會(huì)規(guī)定某個(gè)電平狀態(tài)表示一種邏輯,如5V表示1,0V表示0,當(dāng)在傳輸過程中發(fā)生干擾時(shí),5V可能變成了2V,這時(shí)候就沒法判斷到底是1還是0了,導(dǎo)致傳輸?shù)臄?shù)據(jù)不正確。

此外人們往往忽視了收發(fā)器有一定的共模電壓范圍,RS-485收發(fā)器共模電壓范圍為==-7~+12V==,只有滿足上述條件,整個(gè)網(wǎng)絡(luò)才能正常工作。當(dāng)網(wǎng)絡(luò)線路中共模電壓超出此范圍時(shí)就會(huì)影響通信的穩(wěn)定可靠,甚至損壞接口。
(2)EMI問題:
發(fā)送驅(qū)動(dòng)器輸出信號(hào)中的共模部分需要一個(gè)返回通路,如沒有一個(gè)低阻的返回通道(信號(hào)地),就會(huì)以輻射的形式返回源端。
整個(gè)總線就會(huì)像一個(gè)巨大的天線向外輻射電磁波。又因?yàn)楣材k妷悍秶?7V ~ +12V,所以通信的兩邊也需要一根地線來做標(biāo)準(zhǔn),不能讓共模電壓超出范圍,防止損壞端口
由于上述原因,RS-485網(wǎng)絡(luò)盡管采用差分平衡傳輸方式,但對整個(gè)RS-485網(wǎng)絡(luò),必須有一條低阻的信號(hào)地。一條低阻的信號(hào)地將兩個(gè)接口的工作地連接起來,使共模干擾電壓被短路。
這條信號(hào)地可以是額外的一條線(非屏蔽雙絞線),或者是屏蔽雙絞線的屏蔽層。這是最通常的接地方法。
(3)終端匹配電阻
為了匹配網(wǎng)絡(luò)的通訊阻抗,減少由于不匹配而引起的反射、吸收噪聲,有效抑制噪聲干擾,提高RS-485通訊的可靠性,需要在RS-485網(wǎng)絡(luò)的2個(gè)端點(diǎn)各安裝1個(gè)終端匹配電阻。
終端匹配電阻的大小由傳輸電纜的特性阻抗所決定。例如,RS-485網(wǎng)絡(luò)通常采用雙絞線或屏蔽雙絞線作為傳輸介質(zhì),其特性阻抗為120歐,因此,RS-485總線上的兩個(gè)端點(diǎn)也應(yīng)各安裝1個(gè)120歐的終端匹配電阻。
匹配電阻要消耗較大電流,不適用于功耗限制嚴(yán)格的系統(tǒng)。在特殊的場合,可以考慮比較省電的并聯(lián)“RC”匹配方案,可以節(jié)省大部分功率,但電容C的取值是個(gè)難點(diǎn),需要在功耗和匹配質(zhì)量間進(jìn)行折衷。
原文作者:ONE_ Day|
