Inter-Integrated Circuit (I²C)
The worldwide standard for short-distance, synchronous communication between chips. Simple hardware, complex capabilities.
Two Wires Only
SDA (Data) and SCL (Clock). That’s all you need to connect up to 127 devices.
Multi-Master
Any device can claim the bus to send commands (arbitration logic handled automatically).
Synchronous
Shared clock line ensures all devices march to the same beat. No baud rate configuration needed.
1. The Physical Layer
Unlike push-pull protocols (like SPI or UART), I²C uses an Open-Drain design. The bus lines are passive; they are pulled up to voltage (VCC) by resistors and pulled down to ground (GND) by the chips. This section demonstrates why resistor selection is critical for signal integrity.
Signal Integrity Simulator
I²C signals don’t go from 0V to 3.3V instantly. The Pull-Up Resistor (R) and the Bus Capacitance (C) create an RC curve. If the rise time is too slow, the signal won’t reach a valid “High” logic level before the clock ticks, causing data corruption.
Visualizing Voltage (V) vs Time (µs) based on V(t) = Vcc * (1 – e^(-t/RC))
2. Protocol Anatomy
I²C transmits data in 8-bit packets. Every byte sent is followed by an Acknowledge (ACK) bit. Explore the interactive timeline below to see exactly how the Master and Slave manipulate the bus during a typical write sequence.
Step 1: Idle Bus
Both SDA and SCL are pulled High by the resistors. No activity on the bus.
3. Addressing & Data Direction
The first byte sent after the START condition determines which slave is being targeted and whether the Master intends to Read or Write. Interact with the bits below to construct a control byte.
Control Byte Constructor
First ByteBits 7-1: The Address
Every I²C slave has a unique 7-bit address (e.g., 0x68 for an RTC). The Master broadcasts this on the bus. Only the device with this address will respond with an ACK.
Bit 0: Read/Write (R/W)
0 = Write (Master sends data to Slave)
1 = Read (Master expects data from Slave)
The 9th Bit: ACK/NACK
After these 8 bits, the Slave pulls SDA Low (ACK) to say “I’m here!” or leaves it High (NACK) if it’s absent or busy.
4. Speed Modes & Comparison
I²C is generally slower than SPI but sufficient for sensors and control.
