Serial port
In computing, a serial port is a serial communication interface through which information transfers in or out sequentially one bit at a time.[1] This is in contrast to a parallel port, which communicates multiple bits simultaneously in parallel. Throughout most of the history of personal computers, data has been transferred through serial ports to devices such as modems, terminals, various peripherals, and directly between computers.
While interfaces such as Ethernet, FireWire, and USB also send data as a serial stream, the term serial port usually denotes hardware compliant with RS-232 or a related standard, such as RS-485 or RS-422.
Modern consumer PCs have largely replaced serial ports with higher-speed standards, primarily USB. However, serial ports are still frequently used in applications demanding simple, low-speed interfaces, such as industrial automation systems, scientific instruments, point of sale systems and some industrial and consumer products.
Server computers may use a serial port as a control console for diagnostics, while networking hardware (such as routers and switches) commonly use serial console ports for configuration, diagnostics, and emergency maintenance access. To interface with these and other devices, USB-to-serial converters can quickly and easily add a serial port to a modern PC.
Hardware
In the present day, many devices use an integrated circuit called a UART to implement a serial port. This IC converts characters to and from asynchronous serial form, implementing the timing and framing of data specified by the serial protocol in hardware. The IBM PC implements its serial ports, when present, with one or more UARTs.
Very low-cost systems, such as some early home computers, would instead use the CPU to send the data through an output pin, using the bit banging technique. These early home computers often had proprietary serial ports with pinouts and voltage levels incompatible with RS-232.
Before large-scale integration (LSI) made UARTs common, serial ports were commonly used in mainframes and minicomputers, which would have multiple small-scale integrated circuits to implement shift registers, logic gates, counters, and all the other logic needed. As PCs evolved serial ports were included in the Super I/O chip and then in the chipset.
DTE and DCE
The individual signals on a serial port are unidirectional and when connecting two devices, the outputs of one device must be connected to the inputs of the other. Devices are divided into two categories: data terminal equipment (DTE) and data circuit-terminating equipment (DCE). A line that is an output on a DTE device is an input on a DCE device and vice versa, so a DCE device can be connected to a DTE device with a straight wired cable, in which each pin on one end goes to the same numbered pin on the far end.
Conventionally, computers and terminals are DTE, while modems and peripherals are DCE. If it is necessary to connect two DTE (or DCE) devices together, a cable with reversed TX and RX lines, known as a cross-over, roll-over or null modem cable must be used.
Gender
Generally, serial port connectors are gendered, only allowing connectors to mate with a connector of the opposite gender. With D-subminiature connectors, the male connectors have protruding pins, and female connectors have corresponding round sockets.[2] Either type of connector can be mounted on equipment or a panel; or terminate a cable.
Connectors mounted on DTE are likely to be male, and those mounted on DCE are likely to be female (with the cable connectors being the opposite). However, this is far from universal; for instance, most serial printers have a female DB25 connector, but they are DTEs.[3] In this circumstance, the appropriately gendered connectors on the cable or a gender changer can be used to correct the mismatch.
Connectors
The only connector specified in the original RS-232 standard was the 25-pin D-subminiature, however, many other connectors have been used, among other reasons to save money or save on physical space. In particular, since many devices do not use all of the 20 signals that are defined by the standard, connectors with fewer pins are often used.
The 9-pin DE-9 connector has been used by most IBM-compatible PCs since the Serial/Parallel Adapter option for the PC-AT, where it allowed a serial and parallel port to fit on the same card.[4] This use has been standardized as TIA-574.
Some miniaturized electronics, particularly graphing calculators[5] and hand-held amateur and two-way radio equipment,[6] have serial ports using a phone connector, usually the smaller 2.5 or 3.5 mm connectors and utilizing the most basic 3-wire interface.
8P8C connectors are also used in many devices. The EIA/TIA-561 standard defines a pinout using this connector, while the rollover cable (or Yost standard) is commonly used on Unix computers and many network devices, such as equipment from Cisco Systems.[7]
Many models of Macintosh favor the related RS-422 standard, mostly using circular mini-DIN connectors, except in the earliest models. The Macintosh included a standard set of two ports for connection to a printer and a modem, but some PowerBook laptops had only one combined port to save space.[8]
10P10C connectors can be found on some devices. Digital Equipment Corporation defined their own DECconnect connection system which is based on the Modified Modular Jack (MMJ) connector. This is a 6-pin modular jack where the key is offset from the center position. As with the Yost standard, DECconnect uses a symmetrical pin layout which enables the direct connection between two DTEs.
Another common connector is the DH10 header connector common on motherboards and add-in cards which is usually converted via a cable to the more standard 9-pin DE-9 connector (and frequently mounted on a free slot plate or other part of the housing).[9]
Countless other connectors have been used for RS-232 connections.
Pinouts
The following table lists commonly used RS-232 signals and pin assignments.[10]
Signal | Direction | Connector pin | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Name | V.24 circuit | Abbreviation | DTE | DCE | DB-25 | DE-9 (TIA-574) | MMJ | 8P8C ("RJ45") | 10P10C ("RJ50") | ||||||
EIA/TIA-561 | Yost (DTE)[11] | Yost (DCE)[11] | Cyclades[12] | Digi (ALTPIN option)[13] | National Instruments[14] | Cyclades[12] | Digi[15] | ||||||||
Transmitted Data | 103 | TxD | Out | In | 2 | 3 | 2 | 6 | 6 | 3 | 3 | 4 | 8 | 4 | 5 |
Received Data | 104 | RxD | In | Out | 3 | 2 | 5 | 5 | 3 | 6 | 6 | 5 | 9 | 7 | 6 |
Data Terminal Ready | 108/2 | DTR | Out | In | 20 | 4 | 1 | 3 | 7 | 2 | 2 | 8 | 7 | 3 | 9 |
Data Carrier Detect | 109 | DCD | In | Out | 8 | 1 | N/A | 2 | 2 | 7 | 7 | 1 | 10 | 8 | 10 |
Data Set Ready | 107 | DSR | In | Out | 6 | 6 | 6 | 1 | N/A | 8 | N/A | 5 | 9 | 2 | |
Ring Indicator | 125 | RI | In | Out | 22 | 9 | N/A | N/A | N/A | N/A | N/A | 2 | 10 | 1 | |
Request To Send | 105 | RTS | Out | In | 4 | 7 | N/A | 8 | 8 | 1 | 1 | 2 | 4 | 2 | 3 |
Clear To Send | 106 | CTS | In | Out | 5 | 8 | N/A | 7 | 1 | 8 | 5 | 7 | 3 | 6 | 8 |
Signal Ground | 102 | G | Common | 7 | 5 | 3, 4 | 4 | 4, 5 | 4, 5 | 4 | 6 | 6 | 5 | 7 | |
Protective Ground | 101 | PG | Common | 1 | N/A | N/A | N/A | N/A | N/A | N/A | 3 | N/A | 1 | 4 |
The signal ground is a common return for the other connections; it appears on two pins in the Yost standard but is the same signal. The DB-25 connector includes a second "protective ground" on pin 1, which is intended to be connected by each device to its own frame ground or similar. Connecting this to pin 7 (signal reference ground) is a common practice but not recommended.
Note that EIA/TIA 561 combines DSR and RI,[16][17] and the Yost standard combines DSR and DCD.
Powered ports
Some serial ports on motherboards or add-in cards provided jumpers that select whether pin 1 of the DE-9 connector connects to DCD or a power-supply voltage, and whether pin 9 of the DE-9 connector connects to RI or a power-supply voltage. Supply voltage could be set to +5 V, +9 V, +12 V, or ground depending on the manufacturer. The power was required for some mice and point-of-sale equipment.
Hardware abstraction
Operating systems usually create symbolic names for the serial ports of a computer, rather than requiring programs to refer to them by hardware address.
Unix-like operating systems usually label the serial port devices /dev/tty*. TTY is a common trademark-free abbreviation for teletype, a device commonly attached to early computers' serial ports, and * represents a string identifying the specific port; the syntax of that string depends on the operating system and the device. On Linux, 8250/16550 UART hardware serial ports are named /dev/ttyS*, USB adapters appear as /dev/ttyUSB* and various types of virtual serial ports do not necessarily have names starting with tty.
The DOS and Windows environments refer to serial ports as COM ports: COM1, COM2,..etc. Ports numbered greater than COM9 should be referred to using the \\.\COM10 syntax.[18]
Common applications for serial ports
The RS-232 standard is used by many specialized and custom-built devices. This list includes some of the more common devices that are connected to the serial port on a PC. Some of these such as modems and serial mice are falling into disuse while others are readily available.
Serial ports are very common on most types of microcontroller, where they can be used to communicate with a PC or other serial devices.
- Dial-up modems
- Configuration and management of networking equipment such as routers, switches, firewalls, load balancers
- GPS receivers (typically NMEA 0183 at 4,800 bit/s)
- Bar code scanners and other point of sale devices
- LED and LCD text displays
- Satellite phones, low-speed satellite modems and other satellite based transceiver devices
- Flat-screen (LCD and Plasma) monitors to control screen functions by external computer, other AV components or remotes
- Test and measuring equipment such as digital multimeters and weighing systems
- Updating firmware on various consumer devices.
- CNC controllers
- Uninterruptible power supply
- Hobbyist programming and debugging MCU's
- Stenography or Stenotype machines
- Software debuggers that run on a second computer
- Industrial field buses
- Printers
- Computer terminal, teletype
- Older digital cameras
- Networking (Macintosh AppleTalk using RS-422 at 230.4 kbit/s)
- Serial mouse
- Older GSM mobile phones
Since the control signals for a serial port can be easily turned on and off by a switch, some applications used the control lines of a serial port to monitor external devices, without exchanging serial data. A common commercial application of this principle was for some models of uninterruptible power supply which used the control lines to signal loss of power, low battery, and other status information. At least some Morse code training software used a code key connected to the serial port, to simulate actual code use. The status bits of the serial port could be sampled very rapidly and at predictable times, making it possible for the software to decipher Morse code.
Settings
Bit rate (Baud rate) | Time per bit | Windows predefined serial port speed[19][20] | Other reasons that this speed is common |
---|---|---|---|
75 bit/s | 13333.3 μs | Yes | |
110 bit/s | 9090.9 μs | Yes | Bell 101 modem |
134.5 bit/s | 7434.9 μs | Yes | |
150 bit/s | 6666.6 μs | Yes | |
300 bit/s | 3333.3 μs | Yes | Bell 103 modem or V.21 modem |
600 bit/s | 1666.7 μs | Yes | |
1,200 bit/s | 833.3 μs | Yes | Bell 202, Bell 212A, or V.22 modem |
1,800 bit/s | 555.6 μs | Yes | |
2,400 bit/s | 416.7 μs | Yes | V.22bis modem |
4,800 bit/s | 208.3 μs | Yes | V.27ter modem |
7,200 bit/s | 138.9 μs | Yes | |
9,600 bit/s | 104.2 μs | Yes | V.32 modem |
14,400 bit/s | 69.4 μs | Yes | V.32bis modem |
19,200 bit/s | 52.1 μs | Yes | |
31,250 bit/s | 32 μs | No | MIDI port |
38,400 bit/s | 26.0 μs | Yes | |
56,000 bit/s | 17.9 μs | Yes | V.90/V.92 modem |
57,600 bit/s | 17.4 μs | Yes | V.32bis modem with V.42bis compression |
76,800 bit/s | 13.0 μs | No | BACnet MS/TP networks[21] |
115,200 bit/s | 8.68 μs | Yes | V.34 modem with V.42bis compression, low cost serial V.90/V.92 modem with V.42bis or V.44 compression |
128,000 bit/s | 7.81 μs | Yes | Basic Rate Interface ISDN terminal adapter |
230,400 bit/s | 4.34 μs | No | LocalTalk, high end serial V.90/V.92 modem with V.42bis or V.44 compression[22][23] |
256,000 bit/s | 3.91 μs | Yes |
Serial standards provide for many different operating speeds as well as adjustments to the protocol to account for different operating conditions. The most well known options are speed, number of data bits per character, parity, and number of stop bits per character.
In modern serial ports using a UART integrated circuit, all these settings can be software-controlled. Hardware from the 1980s and earlier may require setting switches or jumpers on a circuit board.
The configuration for serial ports designed to be connected to a PC has become a de-facto standard, usually stated as 9600/8-N-1.
Speed
Serial ports use two-level (binary) signaling, so the data rate in bits per second is equal to the symbol rate in baud. A standard series of rates is based on multiples of the rates for electromechanical teleprinters; some serial ports allow many arbitrary rates to be selected, but the speeds on both sides of the connection must match, or data will be received as gibberish.
The capability to set a bit rate does not imply that a working connection will result. Not all bit rates are possible with all serial ports. Some special-purpose protocols such as MIDI for musical instrument control, use serial data rates other than the teleprinter standards. Some serial port implementations can automatically choose a bit rate by observing what a connected device is sending and synchronizing to it.
The total speed includes bits for framing (stop bits, parity, etc.) and so the effective data rate is lower than the bit transmission rate. For example, with 8-N-1 character framing, only 80% of the bits are available for data; for every eight bits of data, two more framing bits are sent.
Bit rates commonly supported include 75, 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600 and 115200 bit/s.[20]
Crystal oscillators with a frequency of 1.843200 MHz are sold specifically for this purpose. This is 16 times the fastest bit rate, and the serial port circuit can easily divide this down to lower frequencies as required.
Data bits
The number of data bits in each character can be 5 (for Baudot code), 6 (rarely used), 7 (for true ASCII), 8 (for most kinds of data, as this size matches the size of a byte), or 9 (rarely used). 8 data bits are almost universally used in newer applications. 5 or 7 bits generally only make sense with older equipment such as teleprinters.
Most serial communications designs send the data bits within each byte LSB (least significant bit) first. This standard is also referred to as "little endian."
Also possible, but rarely used, is "big endian" or MSB (most significant bit) first; this was used, for example, by the IBM 2741 printing terminal.
The order of bits is not usually configurable within the serial port interface, but is defined by the host system. To communicate with systems that require a different bit ordering than the local default, local software can re-order the bits within each byte just before sending and just after receiving.
Parity
Parity is a method of detecting errors in transmission. When parity is used with a serial port, an extra data bit is sent with each data character, arranged so that the number of 1 bits in each character, including the parity bit, is always odd or always even. If a byte is received with the wrong number of 1s, then it must have been corrupted. However, an even number of errors can pass the parity check.
Electromechanical teleprinters were arranged to print a special character when received data contained a parity error, to allow detection of messages damaged by line noise. A single parity bit does not allow implementation of error correction on each character, and communication protocols working over serial data links will have higher-level mechanisms to ensure data validity and request retransmission of data that has been incorrectly received.
The parity bit in each character can be set to one of the following:
- None (N) means that no parity bit is sent at all.
- Odd (O) means that parity bit is set so that the number of "logical ones" must be odd.
- Even (E) means that parity bit is set so that the number of "logical ones" must be even.
- Mark (M) parity means that the parity bit is always set to the mark signal condition (logical 1).
- Space (S) parity always sends the parity bit in the space signal condition (logical 0).
Aside from uncommon applications that use the last bit (usually the 9th) for some form of addressing or special signaling, mark or space parity is uncommon, as it adds no error detection information.
Odd parity is more useful than even parity since it ensures that at least one state transition occurs in each character, which makes it more reliable at detecting errors like those that could be caused by serial port speed mismatches. The most common parity setting, however, is "none", with error detection handled by a communication protocol.
Stop bits
Stop bits sent at the end of every character allow the receiving signal hardware to detect the end of a character and to resynchronise with the character stream. Electronic devices usually use one stop bit. If slow electromechanical teleprinters are used, one-and-one half or two stop bits are required.
Conventional notation
The data/parity/stop (D/P/S) conventional notation specifies the framing of a serial connection. The most common usage on microcomputers is 8/N/1 (8N1). This specifies 8 data bits, no parity, 1 stop bit. In this notation, the parity bit is not included in the data bits. 7/E/1 (7E1) means that an even parity bit is added to the 7 data bits for a total of 8 bits between the start and stop bits. If a receiver of a 7/E/1 stream is expecting an 8/N/1 stream, half the possible bytes will be interpreted as having the high bit set.
Flow control
Flow control is used in circumstances where a transmitter might be able to send data faster than the receiver is able to process it. To cope with this, serial lines often incorporate a handshaking method, usually distinguished between hardware and software handshaking.
Hardware handshaking is done with extra signals, often the RS-232 RTS/CTS or DTR/DSR signal circuits. Generally, the RTS and CTS are turned off and on from alternate ends to control data flow, for instance when a buffer is almost full. DTR and DSR are usually on all the time and, per the RS-232 standard and its successors, are used to signal from each end that the other equipment is actually present and powered-up. However, manufacturers have over the years built many devices that implemented non-standard variations on the standard, for example, printers that use DTR as flow control.
Software handshaking is done for example with ASCII control characters XON/XOFF to control the flow of data. The XON and XOFF characters are sent by the receiver to the sender to control when the sender will send data, that is, these characters go in the opposite direction to the data being sent. The circuit starts in the "sending allowed" state. When the receiver's buffers approach capacity, the receiver sends the XOFF character to tell the sender to stop sending data. Later, after the receiver has emptied its buffers, it sends an XON character to tell the sender to resume transmission. It is an example of in-band signaling, where control information is sent over the same channel as its data.
The advantage of hardware handshaking is that it can be extremely fast; it doesn't impose any particular meaning such as ASCII on the transferred data; and it is stateless. Its disadvantage is that it requires more hardware and cabling, and these must be compatible at both ends.
The advantage of software handshaking is that it can be done with absent or incompatible hardware handshaking circuits and cabling. The disadvantage, common to all in-band control signaling, is that it introduces complexities in ensuring that a) control messages get through even when data messages are blocked, and b) data can never be mistaken for control signals. The former is normally dealt with by the operating system or device driver; the latter normally by ensuring that control codes are "escaped" (such as in the Kermit protocol) or omitted by design (such as in ANSI terminal control).
If no handshaking is employed, an overrun receiver might simply fail to receive data from the transmitter. Approaches for preventing this include reducing the speed of the connection so that the receiver can always keep up; increasing the size of buffers so it can keep up averaged over a longer time; using delays after time-consuming operations (e.g. in termcap) or employing a mechanism to resend data which has been corrupted (e.g. TCP).
Virtual serial port
A virtual serial port is an emulation of physical serial port. There are several use cases.
Serial port redirection
Serial port redirection software creates extra virtual serial ports in an operating system without additional hardware installation (such as expansion cards, etc.) in order to split or redirect the data to and from a serial port for a variety of applications.
One option is to share data between several applications. A serial port typically can only be monitored by one device at a time under the constraints of most operating systems, but a serial port redirector can create two virtual ports, for two separate applications to monitor the same data, for instance, a GPS device outputting location data.
Another option is to communicate with another serial device via internet or LAN as if they were locally connected, using serial over LAN.
Virtual serial ports ideally emulate all hardware serial port functionality, including baud rate, data bits, parity bits, stop bits, etc. Additionally, they allow controlling the data flow, emulating all signal lines (DTR, DSR, CTS, RTS, DCD, and RI) and customizing pinout.
It is possible to create a large number of virtual serial ports in a PC. The only limitation is the resources, such as RAM and CPU time. Serial port emulators are available for many operating systems including MacOS, Linux, NetBSD and other Unix-like operating systems, and various mobile and desktop versions of Microsoft Windows.
Bluetooth
Bluetooth implements virtual serial ports over the Serial Port Profile. This is the standard way of receiving data from Bluetooth-equipped GPS modules, for instance.
Softmodems
The drivers for a software-implemented modem create a virtual serial port for communication with the host operating system, since the modem is implemented entirely in the device driver and therefore there is no point where the serial data would be sent to the physical card.
See also
References
- Webopedia (2003-09-03). "What is serial port? - A Word Definition From the Webopedia Computer Dictionary". Webopedia.com. Archived from the original on 2009-09-07. Retrieved 2009-08-07.
- "Serial Cable Connection Guide". CISCO. 2006-08-01. Retrieved 2016-01-31.
- "RS232 - DTE and DCE connectors". Lantronix. 2006-03-29. Archived from the original on 2015-12-14. Retrieved 2016-01-31.
- "IBM PC AT Serial/Parallel Adapter" (PDF). Archived from the original (PDF) on 2020-02-24.
- "TI-73...92+/V200 TI Link Guide". merthsoft.com. Retrieved 2020-08-14.
- "Technical Section". Miklor.com. Retrieved 2020-08-14.
- "Cabling Guide for Console and AUX Ports". Cisco. Retrieved 2020-08-14.
- "Classic Mac Ports". whitefiles.org. Retrieved 2020-08-14.
- Intel® Server Board S5000PAL/S5000XAL Technical Product Specification (PDF). p. 38.
- Ögren, Joakim. "Serial (PC 9)". Archived from the original on 2010-08-11. Retrieved 2010-07-07.
- "Yost Serial Device Wiring Standard". Archived from the original on 2020-06-17. Retrieved 2020-05-10.
- Cyclom-Y Installation Manual, page 38, retrieved on 29 November 2008
- "RJ-45 8-Pin to Modem (ALTPIN option)". Digiftp.digi.com. Retrieved 2014-02-08.
- National Instruments Serial Quick Reference Guide, February 2007
- "RJ-45 10-Pin Plug to DB-25 Modem Cable". Digiftp.digi.com. Retrieved 2014-02-08.
- Hardware Book RS-232D
- RS-232D EIA/TIA-561 RJ45 Pinout
- "HOWTO: Specify Serial Ports Larger than COM9". Microsoft support. Retrieved 2013-10-26.
- "SERIAL_COMMPROP structure". Microsoft. 2018-04-22. Archived from the original on 2019-09-28. Retrieved 2019-09-28.
- "DCB Structure". Windows Dev Center. Microsoft. 2018-12-04. Archived from the original on 2019-09-28. Retrieved 2019-09-28.
- "BACnet MS/TP Overview Manual" (PDF). Neptronic. Archived from the original (PDF) on January 10, 2020. Retrieved September 26, 2019.
- "MultiModem ZBA" (PDF). Multi-Tech Systems, Inc. January 2019. Archived from the original (PDF) on March 3, 2019. Retrieved September 26, 2019.
- "Courier 56K Business Modem: User Guide: Controlling Data Rates". USRobotics. 2007. Archived from the original on August 4, 2017. Retrieved September 26, 2019.
Further reading
- Serial Port Complete: COM Ports, USB Virtual COM Ports, and Ports for Embedded Systems; 2nd Edition; Jan Axelson; Lakeview Research; 380 pages; 2007; ISBN 978-1-931-44806-2.
External links
Wikibooks has a book on the topic of: Programming:Serial Data Communications |
- Media related to Serial port at Wikimedia Commons
- RS-232 and other serial port pinouts list
- Back of an old desktop computer showing 25-pin male serial port.