Introduction to Serial Communications
Learn the basic principles of serial
communication. This page also contains basic connector pinouts, recommended
cable lengths and other useful information.
Many PCs and
compatible computers are 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.
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.
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.
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.
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.
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 Number
|
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 Number
|
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.
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
|
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.
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.
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
|
A problem you may
encounter is having two connectors of the same gender that must be
connected. 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.
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.
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.
No comments:
Post a Comment