RS-232
RS-232是美國電子工業聯盟(EIA)制定的序列數據通訊的介面標準,原始編號全名是EIA-RS-232(簡稱232,RS232)。它廣泛用於電腦序列介面外設連接。
RS-232C標準,其中EIA(Electronic Industry Association)代表美國電子工業協會,RS(Recommended Standard)代表推薦標準,232是標識號,C代表RS232的第三次修改(1969年),在這之前,還有RS232B、RS232A。
目前的最新版本是由美國電信工業協會(TIA, Telecommunications Industry Association,由EIA所分出的一個組織)所發行的TIA-232-F,它同時也是美國國家標準ANSI/TIA-232-F-1997(R2002),此標準於2002年受到再確認。在 1997年由TIA/EIA發行當時的編號則是TIA/EIA-232-F與ANSI/TIA/EIA-232-F-1997。在此之前的版本是TIA/EIA-232-E。[1]
它規定連接電纜和機械、電氣特性、訊號功能及傳送過程。其他常用電氣標準還有EIA-RS-422-A、EIA-RS-423A、EIA-RS-485。
目前在IBM PC機上的COM1、COM2介面,就是RS-232C介面。RS-232對電氣特性、邏輯電位和各種訊號線功能都作了規定。
由於RS-232-C的重大影響,即使自IBM PC/AT開始改用9針連接器起,目前已幾乎不再使用RS-232中規定的25針連接器。一般人談到RS-232此一介面時很有可能指的是RS-232-C。
標準的細節
在RS-232標準中,字元是以一序列的位元串來一個接一個的串列(serial)方式傳輸,優點是傳輸線少,配線簡單,傳送距離可以較遠。最常用的編碼格式是非同步起停(asynchronous start-stop)格式,它使用一個起始位元後面緊跟7或8個數據位元(bit),然後是可選的奇偶校驗位元,最後是一或兩個停止位元。所以傳送一個字元至少需要10位元,帶來的一個好的效果是使全部的傳輸速率,傳送訊號的速率以10劃分。一個最平常的代替非同步起停方式的是使用進階數據鏈路控制協定(HDLC)。
在RS-232標準中定義了邏輯一和邏輯零電壓級數,以及標準的傳輸速率和連接器類型。訊號大小在正的和負的3-15v之間。RS-232規定接近零的電位是無效的,邏輯一規定為負電位,有效負電位的訊號狀態稱為傳號marking,它的功能意義為OFF,邏輯零規定為正電位,有效正電位的訊號狀態稱為空號spacing,它的功能意義為ON。電位有效範圍在±3至±15伏之間。根據裝置供電電源的不同,±5、±10、±12和±15這樣的電壓都是可能的。
mark和space是從電傳打字機中來的術語。電傳打字機原始的通訊是一個簡單的中斷直流電路模式,類似與圓轉盤電話撥號的中的訊號。Marking狀態是指電路是斷開的,spacing狀態就是指電路是接通的。一個space就表明有一個字元要開始傳送了,相應的停止的時候,停止位就是marking。當線路中斷的時候,電傳打字機不列印任何有效字元,周期性的連續收到全零訊號。
連接器
RS-232設計之初是用來連接數據機做傳輸之用,也因此它的腳位意義通常也和數據機傳輸有關。RS-232的裝置可以分為數據終端裝置(DTE,Data Terminal Equipment, For example, PC)和數據通訊裝置(DCE,Data Communication Equipment)兩類,這種分類別定義了不同的線路用來傳送和接受訊號。一般來說,電腦和終端裝置有DTE連接器,數據機和印表機有DCE連接器。但是這麼說並不是總是嚴格正確的,用配線分接器測試連接,或者用試誤法來判斷電纜是否工作,常常需要參考相關的檔案說明。
RS-232指定了20個不同的訊號連接,由25個D-sub(微型D類)接腳構成的DB-25連接器。很多裝置只是用了其中的一小部分接腳,出於節省資金和空間的考慮,不少機器採用較小的連接器,特別是9針的D-sub或者是DB-9型連接器被廣泛使用絕大多數自IBM的AT機之後的PC機和其他許多裝置上。DB-25和DB-9型的連接器在大部分裝置上是母接頭,但不是所有的都是這樣。最近,8針的RJ-45型連接器變得越來越普遍,儘管它的針腳配置相差很大。EIA/TIA 561標準規定了一種針腳相容的方法,但是由Dave Yost發明的被廣泛使用在Unix電腦上的Yost串連裝置配線標準("Yost Serial Device Wiring Standard")以及其他很多裝置都沒有採用上述任一種連線標準。
下表中列出的是被較多使用的RS-232中的訊號和接腳分配:
DB-9 Male(Pin Side) DB-9 Female (Pin Side) ------------- ------------- \ 1 2 3 4 5 / \ 5 4 3 2 1 / \ 6 7 8 9 / \ 9 8 7 6 / --------- ---------
訊號 | DB-25 | DB-9 | EIA/TIA 561 | Yost |
---|---|---|---|---|
公共接地 | 7 | 5 | 4 | 4,5 |
傳送數據(TD、TXD) | 2 | 3 | 6 | 3 |
接受數據(RD、RXD) | 3 | 2 | 5 | 6 |
數據終端準備(DTR) | 20 | 4 | 3 | 2 |
數據準備好(DSR) | 6 | 6 | 1 | 7 |
請求傳送(RTS) | 4 | 7 | 8 | 1 |
清除傳送(CTS) | 5 | 8 | 7 | 8 |
數據載波檢測(DCD) | 8 | 1 | 2 | 7 |
振鈴指示(RI) | 22 | 9 | 1 | - |
腳位 | 簡寫 | 意義 | 說明 | 方向 | 意義 |
---|---|---|---|---|---|
Pin1 | DCD | Data Carrier Detect | 數據機通知電腦有載波被偵測到 | DCE->DTE | DC DETECTED |
Pin2 | RXD | Receiver | 接收資料 | DCE->DTE | DTE RECEIVE DATA |
Pin3 | TXD | Transmit | 傳送資料 | DTE->DCE | DTE SEND DATA |
Pin4 | DTR | Data Terminal Ready | 電腦告訴數據機可以進行傳輸 | DTE->DCE | DTE IS READY |
Pin5 | GND | Ground | 地線 | ||
Pin6 | DSR | Data Set Ready | 數據機告訴電腦一切準備就緒 | DCE->DTE | DCE IS READY |
Pin7 | RTS | Request To Send | 電腦要求數據機將資料送出 | DTE->DCE | DTE REQUEST SEND |
Pin8 | CTS | Clear To Send | 數據機通知電腦可以傳資料過來 | DCE->DTE | ACK TO DTE'S RTS |
Pin9 | RI | Ring Indicator | 數據機通知電腦有電話進來 | DCE->DTE | RING INDICATION |
訊號的標註是從DTE裝置的角度出發的,TD、DTR和RTS訊號是由DTE產生的,RD、DSR、CTS、DCD和RI訊號是由DCE產生的。接地訊號是所有連接都公共的,在Yost的標準中接地訊號外部有兩個接腳事實上是同一個訊號。如果兩個通訊裝置的距離相差的很遠或者是有兩個不同的供電系統供電,那麼地訊號在兩個裝置間會不一樣,從而導致通訊失敗,跟蹤描述這樣的情形是很困難的。
電纜
由於RS-232實現中的各種不同和矛盾,要決定使用哪個合適的電纜來連接兩個通訊裝置不是一件非常容易的事。用同一種類型的連接器來連接DCE和DTE裝置需要直接的電纜還要有合適的終點。凹凸轉換器被用於電纜和連接器間解決接頭公/母不正確問題。用不同連接器來連接裝置需要根據上表,用不同的電纜來連接相應的接腳。電纜一端9針,另一端25針是很普通的,生產以RJ-45型為連接器的裝置廠家通常都會提供DB-25或者DB-9型接頭的電纜(有時候則是接頭可交換的電纜,可供多種裝置工作)。
連接兩個DTE裝置需要一個虛擬數據機來充當DCE交換相應的訊號(TD-RD, DTR-DSR, and RTS-CTS)。這個可以由單獨的裝置加上兩根電纜或者用一根電纜來完成。Yost標準里虛擬數據機是一個全反線,它把一個埠的1到8號接腳翻轉和另一個埠的8到1號接腳相連接(不要和乙太網路的反絞線混淆,乙太網路反絞線接線是非常不同的)。
為了組態和診斷RS-232電纜,可以採用配線分接器。配線分接器有凹凸RS-232連接器,可以內嵌式的連接線路,而且提供對應每個針腳的顯示燈,還可以各種組態方式連接針腳。
RS-232電纜和很多連接器都可以在電子產品的商店找到,電纜可能是3到25個針腳的,典型應用的是4到6個針腳的。平RJ(電話線類型)電纜可以和專門的RJ-RS-232連接器一起使用,後者是最容易組態的連接器。
雙向介面能夠只需要3根線製作是因為RS-232的所有訊號都共用一個公共接地。非平衡電路使得RS-232非常的容易受兩裝置間基點電壓偏移的影響。對於訊號的上升期和下降期,RS-232也只有相對較差的控制能力,很容易發生串話的問題。RS-232被推薦在短距離(15m以內)間通訊。由於非對稱電路的關係,RS-232介面電纜通常不是由雙絞線製作的。
有些裝置也需要「握手」協定,例如,20號接腳一般用於指示「裝置就緒」。針腳也可是跳過的或者從連接器接回。例如裝置A的一個針腳傳送訊號詢問對方「你準備好了嗎?」假如裝置B沒有傳送這樣的指示訊號。公共的握手針腳為20、8、4和6。
設定
序列通訊在軟件設定裡需要做多項設定,最常見的設定包括鮑率(Baud)、同位檢查(Parity Check)和停止位(Stop Bit)。
- 鮑率:是指從一裝置發到另一裝置的傳符號率,即每秒鐘多少符號。典型的鮑率是300, 1200, 2400, 9600, 19200, 115200等。一般通訊兩端裝置都要設為相同的鮑率,但有些裝置也可設定為自動檢測鮑率。
- 同位檢查(Parity:是用來驗證數據的正確性。同位檢查一般不使用,如果使用,那麼既可以做奇同位(Odd Parity)也可以做偶同位(Even Parity)。同位檢查是通過修改每一傳送位元組(也可以限制傳送的位元組)來工作的。如果不作同位檢查,那麼數據是不會被改變的。在偶同位中,因為奇偶檢查位會被相應的置1或0(一般是最高位或最低位),所以數據會被改變以使得所有傳送的數碼(含字元的各數碼和檢查位)中「1」的個數為偶數;在奇同位中,所有傳送的數碼(含字元的各數碼和檢查位)中「1」的個數為奇數。同位檢查可以用於接受方檢查傳輸是否傳送生錯誤——如果某一位元組中「1」的個數發生了錯誤,那麼這個位元組在傳輸中一定有錯誤發生。如果同位檢查是正確的,那麼要麼沒有發生錯誤要麼發生了偶數個的錯誤。如果用戶選擇資料長度為8位元,則因為沒有多餘的位元可被用來作為同位元,因此就叫做「無同位(Non Parity)」。
- 停止位:是在每個位元組傳輸之後傳送的,它用來幫助接受訊號方硬體重同步。
RS-232在傳送資料時,並不需要另外使用一條傳輸線來傳送同步訊號,就能正確的將資料順利傳送到對方,因此屬於「非同步傳輸」,必須在每一筆資料的前後都加上同步訊號,把同步訊號與資料混和之後,使用同一條傳輸線來傳輸。比如資料11001010被傳輸時,資料的前後就需加入Start(Low)以及Stop(High)等兩個位元,值得注意的是,Start訊號固定為一個位元,但Stop停止位元則可以是1、1.5或者是2位元,由使用RS-232的傳送與接收兩方面自行選擇,但需注意傳送與接受兩者的選擇必須一致。 在序列通訊軟件設定中D/P/S是常規的符號表示。8/N/1(非常普遍)表明8bit數據,沒有同位檢查,1bit停止位。數據位可以設定為5、6、7或者8位元(不可以大於8或小於5),同位檢查位可以設定為無(N)、奇(O)或者偶(E),同位檢查可以使用數據中的位元(bit),所以8/E/1就表示一共8位元數據位,其中一位用來做同位檢查位。停止位可以是1、1.5或者2位的(1.5是用在鮑率為60wpm的電傳打字機上的)。
- 流量控制:當需要傳送握手訊號或數據完整性檢測時需要制定其他設定。公用的組合有RTS/CTS, DTR/DSR或者XON/XOFF(實際中不使用連接器接腳而在數據流內插入特殊字元)。
接受方把XON/XOFF訊號發給傳送方來控制傳送方何時傳送數據,這些訊號是與傳送數據的傳輸方向相反的。XON訊號告訴傳送方接受方準備好接受更多的數據,XOFF訊號告訴傳送方停止傳送數據直到知道接受方再次準備好。XON/XOFF一般不贊成使用,推薦用RTS/CTS控制流來代替它們。 XON/XOFF是一種工作在終端間的帶內方法,但是必須兩端都支援這個協定,而且在突然啟動的時候會有混淆的可能。 XON/XOFF可以工作於3線的介面。RTS/CTS最初是設計為電傳打字機和數據機半雙工協同運作通訊的,每次它只能一方數據機傳送數據。終端必須傳送請求傳送訊號然後等到數據機回應清除傳送訊號。儘管RTS/CTS是通過硬體達到握手,但它有自己的優勢。
ASR(Automatic Send Receive)電傳打字機有一個紙帶讀卡機。當讀卡機讀數據的時候字元被傳送出去。ASR電傳打字機裡收到一個XOFF字元就關掉紙帶讀卡機收到一個XON字元就啟動紙帶讀卡機。當遠端系統有必要降低傳送放的速率時就發出XOFF。在原始的系統中,訊息要用紙帶事先準備好,傳送的時間才能被縮短。那時的頻寬非常有限並且昂貴,有時候傳輸不得不推遲到晚上進行,這也正推動了簡明電報表達的發展。在有些早期的小型機中,ASR紙帶讀卡機和紙帶穿孔器也是唯一的恢復程式的方法。
類似規範
外部連結
參考文獻
- ^ ANSI/TIA-232-F-1997, Approved: September 30, 1997, Reaffirmed: October 11, 2002, TIA STANDARD, "Interface Between Data Terminal Equipment and Data Circuit-Terminating Equipment Employing Serial Binary Data Interchange", TIA-232-F, (Revision of TIA/EIA-232-E)