UART (Universal Asynchronous Receiver Transmitter)
UART is a widely used asynchronous communication protocol. It is the most common protocol to transmit data from PC to microcontroller/FPGA boards. UART is the successor of RS-232 and RS-458 asynchronous protocols. RS-232 was very popular in early age of computers where it is used for computer serial port. The operating voltage of RS-232 is between +12 v and -12v. However UART operates in TTL (5v and 3.3v).
UART is considered asynchronous since a CLK signal is not transmitted with the signal. In order to read the data,
- Incoming data is sampled at a higher rate (typically eight times faster).
- When the start bit is detected (Input driven LOW) receiver waits to see whether it stays low at least half of the bit time.
- If it change before that start bit is not considered valid.
- If the input stays LOW for half the bit time, input is sample again after 1 bit time in order to read the first bit. 8 bits will be read terminated by stop bit.
UART is usually one to one communication. However the system will work for multiple receivers. Unlike I2C and SPI , UART does not support multiple transmitters in the system. Common issue in UART is baud rate mismatch. Baud rate referred to how many bits are transmitted for second. For example 9600 baud rate means 9.8Kbits are transmitted each second. Since the clock signal is not transmitted with the signal receiver should use the same baud rate transmitter is using in order to properly receive the data.