Asynchronous Serial Communication

Serial communication allows a series of bytes (or ASCII characters) to be sent along a single line (cable). An asynchronous link communicates data as a series of bytes with a fixed size and format.

In asynchronous communication, the sender and receiver clocks are not synchronised, and are configured to operate each at the same predetermined nominal frequency.

There can be an arbitrary idle gap between slots, identified by a Mark level (high).

Asynchronous Communication uses:

Many microntrollers integrate a UART in their design to directly support asynchronous communication. If no UART is available, lower rate serial transmission can be easily performed using only software via a standard digital I/O pin.


There is an arbitrary idle gap between slots, identified by the idle level (this is usually shown as a Mark or high, but this really depends on whether the signal is a TTL signal or a line-level signal, because one is the inverse of the other).

The arbitrary length of the idle period means there need be no timing relationship between successive characters (or bytes of data). Individual characters may be separated by any arbitrary idle period.

Asynchronous transmission of a series of characters

In most asynchronous link designs, the bits in a byte are sent Least Significant Bit (LSB) first, using a shift register. Each byte is preceded by a start baud and followed by either 1 or 2 stop bauds. The asynchronous transmitter delimits each character (byte) by a start sequence and a stop sequence. Using the example of line with idle mark (1): The start bit (0), data (usually 8 bits possibly with one parity bit) and 1 or 2 stop bauds(s).

Figure showing transmission of the bauds forming a character (0x05) using asynchronous communication

The configurations sometimes add a parity check bit before the stop bit to provide some limited protection against errors occurring on the link. The use of independent transmit and receive clocks constrains transmission to relatively short characters (<8 bits) and moderate data rates (less than 64 kbps, but typically lower,:e.g. 2400 bps; 9600 bps or 19.2 kbps).

The additional start and stop baud(s) are overhead that reduce the number of bits available for useful transmission, and increase the duration of time required to send each byte of data. If an asynchronous transmission baud rate is 9600 bps, the minimum duration required to send one byte is:

8 bits /slot - 3 overhead bauds (start and 2 stop bauds) - total = 11 bauds (assuming minimum idle). No parity.
11/9600 = 1.2 mS


The start of each character is identified by the receiver by a change in from the idle voltage. Assuming an idle (mark) level of 1, the start baud is a downwards (space) transition in the received line voltage. This triggers reception of the bauds forming a character slot using the receive shift register. If the last baud is not both set to one (the idle level), then the character is discarded at the receiver.

Many systems use two stop bauds, in which case both need to be received for the received data to be considered valid. Sometimes a systems uses 1.5 stop bauds, where the required interval is 1.5 baud periods.

Sometimes the signal is inverted with respect to that described above. This is notable in a trace, since the idle period will be represented by a low signal. In this case, all values are inverted.

Packet data frames

Asynchronous serial links are often used to support packet data links (e.g., NMEA GPS, DMX, RDM), where bytes are grouped together to form a frame.

Special sequences are used ("called framing") to indicate the start and end of each frame transmitted. The set of rules governing what sequence of bytes are sent is known as a protocol.

See also:

Prof. Gorry Fairhurst, School of Engineering, University of Aberdeen, Scotland. 2024