
Two wires, no clock
A UART link is three wires, TX to RX, RX to TX and ground to ground, and no clock wire at all. Both devices agreed the speed beforehand, so a link that fails is usually one of those three wires on the wrong pin, or that agreement broken.
Three wires
Two devices that talk over a UART are joined by three wires. The TX pin of each goes to the RX pin of the other, and the two grounds are joined. TX is where a device puts bytes out, and RX is where it takes them in, so the wires cross: what one end sends, the other end must receive.
Each direction has a wire of its own. That is why both devices can send at the same moment, and why neither is in charge: UART is peer to peer, with no addresses to say who may speak.
Ground is the reference
A pin's level is a voltage, and a voltage is always measured against something. The ground wire is that something, shared by both ends. It carries no data. Leave it out and the receiver has nothing to measure the other device's voltage against, and what you see is often not a clean silence but bytes that cannot be trusted.
No clock
SPI sends a clock on a wire of its own, and the receiver reads a bit on every tick. UART sends none. The ESP32 reference manual says it plainly: it is not necessary to add clocking information to the data, which requires the data rate, stop bits and parity to be identical at both ends.
So each device keeps its own time, and the two were told the same speed beforehand. That agreement is the only thing joining their clocks. Every later lesson in this course is about what that costs.
A frame is not a message
What goes down the wire is a frame, and a frame carries one byte. There is no address in it, no acknowledgement coming back and no resend. If a byte is lost, nobody is told. Anything that looks like a message, such as a line of text or a sensor reading, is made of many frames and held together by a rule of the program, not by the UART.
Where the picture bends
The cottages, switches and lamps are a drawing, and it is better to say now where it is wrong. A real beat lasts microseconds. At 9600 baud one beat is about 104 microseconds, not a fifth of a second. The switches and lamps are transistors, and the levels are 3.3 V or 5 V depending on the device. The receiver is a counter, not a person watching a lamp, and nothing on the wire carries time. The dial and markers in later lessons are this bench's drawing of what a receiver does.
The ESP32 book covers the same ground from the board's side in UART and baud rates.
Common mistakes
- Wiring TX to TX. Both are outputs. Nothing is listening, and nothing arrives. Cross them, even when the silkscreen on one board makes it feel wrong.
- Forgetting the common ground. The two devices share a data wire and not a reference, and the bytes that arrive, if any, cannot be trusted. Join the grounds first, then look at anything else.
- Looking for the clock wire. There is none. If two devices disagree, the mistake is in the settings, not in a missing cable.
Edit this page — content/fundamentals/uart/two-wires-no-clock.mdx
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.