Note
· Michele Forese
I2C and I3C
Two-wire control buses — I2C as the workhorse, I3C as the MIPI successor with speed and in-band interrupts.
I2C (Inter-Integrated Circuit) is the two-wire bus almost every sensor, EEPROM, and PMIC still speaks: SDA and SCL, open-drain, pull-ups, 7-bit addresses.
I3C (Improved Inter Integrated Circuit, a MIPI spec) is the successor. Same two pins in spirit, not the same electricals, and a lot more in the protocol.
A current MCU might have several of each. The STM32N6 series, for example, lists four I2C and two I3C.
I2C
- Standard 100 kHz, Fast 400 kHz, Fast-mode Plus 1 MHz, some parts High-speed 3.4 MHz
- Open-drain: a strong pull-up fights every edge, so speed, capacitance, and pull-up value are a compromise
- Interrupts from devices usually need an extra INT GPIO
- Ubiquitous. If the part exists, it probably has an I2C mode
Pros: Everywhere, trivial to bit-bang, cheap devices.
Cons: Slow for a camera control channel you poll hard, extra wires for interrupts, address clashes (0x50 is not unique in nature).
I3C
- Push-pull on the data line for high speed, with a defined way to mix in I2C devices
- Typical SDR rates in the low tens of Mbit/s — an order of magnitude above Fast-mode I2C
- In-band interrupt: a device can win the bus and signal without a dedicated INT pin
- Dynamic addressing, so you are not stuck with two identical sensors at 0x76
- Optional HDR modes for still more throughput
Pros: Faster, fewer GPIOs, better multi-drop of similar parts.
Cons: Fewer devices than I2C, more complicated host, voltage and mix rules (legacy I2C on an I3C bus is a checklist, not a default).
Which one for a camera board
Camera modules still often use I2C (or CCI, which is I2C-shaped) for register setup, with CSI-2 for pixels. I3C is there when a sensor or a board-management chip speaks it. Do not assume an I2C-only IMU will magically run at I3C rates.
If you only need a temperature sensor and an EEPROM, I2C is the bus. If you are hanging several identical sensors and you are short on pins, look at I3C.