Learning path

Full curriculum

Full curriculum

Arrows go from each prerequisite to the units that depend on it. Hover or focus a unit to highlight its path.

Unit content

I²C addressed serial communication

I²C is a two-wire synchronous serial bus that lets multiple devices share the same clock and data lines.

The bus uses SCL for the clock and SDA for data. Devices normally use open-drain or open-collector outputs: they can pull a line low but rely on pull-up resistors to return it high.

A controller begins a transaction with a START condition, sends a device address and transfer direction, then exchanges bytes. Receivers acknowledge accepted bytes with ACK; a NACK indicates that the byte or continuation was not accepted. A STOP condition releases the bus.

Because devices are addressed, many peripherals can share the same two signal wires when their addresses do not conflict.

I²C also defines rules for shared-bus coordination, including arbitration when more than one controller attempts to transmit.

Compared with SPI, I²C uses fewer wires and built-in addressing but requires pull-ups and has more protocol overhead.