What is UART?
A better question is, “How is UART?” Or better yet, “What is a UART?” 50 years ago the answer would have been unambiguous. But today it seems the meaning has been all but obscured. Many will tell you UART is a protocol. WRONG! Stop the misinformation! The answer is in the name itself: Universal Asynchronous Receiver Transmitter. Admittedly, that doesn’t help much. To understand the true meaning we must look back to prehistoric times, when cave dwellers applied voltages to wires and wiggled them high and low to send signals.
During this early period, a.k.a 1960, RS-232 was created as a standard for serial communication transmission. RS-232 defines the electrical characteristics and timing of signals, the pinout of connectors between devices, and pretty much all the other basic properties one needs to specify to enable semi-reliable electrical communication between two systems. RS-232 is also not a protocol, but rather an interface. And RS-232 was not the only serial interface back then. RS-422 was issued in 1975 and RS-485 in 1983. Each specify their own voltage levels and wiring arrangements.
Originally, the UART was a discrete integrated circuit, part of the serial port hardware on a computer or terminal. The UART would read incoming bits on its RX line and wiggle out bits on its TX line, while a separate IC, or sometimes internal circuits in the UART, would convert the signals to RS-232 voltage levels, or whatever interface the serial port supported.
Now that we’ve established what the UART was originally, its full name should make more sense. The receiver/transmitter part are pretty self-explanatory. It received and transmitted serial data–in full duplex. It was asynchronous: the systems on either side of the RX/TX lines had to agree on a baud, the speed at which to shift out bits. And it was universal in that you could configure the baud and character format, among other things, and use it to communicate over virtually any of the standard serial interfaces. A UART!
Fast-forward to today, and the old interfaces like RS-232 have been replaced by high speed standards like USB and Ethernet. But UARTs live on, mostly in the form of modules on your typical system-on-chips. Even a simple SoC will often have four or more UARTs. The biggest difference between modern UARTs and those of old is that they’re no longer discrete chips; I think this is where a lot of the confusion stems. Other than that, their behavior is largely the same. And although the serial interfaces that UARTs once implemented are no longer widely used, UARTs are still useful for their simplicity and ubiquity, especially in applications involving short-range, low-speed serial communication.