Skip to main content

Command Palette

Search for a command to run...

Why I3C Exists: The Evolution Beyond I²C

Updated
•7 min read•View as Markdown
Why I3C Exists: The Evolution Beyond I²C

Embedded Systems Fundamentals #4

If you've worked with embedded systems for any length of time, you've almost certainly used I²C.

It connects:

  • Temperature sensors

  • Accelerometers

  • Gyroscopes

  • EEPROMs

  • PMICs

  • Touch controllers

  • Camera sensors

  • Real-Time Clocks

For decades, it has been the de facto low-speed communication bus.

So why did the industry create an entirely new protocol? Was I²C broken?

Not at all.

In fact, I²C remains one of the most successful communication protocols ever designed. The problem wasn't I²C. The problem was that embedded systems evolved.

This article explores why I3C was created, what problems it solves, how it works internally, and what changes firmware and driver developers need to understand when migrating from I²C.

The Evolution of Embedded Systems

Twenty years ago, a typical microcontroller board looked something like this:

MCU
 |
 +-- EEPROM
 |
 +-- RTC
 |
 +-- Temperature Sensor

Only a handful of peripherals shared the bus. Bandwidth requirements were modest. Power consumption was manageable.

Today, the picture looks very different.

Application Processor
 |
 +-- IMU
 +-- Magnetometer
 +-- Barometer
 +-- Camera Sensor
 +-- PMIC
 +-- Battery Monitor
 +-- Touch Controller
 +-- Ambient Light Sensor
 +-- AI Sensor
 +-- Audio Codec

The number of devices has increased dramatically. Many of them continuously stream data. The communication bus has become a performance bottleneck.

The Limitations of I²C

I²C is elegant, but it carries several architectural limitations.

Static Addresses

Every device has a predefined address.

This creates problems when:

  • Two identical sensors are used.

  • Address pins are limited.

  • Large sensor networks are built.

The driver often has to work around these hardware constraints.

Pull-Up Resistors

I²C relies on open-drain signaling.

This means:

  • Slower signal rise times

  • Higher power consumption

  • Careful resistor selection

  • Increased sensitivity to bus capacitance

As bus speed increases, these physical limitations become more significant.

Separate Interrupt Pins

Many peripherals require an additional GPIO interrupt line.

Example:

I²C
+
Interrupt GPIO

This increases routing complexity and consumes valuable pins.

Clock Stretching

Clock stretching allows slower peripherals to delay communication.

While useful, it also introduces:

  • Timing unpredictability

  • Driver complexity

  • Timeout handling

  • Bus recovery logic

Many modern high-performance systems disable clock stretching entirely.

Limited Bandwidth

Common I²C modes include:

  • Standard Mode – 100 kHz

  • Fast Mode – 400 kHz

  • Fast Mode Plus – 1 MHz

  • High-Speed Mode – 3.4 MHz

For modern imaging, AI, and sensor-rich systems, this is often insufficient.

Enter I3C

The MIPI Alliance designed I3C to modernize the low-speed peripheral bus without forcing the industry to abandon existing I²C devices.

The design goals were ambitious:

  • Higher bandwidth

  • Lower power

  • Dynamic addressing

  • Simplified board routing

  • Better interrupt handling

  • Backward compatibility

Rather than replacing I²C overnight, I3C allows both protocols to coexist.

Backward Compatibility

One of I3C's greatest strengths is that an I3C controller can communicate with traditional I²C targets.

Example:

I3C Controller
 |
 +-- I3C Temperature Sensor
 |
 +-- I²C EEPROM
 |
 +-- I²C RTC

This allows gradual migration rather than complete redesign.

Push-Pull Signaling

Unlike I²C, I3C does not spend most of its time operating in open-drain mode. After initial arbitration, communication transitions to push-pull signaling.

Advantages:

  • Faster rise times

  • Higher speed

  • Lower power consumption

  • Improved signal integrity

Open-drain is retained only where it provides functional value.

Dynamic Address Assignment (DAA)

Perhaps the biggest architectural improvement. Instead of assigning addresses through hardware pins, the controller assigns addresses during initialization.

Benefits:

  • No address conflicts

  • Multiple identical sensors

  • Simplified PCB design

  • Easier manufacturing

This is especially valuable in modular products.

In-Band Interrupts (IBI)

Traditional I²C devices require:

I²C Bus

+

Interrupt GPIO

I3C eliminates this. Devices can request controller attention directly over the communication bus.

Benefits:

  • Fewer GPIOs

  • Reduced PCB routing

  • Simpler driver architecture

  • Lower pin count

For compact embedded products, this is a significant advantage.

Common Command Codes (CCC)

I3C introduces standardized commands.

These allow the controller to:

  • Discover devices

  • Assign addresses

  • Configure features

  • Broadcast commands

  • Manage bus behavior

Unlike vendor-specific approaches, CCCs provide a common management interface across compliant devices.

HDR Modes

High Data Rate (HDR) modes further increase throughput.

Examples include:

  • HDR-DDR

  • HDR-TSP

  • HDR-TSL

These modes trade protocol complexity for substantially higher bandwidth.

Applications include:

  • Imaging

  • AI sensors

  • High-rate telemetry

Controller Architecture

An I3C controller is considerably more sophisticated than a traditional I²C controller.

Typical blocks include:

Application

↓

HAL

↓

I3C Driver

↓

Command Queue

↓

Dynamic Address Manager

↓

CCC Engine

↓

Transfer Engine

↓

Interrupt Logic

↓

DMA

↓

I3C Bus

The controller becomes an active bus manager rather than simply shifting bits.

Driver Architecture

A robust I3C driver typically consists of:

  • Bus manager

  • Dynamic address manager

  • Transfer engine

  • CCC handler

  • Event manager

  • IBI handler

  • DMA interface

  • Error recovery module

Compared to I²C, the software architecture becomes significantly more state-driven.

Error Handling

Firmware must handle scenarios such as:

  • Dynamic address assignment failures

  • IBI conflicts

  • HDR negotiation failures

  • Legacy I²C compatibility issues

  • Bus initialization failures

  • Controller handover

Good driver design becomes increasingly important.

DMA and Interrupts

Like modern SPI controllers, I3C controllers typically support:

  • Interrupt-driven transfers

  • DMA transfers

  • Transfer queues

  • Hardware scheduling

This reduces CPU overhead while supporting high-bandwidth peripherals.

Real-World Applications

I3C is increasingly appearing in:

  • Smartphone sensor hubs

  • AI vision systems

  • Industrial automation

  • Wearables

  • Automotive electronics

  • Camera subsystems

  • Edge AI devices

  • Robotics

Many next-generation sensors now provide I3C support alongside I²C compatibility.

Migration Challenges

Migrating from I²C to I3C isn't simply a driver update.

Engineers must consider:

  • Mixed buses

  • Legacy devices

  • Power sequencing

  • Dynamic discovery

  • CCC implementation

  • Firmware architecture

  • Validation strategy

The migration is as much about software design as it is about hardware capability.

Looking Ahead

I3C isn't replacing SPI. It isn't replacing UART. And it isn't making I²C obsolete overnight. Each protocol serves a different purpose.

But for sensor-rich, power-sensitive, and bandwidth-demanding systems, I3C represents the natural evolution of I²C.

Understanding I3C today prepares firmware engineers for the next generation of embedded platforms, where intelligent sensors, AI accelerators, and high-performance peripherals increasingly expect more than traditional communication buses can provide.

Key Takeaways

  • I3C was created to solve the scaling limitations of I²C.

  • It retains backward compatibility with existing I²C devices.

  • Dynamic Address Assignment simplifies hardware design.

  • Push-pull signaling improves speed and power efficiency.

  • In-Band Interrupts reduce the need for dedicated GPIOs.

  • Common Command Codes standardize device management.

  • Driver architecture is more sophisticated than traditional I²C implementations.

  • I3C is becoming increasingly common in modern embedded and Edge AI platforms.


What's Next?

Part 5:

Interrupts in Embedded Systems: From Hardware Events to Firmware Execution

We'll move beyond communication protocols and explore one of the most fundamental concepts in embedded software:

  • What is an interrupt?

  • How does the CPU respond?

  • NVIC and interrupt prioritization

  • Latency and jitter

  • ISR design guidelines

  • Nested interrupts

  • Deferred interrupt processing

  • Common pitfalls and debugging techniques

Understanding interrupts is the foundation for writing responsive, efficient, and reliable firmware.