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 software only via a standard I/O pin.


There is an arbitrary idle gap between slots, identified by a Mark level (high). This 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. 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

A parity check bit is sometimes added 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 bauds 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).
11/9600 = 1.2 mS


The start of each character is identified by the receiver by a downwards (space) transition in the received line voltage. This triggers reception of the bauds forming a character slot using the receive shift register. There is no direct synchronisation between sender and receiver using a locally generated copy of the clock set to the same nominal baud rate as the sender. If the last baud is arenot both set to one, then the character is discarded. Many systems use two stop bauds, in which case both need to be received for the received data to be considered valid,

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 ("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. 2020