SPI (serial peripheral interface)
SPI is the fast lane of chip-to-chip serial communication: a shared clock (SCLK), two data lines (one each way, MOSI and MISO), and a separate chip-select wire for every peripheral. Because the controller drives an explicit clock, both sides always sample bits at exactly the same instant — that synchronicity is why SPI can run at tens of megahertz, dozens of times faster than I²C. Picture two people passing beads on facing conveyor belts that move in perfect lockstep: as one sends a bead out, the other arrives, so each clock tick swaps a bit in both directions at once (full-duplex).
To talk to a specific device the controller pulls that device's chip-select (CS/SS) line low; everyone whose CS is high ignores the bus entirely. This makes SPI gloriously simple and fast — no addresses, no acknowledgements, just shift bits on each clock edge — but it costs pins: every extra peripheral needs its own CS line, so ten devices means ten select wires plus the three shared lines. SPI is the go-to for anything that moves a lot of data: SD cards, TFT displays, fast ADCs, flash memory chips, and radio modules. The tradeoff against I²C is the classic embedded design decision — speed and simplicity versus pin count and wiring.
SPI vs I²C in one line: SPI is faster and simpler per transfer but burns a chip-select pin per device; I²C uses just two wires for everyone via addressing but is slower and fussier. Pick SPI for displays and SD cards, I²C for a crowd of slow sensors.