Skip to content
UniCircle
EasyConceptualCommunication protocols

Compare UART, SPI and I2C

Question ECE-103

Compare UART, SPI and I²C in terms of number of wires, clocking, speed, and how multiple devices are handled. When would you choose each?

Show hints

Ask yourself: is there a shared clock line, and how is each slave selected?

Show the explanation

Model answer.

UART (Universal Asynchronous Receiver-Transmitter)

  • Wires: TX and RX (plus ground). Point-to-point between two devices.
  • Clocking: Asynchronous. There is no clock line; both sides must be set to the same baud rate. Each frame has a start bit, data bits (usually 8), an optional parity bit and stop bits.
  • Speed: Commonly 9600 bps to around 1 Mbps.
  • Use: Debug consoles, GPS modules, GSM/Bluetooth modules, PC communication through a USB-serial converter.

SPI (Serial Peripheral Interface)

  • Wires: SCLK, MOSI, MISO and one chip-select (CS/SS) per slave.
  • Clocking: Synchronous; the master drives the clock. Full duplex: data moves both ways on every clock.
  • Speed: Typically several MHz to tens of MHz. No addressing or acknowledgement overhead.
  • Multiple devices: Each slave needs its own CS line, so pin count grows with the number of devices.
  • Use: SD cards, flash memory, displays, fast ADCs.

I²C (Inter-Integrated Circuit)

  • Wires: Only two, SDA (data) and SCL (clock), shared by all devices. Both lines are open-drain with pull-up resistors.
  • Clocking: Synchronous, half duplex. Standard mode 100 kbit/s, Fast mode 400 kbit/s, Fast-mode Plus 1 Mbit/s.
  • Multiple devices: Each device has an address (usually 7-bit). The master sends the address, and every byte is acknowledged (ACK/NACK). Multi-master operation is supported through arbitration.
  • Use: Sensors, EEPROMs, RTCs and other slow peripherals on the same board.

Choosing

  • Need a simple link to one module or a PC: UART.
  • Need high throughput to a few devices and pins are available: SPI.
  • Many low-speed devices and few pins: I²C.

Common mistake. Calling UART a protocol with a defined voltage level. UART defines framing; voltage levels come from the physical layer, such as TTL, RS-232 or RS-485.

Likely follow-up. "What happens if two I²C devices have the same address?" They will conflict. You would use a device with a configurable address pin, a second bus, or an I²C multiplexer.

Original UniCircle question. Last reviewed 28 Oct 2026.