UART (Universal Asynchronous Receiver-Transmitter) is one of the most widely used serial communication protocols in the embedded world. It is a physical circuit (hardware) used for serial communication between two devices, such as a microcontroller and a PC, or two microcontrollers.
Unlike SPI or I2C, UART is asynchronous, meaning it does not use a clock signal to synchronize the sender and receiver. Instead, both devices must agree on a timing parameter called the Baud Rate.
| Parameter | Description |
| Communication | Full-duplex (can send and receive at the same time). |
| Baud Rate | Standard speeds: 9600, 115200, 230400, 921600 bps. |
| Logic Levels | Usually TTL (0V and 3.3V/5V) or RS-232 (+/- 12V). |
| Maximum Devices | Strictly Point-to-Point (2 devices only). |
UART (Universal Asynchronous Receiver-Transmitter) is one of the most widely used serial communication protocols in the embedded world. It is a physical circuit (hardware) used for serial communication between two devices, such as a microcontroller and a PC, or two microcontrollers.
1. Physical Wiring
UART uses only two wires for data transmission between two devices:
- TX (Transmit): Sends data to the other device.
- RX (Receive): Receives data from the other device.
- GND (Ground): Common reference point (mandatory).
2. The UART Data Frame
Since there is no clock, data is sent in discrete “packets” or frames. A standard frame consists of:
- Start Bit: Pulled low (0) to signal the start of transmission.
- Data Frame: Usually 5 to 9 bits (typically 8 bits or 1 byte).
- Parity Bit (Optional): Used for simple error checking.
- Stop Bit(s): Pulled high (1) to signal the end of the packet.
A common issue in UART communication is a Baud Rate Mismatch. If the sender is at 9600 bps and the receiver is at 115200 bps, the data will appear as “garbage” text (broken characters). The timing must be accurate within approximately 2.5% for reliable data recovery.

Pros: Only two wires needed; no clock signal required; well-documented and supported by almost every microcontroller.
Cons: Limited to two devices; baud rates must be manually matched; slower compared to synchronous protocols like SPI.
