UART is a common serial communication method used in many embedded systems. It sends data one bit at a time without a shared clock line, using matched settings to maintain synchronization. Reliable UART links depend on correct wiring, baud rate, frame format, voltage levels, and signal timing. This article gives information about UART operation, setup, uses, and common problems.

Universal Asynchronous Receiver-Transmitter (UART) Basics
UART stands for Universal Asynchronous Receiver-Transmitter. It is a serial communication interface that transfers data one bit at a time between connected devices. A UART block is built into many microcontrollers, processors, communication chips, and embedded modules. It converts parallel data into a serial stream during transmission and converts incoming serial data back into bytes during reception. UART does not use a shared clock line. Instead, both devices stay synchronised by using matching communication settings and by detecting the start and end of each data frame.
Reasons UART Remains Common
• It uses only a few signal lines
• It is simple to set up for direct communication
• It is included in many embedded devices
• It supports readable output through serial terminals
How UART Frames and Timing Work?
Parts of a UART Frame

| Frame Element | Function |
|---|---|
| Start bit | Marks the beginning of a frame |
| Data bits | Carry the value being sent |
| Parity bit | Adds a basic error check when used |
| Stop bit | Marks the end of the frame |
| Idle state | Keeps the line high when no data is sent |
Main UART Settings
| Setting | What It Controls |
|---|---|
| Baud rate | The speed of communication |
| Data bits | The number of value bits in each frame |
| Parity | Whether a parity check is added |
| Stop bits | The frame ending format |
| Flow control | The pacing of data between connected devices |
Baud rate sets how fast bits are sent. Higher baud rates increase transfer speed but require more accurate timing and a cleaner signal path. UART communication also depends on matching frame settings on both sides.
Common Baud Rates
| Baud Rate | Typical Use |
|---|---|
| 9600 | Basic terminals, simple modules, and older systems |
| 19200–38400 | Medium-speed communication |
| 57600 | Faster control and diagnostic links |
| 115200 | Console output and debugging |
Frame Length and Data Efficiency
Frame length affects how much useful data is carried in each transmission. Two UART links can use the same baud rate but still deliver different effective data throughput if their frame formats differ. For example, 8N1 and 7E1 use different numbers of total bits per frame, so the amount of payload data per frame is not the same.
UART Wiring, Voltage Levels, and Flow Control

A basic UART connection uses three main signals: TX, RX, and GND. The TX pin of one device connects to the RX pin of the other, and both devices must share the same ground for the signal levels to be correctly read.
Many microcontrollers and modules use TTL or CMOS UART levels, often at 3.3 V or 5 V. Older serial systems may use RS-232, which has a different voltage range and signalling method, so it is not directly compatible with TTL UART. A level-shifting transceiver is used when connecting these standards.
Some UART links also use flow control to prevent lost data when one side cannot accept incoming bytes fast enough.
Basic UART Wiring Rules
• TX from one device connects to RX on the other device
• RX from one device connects to TX on the other device
• Ground must be connected on both sides
UART Electrical Standards
| Type | Typical Use | Main Point |
|---|---|---|
| TTL/CMOS UART | Microcontrollers, modules, development boards | Uses logic-level signals such as 3.3 V or 5 V |
| RS-232 | Legacy serial ports, industrial links, PC serial connections | Uses a different voltage range and signalling behaviour |
Common Flow Control Methods
• Hardware flow control uses RTS and CTS lines
• Software flow control uses XON and XOFF characters
Hardware flow control uses separate control lines to manage data flow. Software flow control reduces the number of wires, but it uses control characters within the data stream.
How does a UART Operate Inside a Device?
Inside a device, a UART peripheral includes several parts that handle sending and receiving data. These parts often include a transmit section, a receive section, shift registers, status flags, and FIFO buffers. When data is sent, the software places a byte into the UART, and the hardware adds the start bit, optional parity bit, and stop bit before sending the full frame through the TX line.
When data is received, the UART watches the RX line for a valid start bit. It then samples the signal at the correct time, rebuilds the byte, checks the frame format, and stores the data so software can read it later.
UART peripherals also report status and error conditions, while FIFO buffers hold several bytes to reduce missed data when software does not respond immediately.
Common UART Status and Error Flags
• Transmit buffer empty
• Receive buffer full
• Parity error
• Framing error
• Overrun error
Common UART Uses in Embedded Systems
• Serial terminal debugging
• Communication between a microcontroller and a module
• Bootloader and firmware update links
• Simple command-and-response interfaces
• Data logging and diagnostics
• Embedded board console access
UART Setup, Testing, and Troubleshooting
Setting up a UART link starts with choosing compatible communication settings and signal levels. Testing helps confirm that the link is wired correctly, configured properly, and sending valid data frames.
Link Planning and Device Configuration
Choose the baud rate, frame format, voltage standard, and flow control method before making the connection. Then enable the UART hardware in software and configure any needed buffers or FIFO settings. Clock accuracy, cable quality, and expected data rate also affect link performance.
Communication Validation
Check the link by sending a known data pattern or readable text. A serial terminal, USB-to-UART adapter, logic analyser, or oscilloscope can help confirm that frames are valid and that the line stays in the correct idle state between transmissions.
UART Problem Guide
| Symptom | Likely Cause |
|---|---|
| Random or unreadable characters | Wrong baud rate or frame settings |
| No data received | TX/RX reversed, missing ground, disabled UART, wrong voltage level |
| Intermittent errors | Noise, long wiring, timing mismatch |
| Framing or parity errors | Bad settings or poor signal quality |
| Lost bytes during bursts | Overrun, weak buffering, no flow control |
Troubleshooting Checks
• Confirm TX and RX are crossed correctly
• Make sure both sides share the same ground
• Verify baud rate and frame format on both ends
• Check whether the signal levels are TTL/CMOS or RS-232
• Reduce the baud rate if a timing error or noise is suspected
• Review the UART error flags in the software
• Test with known-good terminal tools or adapters
UART, SPI, and I2C Compared

UART, SPI, and I2C are common serial communication methods, but they work in different ways. UART uses a direct link between two devices and does not need a clock line. SPI uses a clock and separate data paths for faster communication. I2C also uses a clock, but it allows multiple devices to share the same bus through built-in addressing.
Interface Comparison
| Feature | UART | SPI | I2C |
|---|---|---|---|
| Clock line | No | Yes | Yes |
| Typical topology | Point-to-point | Controller-peripheral | Shared bus |
| Complexity | Low | Moderate | Moderate |
| Built-in addressing | No | No | Yes |
| Common strength | Simplicity | Speed | Fewer wires for many devices |
UART suits simple, direct links and terminal access. SPI suits higher-speed communication. I2C suits cases where several devices share one bus with fewer signal lines.
Conclusion
UART remains used because it offers simple, direct communication with low hardware complexity. Its performance depends on matched settings, correct TX and RX wiring, shared ground, compatible voltage levels, and proper handling of timing, buffering, and error flags. Understanding frame structure, baud rate, flow control, and common fault causes helps explain why UART links fail and how stable communication is maintained in embedded systems.
Frequently Asked Questions [FAQ]
Can a UART send and receive at the same time?
Yes. UART supports full-duplex communication, so it can send data on TX while receiving on RX simultaneously.
What does 8N1 mean in UART?
8N1 means 8 data bits, no parity, and 1 stop bit.
Can a UART connect to multiple devices?
Not directly. UART is mainly for one-to-one communication and does not include built-in addressing.
Is baud rate the same as bit rate in UART?
In standard UART, yes. They are treated as the same because each symbol carries one bit.
Why use a USB-to-UART adapter?
It allows a computer to communicate with a UART interface via USB.
Does UART include encryption or advanced error correction?
No. UART does not include encryption or advanced error correction on its own.