UART chips are single, large-scale integration chips designed for asynchronous serial communication between a computer and other peripheral devices that are connected to the serial port of the computer.
SPI is an interface bus that allows communication between microcontrollers and peripheral devices such as SD cards, sensors, and shift registers.
SPI protocol is significantly faster than UART.
UART is a common protocol that provides full-duplex serial communication
If you work on embedded systems, it is important to understand the various technologies and communication protocols that are used. Communication protocols enable the connected devices in the system—such as sensors, scientific instruments, computers, and displays—to communicate with each other. Some of the most common communication protocols in use are Universal Asynchronous Receiver/Transmitter (UART), Serial Peripheral Interface (SPI), and Inter-Integrated Circuit (I2C). All three of these communication protocols allow digital serial communication, but they are different in terms of various aspects such as hardware, speed, number of pins, and connected devices. In this article, we will compare UART vs. SPI speed and highlight several other key differences between UART and SPI that are worth noting.
UART is the most common protocol that provides full-duplex serial communication. More than a protocol, it is a hardware peripheral that is present in a microcontroller. UART chips are single, large-scale integration chips designed for asynchronous serial communication between a computer and other peripheral devices that are connected to the serial port of the computer.
Physically, UART is a microchip that sends and receives data from one system to another system. The purpose of UART chips is to convert incoming serial data to parallel data for the system to read and then revert back the outgoing parallel data to serial data before exchanging it to other systems. A UART chip can be regarded as a data terminal equipment (DTE) device, which enables the serial-to-parallel conversions of data in a communication bus.
In UART communication, two UART chips can communicate with each other, which is why UART communication requires only two wires for data flow between the transmit and receive UARTs. The data flow is from the transmit pin of the transmitting UART and goes to the receive pin of receiving UART. The transmitting UART is responsible for the conversion of parallel data from a peripheral device to serial data and transmits it in serial to the receiving UART. The receiving UART is where the serial data is converted to parallel data for the receiving peripheral device.
SPI Communication Protocol
Unlike UART, which is a circuit integrated on a microcontroller, SPI is just a communication protocol. It is an interface bus that allows communication between microcontrollers and peripheral devices such as SD cards, sensors, and shift registers. SPI serial communication protocol is suitable for electronic devices that support clocked serial streams. That means, in contrast to UART, SPI protocol is synchronous.
SPI protocol allows high-speed data streaming with the help of the serial data in/serial data out method. In SPI, the high-speed data exchange between the devices on the bus includes at least four signals:
- A clock (CLK)
- Serial data in (SDI)
- Serial data out (SDO)
- A chip select (CS) signal
In SPI communication, the clock signal generated by the controller device provides synchronization. The SDI and SDO are the signals shared by all the connected devices, whereas a unique peripheral select line is assigned for each peripheral device. Therefore, to enable SPI full-duplex communication, at least four wires are required.
There can be multiple peripheral devices connected in an SPI implementation. As the number of peripheral devices increases, the actual number of wires becomes three more than the number of peripheral devices. The selection of the peripheral device for communication is based on pulling a low on the particular peripheral select line by the controller device.
So far, we have discussed the specifics of UART and SPI; now, let’s compare them.
UART vs. SPI Speed
When comparing UART vs. SPI, there are only a few similarities:
- Both support full-duplex serial communication.
- Both are used for short-distance communication.
Other than that, UART and SPI have differences in speed, number of connected devices, number of pins, size, and synchronization.
Speed is one of the most important characteristics in a communication protocol, and there are a lot of differences between UART vs. SPI speed. SPI protocol is significantly faster than UART. SPI offers high-speed synchronous communication, whereas UART devices communicate with each other at speeds that are three times lower than SPI protocol.
UART transfers serial data between the devices at lower data rates than SPI. The data rate of the UART devices communicating with each other must be equal due to the asynchronous type of communication. Maximum data rates are typically in the order of 230 kbps to 460 kbps in UART communication. In contrast to UART, there is no specified data rate limit for SPI interfaces. The data rate is usually around 10 Mbps to 20 Mbps in an SPI communication bus.
Considering UART vs. SPI speed, the fastest communication protocol for sending data over short distances from the two protocols is SPI. SPI protocol is best suited for low-power applications requiring high speed. The high-speed signals of an SPI interface limit its data transfer only over short distances. To send data over further distances, you must lower the clock speed and incorporate specialized driver chips.