RS-232-C
RS-232C標準(協議)的全稱是EIA-RS-232C標準,其中EIA(Electronic Industry Association)代表美國電子工業協會,RS(ecommeded standard)代表推薦標準,232是 標識號,C代表RS232的最新一次修改(1969),在這之前有RS232B、RS232A。它規定連接電纜和機械、電氣特性、信號功能 及傳送過程。常用物理標準還有有RS-232-C、RS-422-A、RS-423A、RS-485。 這里只介紹RS-232-C(簡稱232,RS232)。 例如,目前在IBM PC機上的COM1、COM2接口,就是RS-232C接口。
1、電氣特性
EIA-RS-232C對電器特性、邏輯電平和各種信號線功能都作了規定!
在TxD和RxD上,
邏輯1(MARK) =-3V~-15V
邏輯0(SPACE) =+3~+15V
在RTS、CTS、DSR、DTR和DCD等控制線上,
信號有效(接通,ON狀態,正電壓) =+3V~+15V
信號無效(斷開,OFF狀態,負電壓) =-3V~-15V
以上規定說明了RS-323C標準對邏輯電平的定義。
對于數據(信息碼):邏輯“1“ (傳號)的電平低于-3V,邏輯“0” (空號)的電平高于+3V。
對于控制信號:接通狀態(ON),即信號有效的電平高于+3V,斷開狀態(OFF)即信號無效的電平低于 -3V。
也就是當傳輸電平的絕對值大于3V時,電路可以有效地檢查出來,介于-3~+3V之間 的電壓無意義,低于-15V或高于+15V的電壓也認為無意義,因此,實際工作時,應保證電平在±(3~15)V之間。
EIA-RS-232C是用正負電壓來表示邏輯狀態,與TTL以高低電平表示邏輯狀態的 規定不同。因此,為了能夠同計算機接口或終端的TTL器件連接,必須在EIA-RS-232C與TTL電路 之間進行電平和邏輯關系的變換。實現這種變換的方法可用分立元件,也可用集成電路芯片。
目前較為廣泛地使用集成電路轉換器件,如MC1488、SN75150芯片可完成TTL電平到EIA 電平的轉換,而MC1489、SN75154可實現EIA電平到TTL電平的轉換。MAX232芯片可完成TTL和EIA雙 向電平轉換,圖1顯示了1488和1489的內部結構和引腳。
MC1488的引腳(2)、(4,5)、(9,10)和(12,13)接TTL輸入,引腳3、6、8、11 輸出端接EIA-RS-232C。MC1498的14的1、4、10、13腳接EIA輸入,而3、6、8、 11腳接TTL輸出。具體連接方法如圖2所示。
圖中的左邊是微機串行接口電路中的主芯片UART,它是TTL器件,右邊是EIA-RS-232C連接器, 要求EIA高電壓。因此,RS-232C所有的輸出、輸入信號都要分別經過MC1488和MC1498轉換器,進行電平轉換后才能送到連接器上去或從連接 器上送進來。
2、連接器的機械特性
1)連接器
由于RS-232C并未定義連接器的物理特性,因此,出現了DB-25、DB-15和DB-9各 種類型的連接器,其引腳的定義也各不相同。下面介紹連接器DB-25!
DB-25連接器定義了25根信號線,分為4組:
a、異步通信的9個電壓信號(含信號地SG):2,3,4,5,6,7,8,20,22;
b、20mA電流環信號:9個 (12,13,14,15,16,17,19,23,24);
c、空:6個 (9,10,11,18,21,25);
d、保護地(PE):1個,作為設備接地端(1腳)!
DB-25型連接器的外形及信號線分配如圖3所示。
注意,20mA電流環信號僅IBM PC和IBM PC/XT機提供,至AT機及以后,已不支持。
2) 電纜長度
在通信速率低于20kb/s時,RS-232C所直接連接的最大物理距離為15m(50 英尺)。
最大直接傳輸距離說明:RS-232C標準規定,若不使用MODEM,在碼元畸變小于4%的情況 下,DTE和DCE之間最大傳輸距離為15m(50英尺)?梢娺@個最大的距離是在碼元畸變小于4%的前提下給出的。為了保證碼元畸變小于 4%的要求,接口標準在電氣特性中規定,驅動器的負載電容應小于2500pF。
3、RS-232C的接口信號
RS-232C規標準接口有25條線,4條數據線、11條控制線、3條定時線、7條備用和未定義線,常用的 只有9根,它們是:
a、聯絡控制信號線
數據裝置準備好(DSR,Data set ready),有效時(ON)狀態,表明 MODEM處于可以使用的狀態。
數據終端準備好(DTR,Data terminal ready),有效時(ON)狀態, 表明數據終端可以使用。
這兩個信號有時連到電源上,一上電就立即有效。這兩個設備狀態信號有效,只表示設備本 身可用,并不說明通信鏈路可以開始進行通信了,能否開始進行通信要由下面的控制信號決定。
請求發送(RTS,Request to send),用來表示DTE請求DCE發送 數據,即當終端要發送數據時,使該信號有效(ON狀態),向MODEM請求發送。它用來控制MODEM是否要進入發送狀態。
允許發送(CTS,Clear to send),用來表示DCE準備好接收DTE發 來的數據,是對請求發送信號RTS的響應信號。當MODEM已準備好接收終端傳來的數據,并向前發送時,使該信號有效,通知終端開始沿發送 數據線TxD發送數據。
這對RTS/CTS請求應答聯絡信號是用于半雙工MODEM系統中發送方式和接收方式之間的切換。在 全雙工系統中,因配置雙向通道,故不需要RTS/CTS聯絡信號,使其變高。
接收線信號檢出(RLSD,Received Line signal detection), 用來表示DCE已接通通信鏈路,告知DTE準備接收數據。當本地的MODEM收到由通信鏈路另一端(遠地)的MODEM送來的載波信號時, 使RLSD信號有效,通知終端準備接收,并且由MODEM將接收下來的載波信號解調成數字數據后,沿接收數據線RxD送到終端。此線也叫做數 據載波檢出(DCD,Data Carrier dectection)線。
振鈴指示(RI,Ringing),當MODEM收到交換臺送來的振鈴呼叫信號時,使該信 號有效(ON狀態),通知終端,已被呼叫。
b、數據發送與接收線
發送數據(TxD,Transmitted data),通過TxD終端將串行數據發送到 MODEM,從DTE到DCE。
接收數據(RxD,Received data),通過RxD線終端接收從MODEM發來的串行 數據,從DCE到DTE。
c、地線
有兩根線SG、PG,信號地和保護地信號線,無方向。
上述控制信號線何時有效,何時無效的順序表示了接口信號的傳送過程。
例如,只有當DSR和DTR都處于有效(ON)狀態時,才能在DTE和DCE之間進行傳送操作。若 DTE要發送數據,則預先將DTR線置成有效(ON)狀態,等CTS線上收到有效(ON)狀態的回答后,才能在TxD線上發送串行數據。這種順序 的規定對半雙工的通信線路特別有用,因為半雙工的通信才能確定DCE已由接收方向改為發送方向,這時線路才能開始發送。
3.1 遠距離通信
在以下各圖中,DTE信號為RS-232-C信號,DTE與計算機間的電平轉換電路未畫出!
1) 采用Modem(DCE)和電話網通信時的信號連接
若在雙方MODEM之間采用普通電話交換線進行通信,除了需要2~8號信號線外還要增加RI(22 號)和DTR(20號)兩個信號線進行聯絡,如圖4所示。
DSR、DTR:數傳機(DCE)準備好、數據終端(DTE)準備好,只表示設備 本身可用。
首先,通過電話機拔號呼叫對方,電話交換臺向對方發出拔號呼叫信號,當對方DCE收到該信號后,使 RI(振鈴信號)有效,通知DTE,已被呼叫。當對方“摘機”后,兩方建立了通信鏈路。
若計算機要發送數據至對方,首先通過接口電路(DTE)發出RTS(請求發送)信號。此時,若 DCE(Modem)允許傳送,則向DTE回答CTS(允許發送)信號。一般可直接將RTS/CTS接高電平,即只要通信鏈路已建立,就可 傳送信號。
RTS/CTS只用于半雙工系統中作發送方式和接收方式的切換。
當DTE獲得CTS信號后,通過TXD線向DCE發出串行信號,DCE(Modem)將這些數字信號調制 成模擬信號(又稱載波信號),傳向對方。
計算機向DTE“數據輸出寄存器”傳送新的數據前,應檢查Modem狀態和數據輸出寄存器為空。當對方的 DCE收到載波信號后,向對方的DTE發出DCD信號(數據載波檢出),通知其DTE準備接收,同時,將載波信號解調為數據信號,從RXD線上送給 DTE,DTE通過串行接收移位寄存器對接收到的位流進行移位,當收到1個字符的全部位流后,把該字符的數據位送到數據輸入寄存器,CPU可以從數據輸入 寄存器讀取字符。
3.2 近距離通信
當通信距離較近時,可不需要Modem,通信雙方可以直接連接,這種情況下,只需使用少數幾根信號線。最簡單的 情況,在通信中根本不需要RS-232C的控制聯絡信號,只需三根線(發送線、接收線、信號地線)便可實現全雙工異步串行通信。
無Modem時,最大通信距離按如下方式計算:
RS-232C標準規定,當誤碼率小于4%時,要求導線的電容值應小于2500PF。對于普 通導線,其電容值約為170PF/M。則允許距離L=2500PF/(170PF/M)=15M。這一距離的計算,是偏于保守的,實際應用中,當使用9600bps,普通雙絞屏蔽線時,距離可達30~35米。
4. 串口通信應用說明
4.1 串口通信基本接線方法
目前較為常用的串口有9針串口(DB9)和25針串口(DB25),通信距離較近 時(<12m),可以用電纜線直接連接標準RS232端口(RS422,RS485較遠),若距離較遠,需附加調制解調器(MODEM)。
最為簡單且常用的是三線制接法,即地、接收數據和發送數據三腳相連,本文只涉及到最為基本的接法,且直接用 RS232相連。
a、DB9和DB25的常用信號腳說明
b、RS232C串口通信接線方法(三線制)
首先,串口傳輸數據只要有接收數據針腳和發送針腳就能實現同一個串口的接收腳和發 送腳直接用線相連,兩個串口相連或一個串口和多個串口相連。
1)同一個串口的接收腳和發送腳直接用線相連,對9針串口和25針串口,均是2與3直接相 連。
2) 兩個不同串口(不論是同一臺計算機的兩個串口或分別是不同計算機的串口)
上面表格是對微機標準串行口而言的,還有許多非標準設備,如接收GPS數據或電子羅盤數據,只要記住 一個原則:接收數據針腳(或線)與發送數據針腳(或線)相連,彼此交叉,信號地對應相接,就能百戰百勝。
4.2 串口調試中要注意的幾點
1) 串口調試時,準備一個好用的調試工具,如串口調試助手、串口精靈等,有事半 功倍之效果。
2) 強烈建議不要帶電插撥串口,插撥時至少有一端是斷電的,否則串口易損壞。
4.3 單工、半雙工和全雙工的定義
如果在通信過程的任意時刻,信息只能由一方A傳到另一方B,則稱為單工。
如果在任意時刻,信息既可由A傳到B,又能由B傳A,但只能由一個方向上的傳輸存在,稱為半雙工 傳輸。
如果在任意時刻,線路上存在A到B和B到A的雙向信號傳輸,則稱為全雙工。
電話線就是二線全雙工信道,由于采用了回波抵消技術,雙向的傳輸信號不致混淆不 清。
雙工信道有時也將收、發信道分開,采用分離的線路或頻帶傳輸相反方向的信號,如回線傳輸。
4.4 奇偶校驗
串行數據在傳輸過程中,由于干擾可能引起信息的出錯,例如,傳輸字符‘E’,其各位為:
0100 0101 = 45H
D7 D0
由于干擾,可能使位變為1,這種情況,我們稱為出現了“誤碼”。我們把如何發現傳輸中的錯 誤,叫“檢錯”。發現錯誤后,如何消除錯誤,叫“糾錯”。
最簡單的檢錯方法是“奇偶校驗”,即在傳送字符的各位之外,再傳送1位奇/偶校驗位,可采用奇校驗或偶校 驗。
奇校驗:所有傳送的數位(含字符的各數位和校驗位)中,“1”的個數為奇數。如:
1 0110,0101
0 0110,0001
偶校驗:所有傳送的數位(含字符的各數位和校驗位)中,“1”的個數為偶數,如:
1 0100,0101
0 0100,0001
奇偶校驗能夠檢測出信息傳輸過程中的部分誤碼(1位誤碼能檢出,2位及2位以上誤碼不能檢出),同時它不 能糾錯。在發現錯誤后,只能要求重發。但由于其實現簡單,仍得到了廣泛使用。
有些檢錯方法,具有自動糾錯能力。如循環冗余碼(CRC)檢錯等。
4.5 串口通訊流控制
我們在串行通訊處理中,常?吹絉TS/CTS和XON/XOFF這兩個選項,這就是兩個流控制的選項, 目前流控制主要應用于調制解調器的數據通訊中,但對普通RS232編程,了解一點這方面的知識是有好處的。那么,流控制在串行通訊中有何作用,在編制串行 通訊程序怎樣應用呢?這里我們就來談談這個問題。
這里講到的“流”,當然指的是數據流。
數據在兩個串口之間傳輸時,常常會出現丟失數據的現象,或者兩臺計算機的處理速度不同, 如臺式機與單片機之間的通訊,接收端數據緩沖區已滿,則此時繼續發送來的數據就會丟失。現在我們在網絡上通過MODEM進行數據傳輸,這個 問題就尤為突出。
流控制能解決這個問題,當接收端數據處理不過來時,就發出“不再接收”的信號,發送端就停止發送,直到收 到“可以繼續發送”的信號再發送數據。因此流控制可以控制數據傳輸的進程,防止數據的丟失。
PC機中常用的兩種流控制是硬件流控制(包括RTS/CTS、DTR/CTS等)和軟件流 控制XON/XOFF(繼續/停止),下面分別說明。
1) 硬件流控制
硬件流控制常用的有RTS/CTS流控制和DTR/DSR(數據終端就緒/數據設置就緒) 流控制。
硬件流控制必須將相應的電纜線連上,用RTS/CTS(請求發送/清除發送)流控制時,應將通訊兩端的RTS、 CTS線對應相連,數據終端設備(如計算機)使用RTS來起始調制解調器或其它數據通訊設備的數據流,而數據通訊設備(如調制解調器)則用CTS來起動和 暫停來自計算機的數據流。
這種硬件握手方式的過程為:我們在編程時根據接收端緩沖區大小設置一個高位標志(可為緩沖 區大小的75%)和一個低位標志(可為緩沖區大小的25%),當緩沖區內數據量達到高位時,我們在接收端將CTS線置低電平 (送邏輯0),當發送端的程序檢測到CTS為低后,就停止發送數據,直到接收端緩沖區的數據量低于低位而將CTS置高電平。RTS則用來標明接收 設備有沒有準備好接收數據。
常用的流控制還有還有DTR/DSR(數據終端就緒/數據設置就緒)!
2) 軟件流控制
由于電纜線的限制,我們在普通的控制通訊中一般不用硬件流控制,而用軟件流控制,一般通過 XON/XOFF來實現軟件流控制。常用方法如下:
當接收端的輸入緩沖區內數據量超過設定的高位時,就向數據發送端發出XOFF字符(十進制 的19或Control-S,設備編程說明書應該有詳細闡述),發送端收到XOFF字符后就立即停止發送數據;
當接收端的輸入緩沖區內數據量低于設定的低位時,就向數據發送端發出XON字符(十進制的 17或Control-Q),發送端收到XON字符后就立即開始發送數據。
一般可以從設備配套源程序中找到發送的是什么字符。
應該注意,若傳輸的是二進制數據,標志字符也有可能在數據流中出現而引起誤操作,這是軟件流控制的缺陷, 而硬件流控制不會有這個問題。
RS-232、RS-422與RS-485都是串行數據接口標準,最初都是由電子工業協會(EIA)制訂并發布 的。
RS-232在1962年發布,命名為EIA-232-E,作為工業標準,以保證不同廠家產品之間的兼容。
RS-422由RS-232發展而來,它是為彌補RS-232之不足而提出的。為改進RS-232通信距 離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到 4000英尺(速率低于100kb/s時),并允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機發送、多 機接收的單向、平衡傳輸規范,被命名為TIA/EIA-422-A標準。
為擴展應用范圍,EIA又于1983年在RS-422基礎上制定了RS-485標準,增加了多點、雙向通 信能力,即允許多個發送器連接到同一條總線上,同時增加了發送器的驅動能力和沖突保護特性,擴展了總線共模范圍,后 命名為TIA/EIA-485-A標準。
由于EIA提出的建議標準都是以“RS”作為前綴,所以在通訊工業領域,仍然習慣將上述標準以RS作前綴稱謂。
RS-232、RS-422與RS-485標準只對接口的電氣特性做出規定,而不涉及接插件、電纜或協議,在此 基礎上用戶可以建立自己的高層通信協議。
RS-232串行接口標準
目前RS-232是PC機與通信工業中應用最廣泛的一種串行接口。RS-232被定義為一種在低速率串行 通訊中增加通訊距離的單端標準。RS-232采取不平衡傳輸方式,即所謂單端通訊。
收、發端的數據信號是相對于信號地,如從DTE設備發出的數據在使用DB25連接器時是2腳相對7腳(信號地) 的電平,DB25各引腳定義參見圖5。
典型的RS-232信號在正負電平之間擺動,在發送數據時,發送端驅動器輸出正電平 在+5~+15V,負電平在-5~-15V電平。
當無數據傳輸時,線上為TTL,從開始傳送數據到結束,線上電平從TTL電平到RS-232電平 再返回TTL電平。
接收器典型的工作電平在+3~+12V與-3~-12V。
由于發送電平與接收電平的差僅為2V至3V左右,所以其共模抑制能力差,再加上雙絞線上的 分布電容,其傳送距離最大為約15米,最高速率為20kb/s。
RS-232是為點對點(即只用一對收、發設備)通訊而設計的,其驅動器負載為3~7kΩ, 所以RS-232適合本地設備之間的通信,其有關電氣參數參見表1。
6、RS-422與RS-485的網絡失效保護
RS-422與RS-485標準都規定了接收器門限為±200mV。這樣規定能夠提供比較高的噪 聲抑制能力,如前文所述,當接收器A電平比B電平高+200mV以上時,輸出為正邏輯,反之,則輸出為負邏輯。
但由于第三態的存在,即在主機在發端發完一個信息數據后,將總線置于第三態,即總線空閑時 沒有任何信號驅動總線,使AB之間的電壓在-200~+200mV直至趨于0V,這帶來了一個問題,就是接收器輸出狀態不確定。
如果接收機的輸出為0V,網絡中從機將把其解釋為一個新的啟動位,并試圖讀取后續字節,由于永遠不會有停止位, 產生一個幀錯誤結果,不再有設備請求總線,網絡陷于癱瘓狀態。
除上述所述的總線空閑會造成兩線電壓差低于200mV的情況外,開路或短路時也會 出現這種情況,故應采取一定的措施避免接收器處于不確定狀態。
通常是在總線上加偏置,當總線空閑或開路時,利用偏置電阻將總線偏置在一個確定的狀態(差 分電壓≥-200mV)。如圖17。
將A上拉到地,B下拉到5V,電阻的典型值是1kΩ,具體數值隨電纜的電容變化而變化。
上述方法是比較經典的方法,但它仍然不能解決總線短路時的問題,有些廠家將接收門限移到 -200mV/-50mV,可解決這個問題。
例如Maxim公司的MAX3080系列RS-485接口,不僅省去了外部偏置電阻,而且解決了總線短路情況下 的失效保護問題。
7、RS-422與RS-485的瞬態保護
前文提到的信號接地措施,只對低頻率的共模干擾有保護作用,對于頻率很高的瞬態干擾就無能為力了。由于傳 輸線對高頻信號而言就是相當于電感,因此對于高頻瞬態干擾,接地線實際等同于開路。這樣的瞬態干擾雖然持續時間短暫,但可能會有成百上千伏的電 壓。
實際應用環境下還是存在高頻瞬態干擾的可能。一般在切換大功率感性負載如電機、變壓器、繼電器等 或閃電過程中都會產生幅度很高的瞬態干擾,如果不加以適當防護就會損壞RS-422或RS-485通信接口。對于這種瞬態干擾可以采用隔 離或旁路的方法加以防護。
1) 隔離保護方法
這種方案實際上將瞬態高壓轉移到隔離接口中的電隔離層上,由于隔離層的高絕緣電阻,不會產生損害性的浪涌電流, 起到保護接口的作用。
通常采用高頻變壓器、光耦等元件實現接口的電氣隔離,已有器件廠商將所有這些元件 集成在一片IC中,使用起來非常簡便,如Maxim公司的MAX1480/MAX1490,隔離電壓可達2500V。這種方案的優點是可以承受高電壓、持 續時間較長的瞬態干擾,實現起來也比較容易,缺點是成本較高。
2) 旁路保護方法
這種方案利用瞬態抑制元件(如TVS、MOV、氣體放電管等)將危害性的瞬態能量旁路到大地,優點是成本較低, 缺點是保護能力有限,只能保護一定能量以內的瞬態干擾,持續時間不能很長,而且需要有一條良好的連接大地的通道,實現起來比較困難。
實際應用中是將上述兩種方案結合起來靈活加以運用,如圖18。
在這種方法中,隔離接口對大幅度瞬態干擾進行隔離,旁路元件則保護隔離接口不被過高的瞬態 電壓擊穿。