通訊問題,和交通問題一樣,也有高速、低速、擁堵、中斷等等各種情況。如果把串口通訊比做交通,UART比作車站,那么一幀的數據就好比汽車。汽車跑在路上,要遵守交通規(guī)則。如果是市內,一般限速30、40,而高速公路則可以到120。而汽車走什么路,限速多少,就要看協(xié)議怎么規(guī)定了。常見的串口協(xié)議有RS-232、RS-422、RS-485等,他們之間有何細微差別?下面我們就一起來探討一下。
一、UART是什么
UART是通用異步收發(fā)傳輸器(Universal Asynchronous Receiver/Transmitter),通常稱作UART,是一種異步收發(fā)傳輸器,是設備間進行異步通信的關鍵模塊。UART負責處理數據總線和串行口之間的串/并、并/串轉換,并規(guī)定了幀格式;通信雙方只要采用相同的幀格式和波特率,就能在未共享時鐘信號的情況下,僅用兩根信號線(Rx 和Tx)就可以完成通信過程,因此也稱為異步串行通信。
若加入一個合適的電平轉換器,如SP3232E、SP3485,UART 還能用于RS-232、RS-485 通信,或與計算機的端口連接。UART 應用非常廣泛,手機、工業(yè)控制、PC 等應用中都要用到UART。
UART使用的是 異步,串行通信。
串行通信是指利用一條傳輸線將資料一位位地順序傳送。特點是通信線路簡單,利用簡單的線纜就可實現通信,降低成本,適用于遠距離通信,但傳輸速度慢的應用場合。
異步通信以一個字符為傳輸單位,通信中兩個字符間的時間間隔多少是不固定的,然而在同一個字符中的兩個相鄰位間的時間間隔是固定的。
數據傳送速率用波特率來表示,即每秒鐘傳送的二進制位數。例如數據傳送速率為120字符/秒,而每一個字符為10位(1個起始位,7個數據位,1個校驗位,1個結束位),則其傳送的波特率為10×120=1200字符/秒=1200波特。
數據通信格式如下圖:
其中各位的意義如下:
起始位:先發(fā)出一個邏輯”0”信號,表示傳輸字符的開始。
數據位:可以是5~8位邏輯”0”或”1”。如ASCII碼(7位),擴展BCD碼(8位)。小端傳輸
校驗位:數據位加上這一位后,使得“1”的位數應為偶數(偶校驗)或奇數(奇校驗)
停止位:它是一個字符數據的結束標志??梢允?位、1.5位、2位的高電平。
空閑位:處于邏輯“1”狀態(tài),表示當前線路上沒有資料傳送。
注:異步通信是按字符傳輸的,接收設備在收到起始信號之后只要在一個字符的傳輸時間內能和發(fā)送設備保持同步就能正確接收。下一個字符起始位的到來又使同步重新校準(依靠檢測起始位來實現發(fā)送與接收方的時鐘自同步的)
二、RS-232標準
RS-232是美國電子工業(yè)協(xié)會EIA(Electronic Industry Association)制定的一種串行物理接口標準。RS是英文“推薦標準”的縮寫,232為標識號。RS-232是對電氣特性以及物理特性的規(guī)定,只作用于數據的傳輸通路上,它并不內含對數據的處理方式。需要說明一下,很多人經常把RS-232、RS-422、RS-485 誤稱為通訊協(xié)議,這是很不應該的,其實它們僅是關于UART通訊的一個機械和電氣接口標準(頂多是網絡協(xié)議中的物理層面)。
該標準規(guī)定采用一個25 個腳的DB-25 連接器,對連接器的每個引腳的信號內容加以規(guī)定,還對各種信號的電平加以規(guī)定。后來IBM的PC 機將RS-232 簡化成了DB-9 連接器,從而成為今天的事實標準。而工業(yè)控制的RS-232 口一般只使用RXD(2)、TXD(3)、GND(5) 三條線。
早期由于PC都帶有RS-232接口,所以我們需要使用UART時,都選擇RS-232。但是現在個人電腦,不光是筆記本,包括臺式機都不再帶有RS-232的接口,大家看到電腦主板上面沒有DB9的接口。所以現在開發(fā)板都選擇TTL的UART,或者直接UART轉USB做在開發(fā)板上。
嵌入式里面說的串口,一般是指UART口, 但是我們經常搞不清楚它和COM口的區(qū)別, 以及RS232, TTL等關系, 實際上UART,COM指的物理接口形式(硬件), 而TTL、RS-232是指的電平標準(電信號).
UART有4個pin(VCC, GND, RX, TX), 用的TTL電平, 低電平為0(0V),高電平為1(3.3V或以上)。
三、RS-485/ RS-422標準
非平衡型串行通信接口RS-423,RS-449
平衡型串行通信接口RS-422
RS-422(EIA RS-422-A Standard)是Apple的Macintosh計算機的串口連接標準。RS-422使用差分信號,RS-232使用非平衡參考地的信號。差分傳輸使用兩根線發(fā)送和接收信號,對比RS-232,它能更好的抗噪聲和有更遠的傳輸距離。在工業(yè)環(huán)境中更好的抗噪性和更遠的傳輸距離是一個很大的優(yōu)點。
五、RS-422與RS-485對比
RS-485的電氣性能與RS-422完全一樣。主要的區(qū)別在于:
1、RS-422 有4 根信號線:兩根發(fā)送(Y、Z)、兩根接收(A、B)。由于RS-422 的收與發(fā)是分開的所以可以同時收和發(fā)(全雙工)。
2、RS-485 只有兩根數據線:發(fā)送和接收都是A 和B。由于RS-485 的收與發(fā)是共用兩根線,所以不能同時收和發(fā)(半雙工)。
RS-485標準采用平衡式發(fā)送,差分式接收的數據收發(fā)器來驅動總線,具體規(guī)格要求:
驅動器能輸出±7V的共模電壓
輸入端的電容≤50pF
在節(jié)點數為32個,配置了120Ω的終端電阻的情況下,驅動器至少還能輸出電壓1.5V(終端電阻的大小與所用雙絞線的參數有關)
接收器的輸入靈敏度為200mV(即(V+)-(V-)≥0.2V,表示信號“0”;(V+)-(V-)≤-0.2V,表示信號“1”)
因為RS-485的遠距離、多節(jié)點(32個)以及傳輸線成本低的特性,使得EIA RS-485成為工業(yè)應用中數據傳輸的首選標準。
(1) RS-485 的電氣特性:發(fā)送端:邏輯“0”以兩線間的電壓差+(2 ~6)V 表示;邏輯“1”以兩線間的電壓差-(2 ~6)V 表示。接收端:A 比B 高200mV 以上即認為是邏輯“0”,A 比B 低200mV 以上即認為是邏輯“1”;
(2) RS-485 的數據最高傳輸速率為10Mbps。但是由于RS-485 常常要與PC 機的RS-232 口通信,所以實際上一般最高115.2Kbps。又由于太高的速率會使RS-485 傳輸距離減小,所以往往為9600bps 左右或以下;
(3) RS-485 接口是采用平衡驅動器和差分接收器的組合,抗噪聲干擾性好;
(4) RS-485 接口的最大傳輸距離標準為1200 米(9600bps 時),實際上可達3000米,RS-485 接口在總線上是容許連接多達128 個收發(fā)器、即RS-485 具有多機通信功能,這樣用戶可以利用單一的RS-485 接口方便的建立起網絡。因為RS-485 接口組成的半雙工網絡,一般只需二根信號線,所以RS-485 接口均采用雙絞線傳輸。RS-485 的國際標準并沒有規(guī)定RS-485 的接口連接器標準、所以采用接線端子或者DB-9、DB-25 等連接器都可以。
在使用RS-485 接口時,對于特定的傳輸線徑,從發(fā)生器到負載其數據信號傳輸所容許的最大電纜長度是數據信號速率的函數,這個長度數據主要是受信號失真及噪聲等影響所限制。最大電纜長度與信號速率的關系曲線是使用24AWG 銅芯雙絞電話電纜(線徑為0.51mm),線間旁路電容為52.5PF/M,終端負載電阻為100 歐時所得出的。(引自GB11014-89 附錄A)。當數據信號速率降低到90Kbit/S 以下時,假定最大容許的信號損失為6dBV 時,則電纜長度被限制在1200m。實際上,在實用時是完全可以取得比它大的電纜長度。當使用不同線徑的電纜,則取得的最大電纜長度是不相同的。例如:當數據信號速率為600Kbit/S 時,采用24AWG 電纜,最大電纜長度是200m,若采用19AWG電纜(線徑為0.91mm)則電纜長度將可以大于200m;若采用28AWG 電纜(線徑為0.32mm),則電纜長度只能小于200m。
RS-485的遠距離通信建議采用屏蔽電纜,并且將屏蔽層作為地線。
六、影響RS-485總線通訊速度和通信可靠性的三個因素
1、在通信電纜中的信號反射
在通信過程中,有兩種信號因素導致信號反射:阻抗不連續(xù)和阻抗不匹配。
阻抗不連續(xù),信號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號在這個地方就會引起反射,如圖所示。這種信號反射的原理,與光從一種媒質進入另一種媒質要引起反射是相似的。消除這種反射的方法,就必須在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻,使電纜的阻抗連續(xù)。由于信號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接一個同樣大小的終端電阻。
從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再也不會出現信號反射現象。但是,在實現應用中,由于傳輸電纜的特性阻抗與通訊波特率等應用環(huán)境有關,特性阻抗不可能與終端電阻完全相等,因此或多或少的信號反射還會存在。
引起信號反射的另一個原因是數據收發(fā)器與傳輸電纜之間的阻抗不匹配。這種原因引起的反射,主要表現在通訊線路處在空閑方式時,整個網絡數據混亂。
信號反射對數據傳輸的影響,歸根結底是因為反射信號觸發(fā)了接收器輸入端的比較器,使接收器收到了錯誤的信號,導致CRC校驗錯誤或整個數據幀錯誤。
在信號分析,衡量反射信號強度的參數是RAF(Refection AttenuationFactor反射衰減因子)。它的計算公式如式(1)。
RAF=20lg(Vref/Vinc) (1)
式中:Vref—反射信號的電壓大??;Vinc—在電纜與收發(fā)器或終端電阻連接點的入射信號的電壓大小。
具體的測量方法如圖3所示。例如,由實驗測得2.5MHz的入射信號正弦波的峰-峰值為+5V,反射信號的峰-峰值為+0.297V,則該通訊電纜在2.5MHz的通訊速率時,它的反射衰減因子為:
RAF=20lg(0.297/2.5)=-24.52dB
要減弱反射信號對通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實際應用中,對于比較小的反射信號,為簡單方便,經常采用加偏置電阻的方法。在通訊線路中,如何通過加偏置電阻提高通訊可靠性的原理。
2、在通訊電纜中的信號衰減
第二個影響信號傳輸的因素是信號在電纜的傳輸過程中衰減。一條傳輸電纜可以把它看出由分布電容、分布電感和電阻聯合組成的等效電路,如圖所示。
電纜的分布電容C主要是由雙絞線的兩條平行導線產生。導線的電阻在這里對信號的影響很小,可以忽略不計。信號的損失主要是由于電纜的分布電容和分布電感組成的LC低通濾波器。PROFIBUS用的LAN標準型二芯電纜(西門子為DP總線選用的標準電纜),在不同波特率時的衰減系數如表1所示。
電纜的衰減系數
3、在通訊電纜中的純阻負載
影響通訊性能的第三個因素是純阻性負載(也叫直流負載)的大小。這里指的純阻性負載主要由終端電阻、偏置電阻和RS-485收發(fā)器三者構成。
在敘述EIA RS-485規(guī)范時曾提到過RS-485驅動器在帶了32個節(jié)點,配置了150Ω終端電阻的情況下,至少能輸出1.5V的差分電壓。一個接收器的輸入電阻為12kΩ,整個網絡的等效電路如圖5所示。按這樣計算,RS-485驅動器的負載能力為:
RL=32個輸入電阻并聯2個終端電阻=((12000/32)×(150/2))/(12000/32)+(150/2))≈51.7Ω
現在比較常用的RS-485驅動器有MAX485、DS3695、MAX1488/1489以及和利時公司使用的SN75176A/D等,其中有的RS-485驅動器負載能力可以達到20Ω。在不考慮其它諸多因素的情況下,按照驅動能力和負載的關系計算,一個驅動器可帶節(jié)點的最大數量將遠遠大于32個。
在通訊波特率比較高的時候,在線路上偏置電阻是很有必要的。偏置電阻的連接方法如圖6。它的作用是在線路進入空閑狀態(tài)后,把總線上沒有數據時(空閑方式)的電平拉離0電平,如圖7。這樣一來,即使線路中出現了比較小的反射信號或干擾,掛接在總線上的數據接收器也不會由于這些信號的到來而產生誤動作。
七、RS-485總線的負載能力和通訊電纜長度之間的關系
在設計RS-485總線組成的網絡配置(總線長度和帶負載個數)時,應該考慮到三個參數:純阻性負載、信號衰減和噪聲容限。純阻性負載、信號衰減這兩個參數,在前面已經討論過,現在要討論的是噪聲容限(Noise Margin)。RS-485總線接收器的噪聲容限至少應該大于200mV。前面的論述者是在假設噪聲容限為0的情況下進行的。在實際應用中,為了提高總線的抗干擾能力,總希望系統(tǒng)的噪聲容限比EIA RS-485標準中規(guī)定的好一些。從下面的公式能看出總線帶負載的多少和通訊電纜長度之間的關系:
Vend=0.8(Vdriver-Vloss-Vnoise-Vbias)(3)
其中:Vend為總線末端的信號電壓,在標準測定時規(guī)定為0.2V;Vdriver為驅動器的輸出電壓(與負載數有關。負載數在5~35個之間,Vdriver=2.4V;當負載數小于5,Vdriver=2.5V;當負載數大于35,Vdriver≤2.3V);Vloss為信號在總線中的傳輸過程中的損耗(與通訊電纜的規(guī)格和長度有關),由表1提供的標準電纜的衰減系數,根據公式衰減系數b=20lg(Vout/Vin)可以計算出Vloss=Vin-Vout=0.6V(注:通訊波特率為9.6kbps,電纜長度1km,如果特率增加,Vloss會相應增大);Vnoise為噪聲容限,在標準測定時規(guī)定為0.1V;Vbias是由偏置電阻提供的偏置電壓(典型值為0.4V)。
式(3)中乘以0.8是為了使通信電纜不進入滿載狀態(tài)。從式(3)可以看出,Vdriver的大小和總線上帶負載數的多少成反比,Vloss的大小和總線長度成反比,其他幾個參數只和用的驅動器類型有關。因此,在選定了驅動器的RS-495總線上,在通信波特率一定的情況下,帶負載數的多少,與信號能傳輸的最大距離是直接相關的。具體關系是:在總線允許的范圍內,帶負載數越多,信號能傳輸的距離就越??;帶負載數據少,信號能傳輸的距離就發(fā)越遠。
八、分布電容對RS-485總線傳輸性能的影響
電纜的分布電容主是由雙絞線的兩條平行導線產生。另外,導線和地之間也存在分布電容,雖然很小,但在分析時也不能忽視。分布電容對總線傳輸性能的影響,主要是因為總線上傳輸的是基波信號,信號的表達方式只有“1”和“0”。在特殊的字節(jié)中,例如0x01,信號“0”使得分布電容有足夠的充電時間,而信號“1”到來時,由于分布電容中的電荷,來不及放電,(Vin+)—(Vin-)-還大于200mV,結果使接愛誤認為是“0”,而最終導致CRC校驗錯誤,整個數據幀傳輸錯誤。具體過程如圖所示。
審核編輯:郭婷
-
總線
+關注
關注
10文章
2859瀏覽量
87914 -
串口
+關注
關注
14文章
1540瀏覽量
76068 -
uart
+關注
關注
22文章
1219瀏覽量
101121
發(fā)布評論請先 登錄
相關推薦
評論