/ˈjuːɑːrt/

noun — "asynchronous serial link for device communication."

UART, short for Universal Asynchronous Receiver/Transmitter, is a hardware communication module used to send and receive serial data asynchronously between a processor and peripheral devices. It converts parallel data from a CPU or microcontroller into a sequential stream of bits for transmission, and conversely reconstructs incoming serial data into parallel form for the processor. UARTs are fundamental in embedded systems, serial consoles, and point-to-point communication over short distances.

Technically, a UART implements the physical and data link layers of a serial communication protocol. It handles framing, start and stop bits, parity checking, and buffering. Each transmitted byte is encapsulated with:

  • 1 start bit signaling the beginning of transmission
  • 5–8 data bits carrying the payload
  • Optional parity bit for error detection
  • 1–2 stop bits indicating the end of the byte

The transmitting and receiving devices must agree on the **baud rate**—the number of bits transmitted per second—to correctly interpret the timing of each bit.

 


# conceptual UART transmit
TX_byte = 0xA5
# frame sent: start | 8 data bits | parity | 1 stop bit
UART.send(TX_byte)
# receiver reconstructs byte from serial stream
RX_byte = UART.receive()

In embedded workflows, UART provides a simple, low-overhead channel for debugging, logging, device configuration, and peripheral control. It is widely supported across microcontrollers, CPUs, and FPGA boards. While UART is limited to short-distance, point-to-point links, it is highly reliable, does not require a shared clock, and allows flexible framing and error detection.

Conceptually, UART is like a mail courier who packages letters (bytes) with a clear start and end envelope and ensures both sender and receiver understand the delivery speed and format. Each byte is sent sequentially, and any timing mismatch or framing error can be detected and corrected if parity is used.

See SPI, I²C, GPIO, Microcontroller, Embedded Systems.