Introduction
to
Serial Communication
All IBM PC and compatible computers are typically equipped
with two serial ports and one parallel port. Although these two types of ports are used
for communicating with external devices, they work in different ways.
A parallel port sends and receives data eight bits at a
time over 8 separate wires. This allows data to be transferred very quickly; however, the
cable required is more bulky because of the number of individual wires it must contain.
Parallel ports are typically used to connect a PC to a printer and are rarely used for
much else. A serial port sends and receives data one bit at a time over one wire. While it
takes eight times as long to transfer each byte of data this way, only a few wires are
required. In fact, two-way (full duplex) communications is possible with only three
separate wires - one to send, one to receive, and a common signal ground wire.
Bi-directional
Communications
The serial port on your PC is a full-duplex device meaning
that it can send and receive data at the same time. In order to be able to do this, it
uses separate lines for transmitting and receiving data. Some types of serial devices
support only one-way communications and therefore use only two wires in the cable - the
transmit line and the signal ground.
Top of Page
Synchronous And Asynchronous
Communications
There are two basic types of serial communications,
synchronous and asynchronous. With Synchronous communications, the two devices initially
synchronize themselves to each other, and then continually send characters to stay in
sync. Even when data is not really being sent, a constant flow of bits allows each device
to know where the other is at any given time. That is, each character that is sent is
either actual data or an idle character. Synchronous communications allows faster data
transfer rates than asynchronous methods, because additional bits to mark the beginning
and end of each data byte are not required. The serial ports on IBM-style PCs are
asynchronous devices and therefore only support asynchronous serial communications.
Asynchronous means "no synchronization", and thus
does not require sending and receiving idle characters. However, the beginning and end of
each byte of data must be identified by start and stop bits. The start bit indicate when
the data byte is about to begin and the stop bit signals when it ends. The requirement to
send these additional two bits cause asynchronous communications to be slightly slower
than synchronous however it has the advantage that the processor does not have to deal
with the additional idle characters.
An asynchronous line that is idle is identified with a
value of 1, (also called a mark state). By using this value to indicate that no data is
currently being sent, the devices are able to distinguish between an idle state and a
disconnected line. When a character is about to be transmitted, a start bit is sent. A
start bit has a value of 0, (also called a space state). Thus, when the line switches from
a value of 1 to a value of 0, the receiver is alerted that a data character is about to
come down the line.
Top of Page
Communicating By Bits
Once the start bit has been sent, the transmitter sends the
actual data bits. There may either be 5, 6, 7, or 8 data bits, depending on the number you
have selected. Both receiver and the transmitter must agree on the number of data bits, as
well as the baud rate. Almost all devices transmit data using either 7 or 8 databits.
Notice that when only 7 data bits are employed, you cannot
send ASCII values greater than 127. Likewise, using 5 bits limits the highest possible
value to 31. After the data has been transmitted, a stop bit is sent. A stop bit has a
value of 1 - or a mark state - and it can be detected correctly even if the previous data
bit also had a value of 1. This is accomplished by the stop bit's duration. Stop bits can
be 1, 1.5, or 2 bit periods in length.
Top of Page
The Parity Bit
Besides the synchronization provided by the use of start
and stop bits, an additional bit called a parity bit may optionally be transmitted along
with the data. A parity bit affords a small amount of error checking, to help detect data
corruption that might occur during transmission. You can choose either even parity, odd
parity, mark parity, space parity or none at all. When even or odd parity is being used,
the number of marks (logical 1 bits) in each data byte are counted, and a single bit is
transmitted following the data bits to indicate whether the number of 1 bits just sent is
even or odd.
For example, when even parity is chosen, the parity bit is
transmitted with a value of 0 if the
number of preceding marks is an even number. For the binary
value of 0110 0011 the parity bit would be 0. If even parity were in effect and the binary
number 1101 0110 were sent, then the parity bit would be 1. Odd parity is just the
opposite, and the parity bit is 0 when the number of mark bits in the preceding word is an
odd number. Parity error checking is very rudimentary. While it will tell you if there is
a single bit error in the character, it doesn't show which bit was received in error.
Also, if an even number of bits are in error then the parity bit would not reflect any
error at all.
Mark parity means that the parity bit is always set to the
mark signal condition and likewise space parity always sends the parity bit in the space
signal condition. Since these two parity options serve no useful purpose whatsoever, they
are almost never used.
Top of Page
Baud Versus Bits
Per Second
The baud unit is named after Jean Maurice Emile Baudot, who
was an officer in the French Telegraph Service. He is credited with devising the first
uniform-length 5-bit code for characters of the alphabet in the late 19th century. What
baud really refers to is modulation rate or the number of times per second that a line
changes state. This is not always the same as bits per second (BPS). If you connect two
serial devices together using direct cables then baud and BPS are in fact the same. Thus,
if you are running at 19200 BPS, then the line is also changing states 19200 times per
second. But when considering modems, this isn't the case.
Because modems transfer signals over a telephone line, the
baud rate is actually limited to a maximum of 2400 baud. This is a physical restriction of
the lines provided by the phone company. The increased data throughput achieved with 9600
or higher baud modems is accomplished by using sophisticated phase modulation, and data
compression techniques.
Top of Page
RS-232C
RS-232 stands for Recommend Standard number 232 and C is
the latest revision of the standard. The serial ports on most computers use a subset of
the RS-232C standard. The full RS-232C standard specifies a 25-pin "D" connector
of which 22 pins are used. Most of these pins are not needed for normal PC communications,
and indeed, most new PCs are equipped with male D type connectors having only 9 pins.
Top of Page
DCE And DTE Devices
Two terms you should be familiar with are DTE and DCE. DTE
stands for Data Terminal Equipment, and DCE stands for Data Communications Equipment.
These terms are used to indicate the pin-out for the connectors on a device and the
direction of the signals on the pins. Your computer is a DTE device, while most other
devices are usually DCE devices.
If you have trouble keeping the two straight then replace
the term "DTE device" with "your PC" and the term "DCE
device" with "remote device" in the following discussion.
The RS-232 standard states that DTE devices use a 25-pin
male connector, and DCE devices use a 25-pin female connector. You can therefore connect a
DTE device to a DCE using a straight pin-for-pin connection. However, to connect two like
devices, you must instead use a null modem cable. Null modem cables cross the transmit and
receive lines in the cable, and are discussed later in this chapter. The listing below
shows the connections and signal directions for both 25 and 9-pin connectors.
25 Pin Connector on a DTE device (PC connection)
Pin Name Direction of signal
- 1 Protective Ground
- 2 Transmitted Data (TD) Outgoing Data (from a DTE to a DCE)
- 3 Received Data (RD) Incoming Data (from a DCE to a DTE)
- 4 Request To Send (RTS) Outgoing flow control signal
controlled by DTE
- 5 Clear To Send (CTS) Incoming flow control signal
controlled by DCE
- 6 Data Set Ready (DSR) Incoming handshaking signal
controlled by DCE
- 7 Signal Ground Common reference voltage
- 8 Carrier Detect (CD) Incoming signal from a modem
- 20 Data Terminal Ready (DTR) Outgoing handshaking signal
controlled by DTE
- 22 Ring Indicator (RI) Incoming signal from a modem
9 Pin Connector on a DTE device (PC connection)
Pin Name Direction of signal
- 1 Carrier Detect (CD) (from DCE) Incoming signal from a
modem
- 2 Received Data (RD) Incoming Data from a DCE
- 3 Transmitted Data (TD) Outgoing Data to a DCE
- 4 Data Terminal Ready (DTR) Outgoing handshaking signal
- 5 Signal Ground Common reference voltage
- 6 Data Set Ready (DSR) Incoming handshaking signal
- 7 Request To Send (RTS) Outgoing flow control signal
- 8 Clear To Send (CTS) Incoming flow control signal
- 9 Ring Indicator (RI) (from DCE) Incoming signal from a
modem
The TD (transmit data)
wire is the one through which data from a DTE device is transmitted to a DCE device. This
name can be deceiving, because this wire is used by a DCE device to receive its data. The
TD line is kept in a mark condition by the DTE device when it is idle. The RD (receive
data) wire is the one on which data is received by a DTE device, and the DCE device keeps
this line in a mark condition when idle.
RTS stands for Request To Send.
This line and the CTS line are used when "hardware flow control" is enabled in
both the DTE and DCE devices. The DTE device puts this line in a mark condition to tell
the remote device that it is ready and able to receive data. If the DTE device is not able
to receive data (typically because its receive buffer is almost full), it will put this
line in the space condition as a signal to the DCE to stop sending data. When the DTE
device is ready to receive more data (i.e. after data has been removed from its receive
buffer), it will place this line back in the mark condition. The complement of the RTS
wire is CTS, which stands for Clear To Send. The DCE device puts this line in a mark
condition to tell the DTE device that it is ready to receive the data. Likewise, if the
DCE device is unable to receive data, it will place this line in the space condition.
Together, these two lines make up what is called RTS/CTS or "hardware" flow
control. The Software Wedge supports this type of flow control, as well as Xon/XOff or
"software" flow control. Software flow control uses special control characters
transmitted from one device to another to tell the other device to stop or start sending
data. With software flow control the RTS and CTS lines are not used.
DTR stands for Data Terminal Ready.
Its intended function is very similar to the RTS line. DSR (Data Set Ready) is the
companion to DTR in the same way that CTS is to RTS. Some serial devices use DTR and DSR
as signals to simply confirm that a device is connected and is turned on. The Software
Wedge sets DTR to the mark state when the serial port is opened and leaves it in that
state until the port is closed. The DTR and DSR lines were originally designed to provide
an alternate method of hardware handshaking. It would be pointless to use both RTS/CTS and
DTR/DSR for flow control signals at the same time. Because of this, DTR and DSR are rarely
used for flow control.
CD stands for Carrier Detect.
Carrier Detect is used by a modem to signal that it has a made a connection with another
modem, or has detected a carrier tone.
The last remaining line is RI or Ring
Indicator. A modem toggles the state of this line when an incoming call rings
your phone.
The Carrier Detect (CD) and the Ring Indicator (RI) lines
are only available in connections to a modem. Because most modems transmit status
information to a PC when either a carrier signal is detected (i.e. when a connection is
made to another modem) or when the line is ringing, these two lines are rarely used.
Top of Page
Cable Lengths
The RS-232C standard imposes a cable length limit of 50
feet. You can usually ignore this "standard", since a cable can be as long as
10000 feet at baud rates up to 19200 if you use a high quality, well shielded cable. The
external environment has a large effect on lengths for unshielded cables. In electrically
noisy environments, even very short cables can pick up stray signals. The following chart
offers some reasonable guidelines for 24 gauge wire under typical conditions. You can
greatly extend the cable length by using additional devices like optical isolators and
signal boosters. Optical isolators use LEDs and Photo Diodes to isolate each line in a
serial cable including the signal ground. Any electrical noise affects all lines in the
optically isolated cable equally - including the signal ground line. This causes the
voltages on the signal lines relative to the signal ground line to reflect the true
voltage of the signal and thus canceling out the effect of any noise signals.
Baud Rate |
Shielded Cable Length |
Unshielded Cable Length |
110 |
5000 |
1000 |
300 |
4000 |
1000 |
1200 |
3000 |
500 |
2400 |
2000 |
500 |
4800 |
500 |
250 |
9600 |
250 |
100 |
Top of Page
Cables,
Null Modems, And Gender Changers
In a perfect world, all serial ports on every computer
would be DTE devices with 25-pin male "D" connectors. All other devices to would
be DCE devices with 25-pin female connectors. This would allow you to use a cable in which
each pin on one end of the cable is connected to the same pin on the other end.
Unfortunately, we don't live in a perfect world. Serial ports use both 9 and 25 pins, many
devices can be configured as either DTE or DCE, and - as in the case of many data
collection devices - may use completely non standard or proprietary pin-outs. Because of
this lack of standardization, special cables called null modem cables, gender changers and
custom made cables are often required.
Top of Page
Null Modem
Cables and Null Modem Adapters
If you connect two DTE devices (or two DCE devices) using a
straight RS232 cable, then the transmit line on each device will be connected to the
transmit line on the other device and the receive lines will likewise be connected to each
other. A Null Modem cable or Null Modem adapter simply crosses the receive and transmit
lines so that transmit on one end is connected to receive on the other end and vice versa.
In addition to transmit and receive, DTR & DSR, as well as RTS & CTS are also
crossed in a Null modem connection.
Null modem adapter are available at most computer and
office supply stores for under $5.
Top of Page
9 Pin To 25 Pin
Adapters
The following table shows the connections inside a standard
9 pin to 25 pin adapter.
9-Pin Connector |
25 Pin Connector |
Pin 1 DCD |
Pin 8 DCD |
Pin 2 RD |
Pin 3 RD |
Pin 3 TD |
Pin 2 TD |
Pin 4 DTR |
Pin 20 DTR |
Pin 5 GND |
Pin 7 GND |
Pin 6 DSR |
Pin 6 DSR |
Pin 7 RTS |
Pin 4 RTS |
Pin 8 CTS |
Pin 5 CTS |
Pin 9 RI |
Pin 22 RI |
Top of Page
Gender Changers
The final problem you may encounter is having two
connectors of the same gender that must be connected. Again, you can purchase gender
changers at any computer or office supply store for under $5.
Note: The parallel port on a PC uses a 25 pin female
connector which sometimes causes confusion because it looks just like a serial port except
that it has the wrong gender. Both 9 and 25 pin serial ports on a PC will always have a
male connector.
Top of Page |