416 lines
21 KiB
Plaintext
416 lines
21 KiB
Plaintext
|
.pn
|
|||
|
A Practical Guide to RS-232 Interfacing
|
|||
|
|
|||
|
Lawrence E. Hughes
|
|||
|
|
|||
|
Mycroft Labs, Inc.
|
|||
|
P.O. Box 6045
|
|||
|
Tallahassee, FL 32301
|
|||
|
|
|||
|
The following information is intended to collect together in
|
|||
|
one place, and explain in relatively simple terms, enough of the
|
|||
|
details of the RS-232 standard to allow a technician to construct
|
|||
|
and/or debug interfaces between any two "RS-232 Compatible"
|
|||
|
devices. A more detailed coverage of the subject may be found in
|
|||
|
the book "Technical Aspects of Data Communication" by John E.
|
|||
|
McNamara (1977, Digital Press).
|
|||
|
|
|||
|
This guide is necessary due to the casual way that vendors
|
|||
|
implement "RS-232" interfaces, sometimes omitting required
|
|||
|
signals, requiring optional ones, or worse, implementing signals
|
|||
|
incorrectly. Due to this, and a lack of readily available
|
|||
|
information about the real EIA standard, there is often
|
|||
|
considerable confusion involved in trying to interface two RS-232
|
|||
|
devices.
|
|||
|
|
|||
|
BACKGROUND
|
|||
|
|
|||
|
RS-232-C is the most recent version of the EIA (Electronics
|
|||
|
Industry Association) standard for low speed serial data
|
|||
|
communication. It defines a number of parameters concerning
|
|||
|
voltage levels, loading characteristics and timing relationships.
|
|||
|
The actual connectors which are almost universally used (DB-25P
|
|||
|
and DB-25S, sometimes called "EIA connectors") are recommended,
|
|||
|
but not mandatory. Typical practice requires mounting the female
|
|||
|
(DB-25S) connector on the chassis of communication equipment, and
|
|||
|
male (DB-25P) connectors on the cable connecting two such
|
|||
|
devices.
|
|||
|
|
|||
|
There are two main classes of RS-232 devices, namely DTE (Data
|
|||
|
Terminal Equipment), such as terminals, and DCE (Data
|
|||
|
Communication Equipment), such as modems. Typically, one only
|
|||
|
interfaces a DTE to a DCE, as opposed to one DTE to another DTE,
|
|||
|
or one DCE to another DCE, although there are ways to do the
|
|||
|
later two by building non-standard cables. Rarely if ever are
|
|||
|
more than two devices involved in a given interface (multidrop is
|
|||
|
not supported). A serial port on a computer may be implemented as
|
|||
|
either DTE or DCE, depending on what type of device it is
|
|||
|
intended to support.
|
|||
|
|
|||
|
RS-232 is intended for relatively short (50 feet or less),
|
|||
|
relatively low speed (19,200 bits per second or less) serial (as
|
|||
|
opposed to parallel) communications. Both asynchronous and
|
|||
|
synchronous serial encoding are supported. As 'digital' signals
|
|||
|
(switched D.C. voltage, such as square waves) are used, as
|
|||
|
opposed to 'analog' signals (continuously varying voltage, such
|
|||
|
as sine waves) a very wide bandwidth channel (such as direct
|
|||
|
wire) is required. A limited bandwidth channel (such as a phone
|
|||
|
circuit) would cause severe and unacceptable distortion and
|
|||
|
consequent loss of information.
|
|||
|
|
|||
|
RS-232 will support simplex, half-duplex, or full-duplex type
|
|||
|
channels. In a simplex channel, data will only ever be travelling
|
|||
|
in one direction, e.g. from DCE to DTE. An example might be a
|
|||
|
'Receive Only' printer. In a half-duplex channel, data may travel
|
|||
|
in either direction, but at any given time data will only be
|
|||
|
travelling in one direction, and the line must be 'turned around'
|
|||
|
before data can travel in the other direction. An example might
|
|||
|
be a Bell 201 style modem. In a full-duplex channel, data may
|
|||
|
travel in both directions simultaneously. An example might be a
|
|||
|
Bell 103 style modem. Certain of the RS-232 'hand-shaking' lines
|
|||
|
are used to resolve problems associated with these modes, such as
|
|||
|
which direction data may travel at any given instant.
|
|||
|
|
|||
|
If one of the devices involved in an RS-232 interface is a
|
|||
|
real modem (especially a half-duplex modem), the 'hand-shaking'
|
|||
|
lines must be supported, and the timing relationships between
|
|||
|
them are quite important. These lines are typically much easier
|
|||
|
to deal with if no modems are involved. In certain cases, these
|
|||
|
lines may be used to allow one device (which is receiving data at
|
|||
|
a higher rate than it is capable of processing indefinitely) to
|
|||
|
cause the other device to pause while the first one 'catches up'.
|
|||
|
This use of the hand-shaking lines was not really intended by the
|
|||
|
designers of the RS-232 standard, but it is a useful by-product
|
|||
|
of the way such interfaces are typically implemented.
|
|||
|
|
|||
|
Much of the RS-232 standard is concerned with support of
|
|||
|
'modems'. These are devices which can convert a serial digital
|
|||
|
data signal into an analog signal compatible with a narrow
|
|||
|
bandwidth (e.g. 3 kHz) channel such as a switched telephone
|
|||
|
circuit, and back into serial digital data on the other end. The
|
|||
|
first process is called 'MOdulation', and the second process is
|
|||
|
called 'DEModulation', hence the term 'MODEM'. The actual process
|
|||
|
used (at data rates of up to 1200 bits per second) is FSK
|
|||
|
(Frequency Shift Keying), in which a constant frequency sine wave
|
|||
|
(called the 'carrier') is shifted to a slightly higher or
|
|||
|
slightly lower frequency to represent a logic 0 or logic 1,
|
|||
|
respectively. In a half duplex modem, the entire available
|
|||
|
bandwidth is used for one direction. In a full duplex modem, the
|
|||
|
available bandwidth is divided into two sub-bands, hence there is
|
|||
|
both an 'originate carrier' (e.g. for data from the terminal to
|
|||
|
the computer), and an 'answer carrier' (e.g. for data from the
|
|||
|
computer to the terminal). The actual frequencies (in Hertz) used
|
|||
|
on the Bell 103A full duplex modem are:
|
|||
|
|
|||
|
signal state Originate Answer
|
|||
|
|
|||
|
logic 0 SPACE 1180 1850
|
|||
|
carrier 1080 1750
|
|||
|
logic 1 MARK 980 1650
|
|||
|
|
|||
|
.pa
|
|||
|
THE STANDARD CIRCUITS AND THEIR DEFINITIONS
|
|||
|
|
|||
|
For the purposes of the RS-232 standard, a 'circuit' is
|
|||
|
defined to be a continuous wire from one device to the other.
|
|||
|
There are 25 circuits in the full specification, less than half
|
|||
|
of which are at all likely to be found in a given interface. In
|
|||
|
the simplest case, a full-duplex interface may be implemented
|
|||
|
with as few as 3 circuits. There is a certain amount of confusion
|
|||
|
associated with the names of these circuits, partly because there
|
|||
|
are three different naming conventions (common name, EIA circuit
|
|||
|
name, and CCITT circuit name). The table below lists all three
|
|||
|
names, along with the circuit number (which is also the connector
|
|||
|
pin with which that circuit is normally associated on both ends).
|
|||
|
Note that the signal names are from the viewpoint of the DTE
|
|||
|
(e.g. Transmit Data is data being sent by the DTE, but received
|
|||
|
by the DCE).
|
|||
|
|
|||
|
PIN NAME EIA CCITT DTE DCE FUNCTION
|
|||
|
|
|||
|
1 CG AA 101 --- Chassis Ground
|
|||
|
2 TD BA 103 --> Transmit Data
|
|||
|
3 RD BB 104 <-- Receive Data
|
|||
|
4 RTS CA 105 --> Request To Send
|
|||
|
5 CTS CB 106 <-- Clear To Send
|
|||
|
6 DSR CC 107 <-- Data Set Ready
|
|||
|
7 SG AB 102 --- Signal Ground
|
|||
|
8 DCD CF 109 <-- Data Carrier Detect
|
|||
|
9* <-- Pos. Test Voltage
|
|||
|
10* <-- Neg. Test Voltage
|
|||
|
11 (usually not used)
|
|||
|
12+ SCDC SCF 122 <-- Sec. Data Car. Detect
|
|||
|
13+ SCTS SCB 121 <-- Sec. Clear To Send
|
|||
|
14+ STD SBA 118 --> Sec. Transmit Data
|
|||
|
15# TC DB 114 <-- Transmit Clock
|
|||
|
16+ SRD SBB 119 <-- Sec. Receive Data
|
|||
|
17# RC DD 115 <-- Receive Clock
|
|||
|
18 (not usally used)
|
|||
|
19+ SRTS SCA 120 --> Sec. Request To Send
|
|||
|
20 DTR CD 108.2 --> Data Terminal Ready
|
|||
|
21* SQ CG 110 <-- Signal Quality
|
|||
|
22 RI CE 125 <-- Ring Indicator
|
|||
|
23* CH 111 --> Data Rate Selector
|
|||
|
CI 112 <-- Data Rate Selector
|
|||
|
24* XTC DA 113 --> Ext. Transmit Clock
|
|||
|
25* --> Busy
|
|||
|
|
|||
|
In the above, the character following the pin number means:
|
|||
|
|
|||
|
* rarely used
|
|||
|
+ used only if secondary channel implemented
|
|||
|
# used only on synchronous interfaces
|
|||
|
|
|||
|
also, the direction of the arrow indicates which end (DTE or DCE)
|
|||
|
originates each signal, except for the ground lines (---). For
|
|||
|
example, circuit 2 (TD) is originated by the DTE, and received by
|
|||
|
the DCE. Certain of the above circuits (11, 14, 16, and 18) are
|
|||
|
used only by (or in a different way by) Bell 208A modems.
|
|||
|
|
|||
|
A secondary channel is sometimes used to provide a very slow
|
|||
|
(5 to 10 bits per second) path for return information (such as
|
|||
|
ACK or NAK characters) on a primarily half duplex channel. If the
|
|||
|
modem used suppports this feature, it is possible for the
|
|||
|
receiver to accept or reject a message without having to 'turn
|
|||
|
the line around', a process that usally takes 100 to 200
|
|||
|
milliseconds.
|
|||
|
|
|||
|
On the above circuits, all voltages are with respect to the
|
|||
|
Signal Ground (SG) line. The following conventions are used:
|
|||
|
|
|||
|
Voltage Signal Logic Control
|
|||
|
+3 to +25 SPACE 0 On
|
|||
|
-3 to -25 MARK 1 Off
|
|||
|
|
|||
|
Note that the voltage values are inverted from the logic values
|
|||
|
(e.g. the more positive logic value corresponds to the more
|
|||
|
negative voltage). Note also that a logic 0 corresponds to the
|
|||
|
signal name being 'true' (e.g. if the DTR line is at logic 0,
|
|||
|
that is, in the +3 to +25 voltage range, then the Data Terminal
|
|||
|
IS Ready).
|
|||
|
|
|||
|
ELECTRICAL CHARACTERISTICS OF EACH CIRCUIT
|
|||
|
|
|||
|
The following criteria apply to the electrical characteristics
|
|||
|
of each of the above lines:
|
|||
|
|
|||
|
1) The magnitude of an open circuit voltage shall not exceed 25V.
|
|||
|
|
|||
|
2) The driver shall be able to sustain a short to any other wire
|
|||
|
in the cable without damage to itself or to the other equipment,
|
|||
|
and the short circuit current shall not exceed 0.5 ampere.
|
|||
|
|
|||
|
3) Signals shall be considered in the MARK (logic 1) state when
|
|||
|
the voltage is more negative than -3V with respect to the Signal
|
|||
|
Ground. Signals shall be considered in the SPACE (logic 0) state
|
|||
|
when the voltage is more positive that 3V with respect to the
|
|||
|
Signal Ground. The range between -3V and 3V is defined as the
|
|||
|
transition region, within which the signal state is not defined.
|
|||
|
|
|||
|
4) The load impedance shall have a DC resistance of less than
|
|||
|
7000 ohms when measured with an applied voltage of from 3V to 25V
|
|||
|
but more than 3000 ohms when measured with a voltage of less than
|
|||
|
25V.
|
|||
|
|
|||
|
5) When the terminator load resistance meets the requirements of
|
|||
|
Rule 4 above, and the terminator open circuit voltage is 0V, the
|
|||
|
magnitude of the potential of that circuit with respect to Signal
|
|||
|
Ground will be in the 5V to 15V range.
|
|||
|
|
|||
|
6) The driver shall assert a voltage between -5V and -15V
|
|||
|
relative to the signal ground to represent a MARK signal
|
|||
|
condition. The driver shall assert a voltage between 5V and 15V
|
|||
|
relative to the Signal Ground to represent a SPACE signal
|
|||
|
condition. Note that this rule in conjunction with Rule 3 above
|
|||
|
allows for 2V of noise margin. Note also that in practice, -12V
|
|||
|
and 12V are typically used.
|
|||
|
|
|||
|
7) The driver shall change the output voltage at a rate not
|
|||
|
exceeding 30 volts per microsecond, but the time required for the
|
|||
|
signal to pass through the -3V to +3V transition region shall not
|
|||
|
exceed 1 millisecond, or 4 percent of a bit time, whichever is
|
|||
|
smaller.
|
|||
|
|
|||
|
8) The shunt capacitance of the terminator shall not exceed 2500
|
|||
|
picofarads, including the capacitance of the cable. Note that
|
|||
|
when using standard cable with 40 to 50 picofarads per foot
|
|||
|
capacitance, this limits the cable length to no more than 50
|
|||
|
feet. Lower capacitance cable allows longer runs.
|
|||
|
|
|||
|
9) The impedance of the driver circuit under power-off conditions
|
|||
|
shall be greater than 300 ohms.
|
|||
|
|
|||
|
Note that two widely available integrated circuit chips (1488
|
|||
|
and 1489) implement TTL to RS232 drivers (4 per chip), and RS232
|
|||
|
receivers to TTL (also 4 per chip), in a manner consistent with
|
|||
|
all of the above rules.
|
|||
|
|
|||
|
DEFINITION OF THE MOST COMMON CIRCUITS
|
|||
|
|
|||
|
1 CG Chassis Ground
|
|||
|
|
|||
|
This circuit (also called Frame Ground) is a mechanism to
|
|||
|
insure that the chassis of the two devices are at the same
|
|||
|
potential, to prevent electrical shock to the operator. Note
|
|||
|
that this circuit is not used as the reference for any of
|
|||
|
the other voltages. This circuit is optional. If it is used,
|
|||
|
care should be taken to not set up ground loops.
|
|||
|
|
|||
|
2 TD Transmit Data
|
|||
|
|
|||
|
This circuit is the path whereby serial data is sent from
|
|||
|
the DTE to the DCE. This circuit must be present if data is
|
|||
|
to travel in that direction at any time.
|
|||
|
|
|||
|
3 RD Receive Data
|
|||
|
|
|||
|
This circuit is the path whereby serial data is sent from
|
|||
|
the DCE to the DTE. This circuit must be present if data is
|
|||
|
to travel in that direction at any time.
|
|||
|
|
|||
|
4 RTS Request To Send
|
|||
|
|
|||
|
This circuit is the signal that indicates that the DTE
|
|||
|
wishes to send data to the DCE (note that no such line is
|
|||
|
available for the opposite direction, hence the DTE must
|
|||
|
always be ready to accept data). In normal operation, the
|
|||
|
RTS line will be OFF (logic 1 / MARK). Once the DTE has
|
|||
|
data to send, and has determined that the channel is not
|
|||
|
busy, it will set RTS to ON (logic 0 / SPACE), and await an
|
|||
|
ON condition on CTS from the DCE, at which time it may then
|
|||
|
begin sending. Once the DTE is through sending, it will
|
|||
|
reset RTS to OFF (logic 1 / MARK). On a full-duplex or
|
|||
|
simplex channel, this signal may be set to ON once at
|
|||
|
initialization and left in that state. Note that some DCEs
|
|||
|
must have an incoming RTS in order to transmit (although
|
|||
|
this is not strictly according to the standard). In this
|
|||
|
case, this signal must either be brought across from the
|
|||
|
DTE, or provided by a wraparound (e.g. from DSR) locally at
|
|||
|
the DCE end of the cable.
|
|||
|
|
|||
|
5 CTS Clear To Send
|
|||
|
|
|||
|
This circuit is the signal that indicates that the DCE is
|
|||
|
ready to accept data from the DTE. In normal operation, the
|
|||
|
CTS line will be in the OFF state. When the DTE asserts RTS,
|
|||
|
the DCE will do whatever is necessary to allow data to be
|
|||
|
sent (e.g. a modem would raise carrier, and wait until it
|
|||
|
stabilized). At this time, the DCE would set CTS to the ON
|
|||
|
state, which would then allow the DTE to send data. When the
|
|||
|
RTS from the DTE returns to the OFF state, the DCE releases
|
|||
|
the channel (e.g. a modem would drop carrier), and then set
|
|||
|
CTS back to the OFF state. Note that a typical DTE must have
|
|||
|
an incoming CTS before it can transmit. This signal must
|
|||
|
either be brought over from the DCE, or provided by a
|
|||
|
wraparound (e.g. from DTR) locally at the DTE end of the
|
|||
|
cable.
|
|||
|
|
|||
|
6 DSR Data Set Ready
|
|||
|
|
|||
|
This circuit is the signal that informs the DTE that the DCE
|
|||
|
is alive and well. It is normally set to the ON state by the
|
|||
|
DCE upon power-up and left there. Note that a typical DTE
|
|||
|
must have an incoming DSR in order to function normally.
|
|||
|
This line must either be brought over from the DCE, or
|
|||
|
provided by a wraparound (e.g. from DTR) locally at the DTE
|
|||
|
end of the cable. On the DCE end of the interface, this
|
|||
|
signal is almost always present, and may be wrapped back
|
|||
|
around (to DTR and/or RTS) to satisfy required signals whose
|
|||
|
normal function is not required.
|
|||
|
|
|||
|
7 SG Signal Ground
|
|||
|
|
|||
|
This circuit is the ground to which all other voltages are
|
|||
|
relative. It must be present in any RS-232 interface.
|
|||
|
|
|||
|
8 DCD Data Carrier Detect
|
|||
|
|
|||
|
This circuit is the signal whereby the DCE informs the DTE
|
|||
|
that it has an incoming carrier. It may be used by the DTE
|
|||
|
to determine if the channel is idle, so that the DTE can
|
|||
|
request it with RTS. Note that some DTEs must have an
|
|||
|
incoming DCD before they will operate. In this case, this
|
|||
|
signal must either be brought over from the DCE, or provided
|
|||
|
locally by a wraparound (e.g. from DTR) locally at the DTE
|
|||
|
end of the cable.
|
|||
|
|
|||
|
15 TC Transmit Clock
|
|||
|
|
|||
|
This circuit provides the clock for the transmitter section
|
|||
|
of a synchronous DTE. It may or may not be running at the
|
|||
|
same rate as the receiver clock. This circuit must be
|
|||
|
present on synchronous interfaces.
|
|||
|
|
|||
|
17 RC Receiver Clock
|
|||
|
|
|||
|
This circuit provides the clock for the receiver section of
|
|||
|
a synchronous DTE. It may of may not be running at the same
|
|||
|
rate as the transmitter clock. Note that both TC and RC are
|
|||
|
sourced by the DCE. This circuit must be present on
|
|||
|
synchronous interfaces.
|
|||
|
|
|||
|
20 DTR Data Terminal Ready
|
|||
|
|
|||
|
This circuit provides the signal that informs the DCE that
|
|||
|
the DTE is alive and well. It is normally set to the ON
|
|||
|
state by the DTE at power-up and left there. Note that a
|
|||
|
typical DCE must have an incoming DTR before it will
|
|||
|
function normally. This signal must either be brought over
|
|||
|
from the DTE, or provided by a wraparound (e.g. from DSR)
|
|||
|
locally at the DCE end of the cable. On the DTE side of the
|
|||
|
interface, this signal is almost always present, and may be
|
|||
|
wrapped back around to other circuits (e.g. DSR, CTS and/or
|
|||
|
DCD) to satisfy required hand-shaking signals if their
|
|||
|
normal function is not required.
|
|||
|
|
|||
|
Note that in an asynchronous channel, both ends provide their
|
|||
|
own internal timing, which (as long as they are within 5% of each
|
|||
|
other) is sufficient for them to agree when the bits occur within
|
|||
|
a single character. In this case, no timing information need be
|
|||
|
sent over the interface between the two devices. In a synchronous
|
|||
|
channel, however, both ends must agree when the bits occur over
|
|||
|
possibly thousands of characters. In this case, both devices must
|
|||
|
use the same clocks. Note that the transmitter and receiver may
|
|||
|
be running at different rates. Note also that BOTH clocks are
|
|||
|
provided by the DCE. When one has a synchronous terminal tied
|
|||
|
into a synchronous port on a computer via two synchronous modems,
|
|||
|
for example, and the terminal is transmitting, the terminal's
|
|||
|
modem supplies the Transmit Clock, which is brought directly out
|
|||
|
to the terminal at its end, and encodes the clock with the data,
|
|||
|
sends it to the computer's modem, which recovers the clock and
|
|||
|
brings it out as the Receive Clock to the computer. When the
|
|||
|
computer is transmitting, the same thing happens in the other
|
|||
|
direction. Hence, whichever modem is transmitting must supply the
|
|||
|
clock for that direction, but on each end, the DCE device
|
|||
|
supplies both clocks to the DTE device.
|
|||
|
|
|||
|
All of the above applies to interfacing a DTE device to a DCE
|
|||
|
device. In order to interface two DTE devices, it is usually
|
|||
|
sufficient to provide a 'flipped' cable, in which the pairs (TD,
|
|||
|
RD), (RTS,CTS) and (DTR,DSR) have been flipped. Hence, the TD of
|
|||
|
one DTE is connected to the RD of the other DTE, and vica versa.
|
|||
|
It may be necessary to wrap various of the hand-shaking lines
|
|||
|
back around from the DTR on each end in order to have both ends
|
|||
|
work. In a similar manner, two DCE devices can be interfaced to
|
|||
|
each other.
|
|||
|
|
|||
|
An RS-232 'break-out box' is particularly useful in solving
|
|||
|
interfacing problems. This is a device which is inserted between
|
|||
|
the DTE and DCE. Firstly, it allows you to monitor the state of
|
|||
|
the various hand-shaking lines (light on = signal ON / logic 0),
|
|||
|
and watch the serial data flicker on TD and/or RD. Secondly, it
|
|||
|
allows you to break the connection on one or more of the lines
|
|||
|
(with dip-switches), and make any kind of cross-connections
|
|||
|
and/or wraparounds (with jumper wires). Using this, it is fairly
|
|||
|
easy to determine which line(s) are not functioning as required,
|
|||
|
and quickly build a prototype of a cable that will serve to
|
|||
|
interface the two devices. At this point, the break-out box can
|
|||
|
be removed and a real cable built that performs the same
|
|||
|
function. An example of this kind of device is the International
|
|||
|
Data Sciences, Inc. Model 60 'Modem and Terminal Interface Pocket
|
|||
|
Analyzer' (also called a 'bluebox'). Care should be taken with
|
|||
|
this type of device to connect the correct end of it to the DTE
|
|||
|
device, or the lights and switches do not correspond to the
|
|||
|
actual signals.
|
|||
|
|
|||
|
|