Level 3 · Protocol Reference

UART

No clock, no addressing, no handshake — just two wires and an agreement about timing. The oldest trick in the book, and still the first thing most embedded devices say to you.

WiresTX + GND (RX too, if bidirectional)
ClockNone — speed agreed in advance
TopologyPoint-to-point, one sender
Typical speed9600 – 115200+ baud

A Little History

UART stands for Universal Asynchronous Receiver/Transmitter — "asynchronous" is the operative word, and it's the whole idea. The concept dates back to telegraphy and teletypes, long before integrated circuits existed: two parties agree on a signaling rate ahead of time, and after that, no shared clock wire is needed to stay in sync for the duration of one character.

That same idea carried straight through into computing via RS-232 serial ports — the chunky beige connectors on the back of every PC through the 1980s and 90s, used for modems, mice, and terminals. The physical connector mostly disappeared, but the protocol underneath it didn't go anywhere: it just moved onto a couple of GPIO pins.

What It's Actually For

UART is the "hello, are you there?" of embedded electronics. It's usually the very first interface a new board gets, because it needs no special hardware beyond two wires and a common ground — no bus arbitration, no addressing scheme, nothing to configure except a baud rate both ends agree on. That makes it the default choice for debug consoles, GPS modules, Bluetooth serial modules, and countless simple point-to-point links. If a product has a "serial debug port," it's almost certainly UART underneath.

How It Works

The line idles HIGH. To send a byte, the transmitter pulls the line LOW for one bit period — the start bit — which is the only signal a receiver gets that something is coming. Eight data bits follow, sent first, each held for exactly one bit period. A stop bit (the line returning HIGH) closes out the frame. There is no clock line, no acknowledgment, and no error correction — the whole scheme depends on both ends having agreed on the bit period (the baud rate) beforehand.

start D0 D1 D2 D3 D4 D5 D6 D7 stop 1 0 1 0 0 0 0 0 1 0 idle idle D0→D7 (LSB first) = 0x41 = 'A'
The start and stop bits are the entire framing mechanism. There's no clock line — the receiver only knows a byte is coming because the line dropped, and only knows it ended because the line came back up on schedule. The eight data bits shown here spell out 0x41 — the ASCII character 'A'.

To measure an unknown baud rate from a raw capture: find the narrowest pulse in the signal (that's one bit period) and take its reciprocal. A ~104µs pulse means 1 ÷ 0.000104 ≈ 9600 baud.

On the Sniffer Board

Top view of the sniffer board with the UART header outlined in a red box
 The UART header is boxed in red. Pins run from pin 1 at the top: RX, TX, GND.
UART header pins
PinConnects to
RXNot used — leave unconnected (it's an input to the board)
TXLogic analyzer channel D0
Logic analyzer ground clip

9600 baud, 8 data bits, no parity, 1 stop bit (8N1) — standard and unremarkable. In PulseView: 1 MHz sample rate, 5 second capture gives roughly 100× oversampling, comfortably clean for the UART decoder to lock onto. Add the decoder (Decode → Add a protocol decoder → UART), assign RX = D0, and set the baud/data/parity/stop fields above.