/aɪ tuː siː/

noun — "a simple two-wire bus for short-distance chip-to-chip communication."

I²C (Inter-Integrated Circuit) is a synchronous, multi-master, multi-slave serial communication bus used to connect low-speed peripheral devices to processors and microcontrollers on the same board. Designed for simplicity and minimal wiring, I²C uses just two shared lines—data and clock—to coordinate communication between components such as sensors, displays, real-time clocks, and configuration registers in embedded systems.

Technically, I²C operates using an open-drain signaling scheme on two lines: SDA (serial data) and SCL (serial clock). Devices are addressed using 7-bit or 10-bit addresses, allowing multiple slaves to share the same bus. Communication is framed with start and stop conditions, address bytes, read or write bits, and acknowledge signals. The clock is generated by the master, and data is sampled on defined clock edges, ensuring synchronized transfers. Standard data rates include 100 kbit/s (standard mode), 400 kbit/s (fast mode), and higher-speed variants such as fast-mode plus and high-speed mode.

Key characteristics of I²C include:

  • Two-wire interface: minimizes pin usage and board complexity.
  • Addressed devices: allows many peripherals to share a single bus.
  • Synchronous timing: master-controlled clock ensures predictable data transfer.
  • Open-drain signaling: enables safe multi-device arbitration.
  • Short-range design: optimized for communication within a single device or circuit board.

In practical workflows, I²C is commonly used in embedded systems to read sensor data or configure peripheral devices. For example, a microcontroller may poll a temperature sensor over I²C by sending its address, issuing a read command, and receiving digital temperature values. Multiple sensors and control chips can coexist on the same two wires, simplifying system design and reducing hardware overhead.

Conceptually, I²C is like a shared conversation line where one speaker controls the rhythm and politely calls on each listener by name, allowing many components to communicate without shouting over one another.

See SDA, SCL, embedded systems, microcontroller.