Universal Asynchronous Reciever-Transmitter
Introduction
The transmitter converts parallel data from a controlling device like a CPU into serial form, transmits it in serial to the receiving UART, which then converts the serial data back into parallel data for the receiving device. Data flows from the Tx pin of the transmitter to the Rx pin of the receiver hence only two wires are needed to transmit data.

UART transmit data asynchronously, which means there is no clock signal to synchronise the output of bits from the transmitter to the sampling of bits by the receiver. The transmitter adds start and stop bits to the data packet being transferred which define the beginning and end of the data packet so the receiver knows when to start reading the bits. When the receiver detects a start bit, it starts to read the incoming bits at baud rate. Both operate at about the same baud rate and must also must be configured to transmit and receive the same data packet structure.
Operation:
The UART that is going to transmit data receives the data from a data bus. The data bus is used to send data by another device like a CPU, memory, or controller. Data is transferred from the data bus to the transmitting UART in parallel form after which, it adds a start bit, a parity bit, and a stop bit, creating the data packet. Next, the data packet is output serially, bit by bit at the Tx pin. The receiver reads the data packet bit by bit at its Rx pin. The receiving UART then converts the data back into parallel form and removes the start bit, parity bit, and stop bits. Finally, the receiving UART transfers the data packet in parallel to the data bus on the receiving end. The data transmitted is organized into packets where each packet contains 1 start bit, 5 to 9 data bits, an optional parity bit, and 1 or 2 stop bits.


UART data transmission
1. The transmitting UART receives data in parallel from the data bus:
