We’re Officially Live β€” Lifetime Founding Membership Available for a Limited Time
Free preview

Serial vs Parallel, Sync vs Async

The two axes that classify every bus: serial vs parallel (one wire or many) and synchronous vs asynchronous (shared clock or agreed-upon rate), and where UART, SPI, I2C, and CAN land.

18 min read

In this lesson:

These axes classify every protocol in this module, learn them once and the rest slots into place.


Axis 1: serial vs parallel

To move a byte between two chips, you can send all 8 bits at once over 8 wires (parallel) or one bit at a time over a single wire (serial).

PARALLEL (8 data lines)            SERIAL (1 data line)
 D7 ──────1                         D ──1─0─1─0─0─1─0─1──▢  (bits in time)
 D6 ──────0
 D5 ──────1                         one wire, bits sent sequentially
 D4 ──────0                         (+ usually a clock or agreed rate)
 ...        all 8 bits at one instant
 D0 ──────1

Intuitively parallel sounds faster, 8 bits per clock vs 1. But at high speed and any real distance, parallel loses:

So the industry went serial: USB, SATA, PCIe, Ethernet, SPI, I2C, CAN are all serial. A single clean serial line clocked very fast beats many skewed parallel ones. Parallel survives only short-haul and on-chip (memory buses, some displays). Serial = fewer wires, longer reach, higher practical speed.


Axis 2: synchronous vs asynchronous

How does the receiver know when to sample each bit?

SYNCHRONOUS (clock + data)          ASYNCHRONOUS (data only)
 CLK  β–β–β–ˆβ–ˆβ–β–β–ˆβ–ˆβ–β–β–ˆβ–ˆβ–β–β–ˆβ–ˆ                       start    data bits        stop
 DATA ──1──0──1──1──             idle β–”β–”β–”β–”β•²___β•±β–”β•²_β•±β–”β–”β•²__β•±β–”β–”β–”β–”  (sampled at agreed baud)
      sample on each clock edge   receiver recovers timing from the start edge

The tradeoff: synchronous needs an extra wire (clock) but works at any speed both sides can follow and tolerates clock drift. Asynchronous saves the wire but requires both ends to have accurate, matched bit timing, a baud mismatch beyond a few percent garbles everything (a whole lesson later).


Axis 3: duplex, who can talk when


Where the protocols land

Protocol Serial? Sync/Async Clock line Duplex Wires (data)
UART serial async none (agreed baud) full-duplex 2 (TX, RX)
SPI serial sync SCK full-duplex 3 + 1 CS/slave
I2C serial sync SCL half-duplex 2 (SDA, SCL)
CAN serial bit-timed* none (recovered) half-duplex 2 (differential)

*CAN has no separate clock line; receivers resynchronize on bit edges, so it behaves async at the wire but with tight bit-timing rules.

This single table previews the whole module: the next lessons fill in each row's mechanics.


A terminology note

Don't conflate the peripheral/protocol with the electrical standard:


Gotchas


TL;DR

This is just the start

Sign up free to track progress on this lesson, get coding problems with the Run button, and unlock the full interview Q&A.

More in Communication Protocols

UARTSPI
I2C
Choosing UART, SPI, or I2C
CAN Bus
Common Bus Bugs