To start with, let’s remind us what are UARTs and USARTs. UART is a universal asynchronous receiver/transmitter, and USART is a universal synchronous/asynchronous receiver/transmitter. As their names indicate, those two pieces of hardware are very similar. In fact, USARTs are UARTs which can communicate not only asynchronously, but they also provide synchronous receiving and transmitting, what makes them a good addition to integrated circuits used in many modern electronic devices.
Synchronous transmission uses clock signals to synchronize the transmission speed at both sending and receiving ends, instead of start and stop bits. That causes speeding up the transmission (USART can be faster than 115k), however it is also more likely that an error occurs.
On the other hand, asynchronous data transmission takes place without a separate clock signal, what in practice means that both ends of the connection need to know the rate of data transfer, so that the transmission can be continued without any problems. This type of data transmission uses two bits: start and stop to mark the beginning bit. The fact that the bits are of opposite polarity enables the recognition of which packet of information is sent at the time.
The main differences between synchronous (USART) and asynchronous mode (UART and USART):
- synchronous mode requires data and a clock, unlike asynchronous mode, which requires only the data
- synchronous mode provides data transmission at a certain rate, which is not required in asynchronous mode
- data is transmitted in the form of blocks in synchronous mode, asynchronous mode transmits one byte of data at one period of time
- synchronous mode provides higher data transfer rate
The most significant similarity, which is asynchronous transmission, is the same in both UART and USART. It is an important feature for many popular microcontrollers. Although nowadays some of best known microcontrollers such as PIC and AVR are equipped rather with USARTs than UARTs, they do not necessarily need them, because they usually are equipped with other devices (SPI, I2C) responsible for synchronous transmission. All that means that from the point of view of asynchronous communication, UART and USART are quite the same.
USART’s best advantage and difference is that it can act also as a synchronous device for some styles of communication. It means that data is clocked instead of self-timed data. As a more advanced transmitter, USART transmits data in block, which is more efficient, while UART provides slower byte by byte transmission.
In conclusion, both UART and USART can be generally suitable for the same applications because of their asynchronous communication. When you do not want to use other additional synchronous devices, use USART.