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.