RS-232
RS-232是美国电子工业联盟(EIA)制定的串行数据通信的接口标准,原始編號是EIA-RS-232(簡稱232,RS232)。它广泛用于计算机串行接口外设连接。
RS-232C標準,其中EIA()代表美國電子工業協會,RS()代表推薦標準,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)