Embedded Systems

UART Frames

UART sends bytes one bit at a time over a data line. Instead of sharing a clock wire, the transmitter and receiver independently time an agreed baud rate and frame format.

A simulator showing a character encoded and transmitted as a UART frame

1. Choose a character and communication settings

Parity Stop bits

2. Play the transfer

Start bit Data (D0 first) Parity Stop bits Receiver sampling point

You can enter hexadecimal such as 0x41 instead of a character. During playback, the transmitter sends one bit at a time and the receiver samples near the center of each bit.

A frame starts low and ends high

The idle line is high. A falling edge begins the start bit and starts the receiver's timing. Eight data bits follow from D0 upward. Finally, the stop bit returns the line high.

Parity makes the total number of one bits even or odd. A receiver can detect a single flipped bit by checking this count, although parity does not detect every possible error.

Why baud rates must agree

The receiver estimates bit centers from the start edge: 1.5 bit periods later, 2.5 periods later, and so on. Clock mismatch accumulates across a frame. A rough half-bit drift limit gives an approximately 5% total tolerance for a simple frame, but practical designs use tighter margins, commonly around 2%, depending on the hardware and format.

RS-485 is a differential physical layer that can carry UART frames over longer distances. Modbus RTU conventionally uses 11-bit character framing: 8E1 by default, or 8N2 when parity is disabled.