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。

它规定连接电缆和机械、电气特性、信号功能及传送过程。其他常用电气标准还有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。当线路中断的时候，电传打字机不打印任何有效字符，周期性的连续收到全零信号。

### 连接器

<image>

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或者是DE-9型连接器被广泛使用绝大多数自IBM的AT机之后的PC机和其他许多设备上。DB-25和DE-9型的连接器在大部分设备上是雌型，但不是所有的都是这样。最近，8管脚的RJ-45型连接器变得越来越普遍，尽管它的管脚分配相差很大。EIA/TIA 561标准规定了一种管脚分配的方法，但是由Dave Yost发明的被广泛使用在Unix计算机上的Yost串连设备配线标准（"Yost Serial Device Wiring Standard"）以及其他很多设备都没有采用上述任一种连线标准。

下表中列出的是被较多使用的RS-232中的信号和管脚分配：

```
           DE-9 Male（Pin Side）                   DE-9 Female （Pin Side）
             -------------                          -------------
             \ 1 2 3 4 5 /                          \ 5 4 3 2 1 /
              \ 6 7 8 9 /                            \ 9 8 7 6 /
               ---------                              ---------
```

信号｜DB-25｜DE-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纸带读卡机和纸带穿孔器也是唯一的恢复程序的方法。

## 类似规范

- 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