RS-232

**RS-232** 是美國電子工業聯盟（EIA）制定的序列資料通訊的介面標準，原始編號全名是 **EIA-RS-232**（簡稱 232，RS232）。它廣泛用於電腦序列介面外設連接。

RS-232C 標準，其中 EIA（Electronic Industry Association）代表美國電子工業協會，RS（**R**ecommended **S**tandard）代表推薦標準，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。

它規定連接電纜和機械、電氣特性、訊號功能及傳送過程。其他常用電氣標準還有 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 /
               ---------                              ---------
```

TXD
DTE->DCE DTE SEND DATA

RXD
DCE->DTE DTE RECEIVE DATA

RTS
DTE->DCE DTE REQUEST SEND

CTS
DCE->DTE ACK TO DTE'S RTS

DSR
DCE->DTE DCE IS READY

GND

DCD
DCE->DTE DC DETECTED

DTR
DTE->DCE DTE IS READY

RI
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 紙帶讀卡機和紙帶穿孔器也是唯一的恢復程式的方法。

## 類似規範

* ITU-T（前 CCITT）的對應規範，用語不同，但電氣規格幾乎相同
  * ITU-T V.28
* 具有相似的通訊目的，但功能與電氣規範不同
  * RS-422
  * RS-423
  * RS-449
  * RS-485

## 外部連結

* RS-232 professional maker (ZYWYN.com）
* RS-232 tutorial（頁面存檔備份，存於網際網路檔案館）
* Yost Serial Device Wiring Standard（頁面存檔備份，存於網際網路檔案館）
* Serial Port Basics
* RS232 serial port info（頁面存檔備份，存於網際網路檔案館）
* Printable ASCII Serial Port Crib Sheets

## 參考文獻