# I3C
Source: [https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html](https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html)
The improved interintegrated circuit (I3C) interface has been developed to provide a
fast, low-cost, low-power, 2-wire digital interface for connected I3C target devices.
The I3C interface is intended to improve upon the features of the I2C interface,
preserving backward compatibility. The 2-wire serial interface supports up to 12.5 MHz.
Legacy I2C devices co-exist on the same bus. The I3C bus supports the in Band support
and hot join supported. Synchronous timing support and asynchronous time stamping.
During the write operation, the transition bit is of 8‑bit data parity. During read, the
controller uses the transition bit to either proceed with the next data or abort the
read. The address followed by the START condition is open-drain (Arbitration phase). The
address followed by a repeated START condition is push-pull. The data phase can be
either push-pull or open-drain, based on the I3C capability of the target device (for
mixed bus, the I3C controller can address the I2C target). The following figure
illustrates the I3C hardware and software entities.
Figure : I3C block diagram

The main features of the I3C architecture are as follows:
- I3C controller driver software – software-privileged entity, capable of
enumeration and bus configuration.
- I3C client software – software entities that use the I3C bus for read/write to
devices.
### I3C packet frame structure
A frame begins with START, command (8), data (8), transition (1), and STOP.


Where,
- ACK: Acknowledge (SDA low)
- S: Start condition
- Sr: Repeat start condition
- P: Stop condition
- T: Transition bit alternative to ACK/NACK
### I3C bus initialization
The I3C bus initialization procedure is as follows:
1. The I3C controller driver software initializes the I3C controller (firmware
and configuration settings).
2. The I3C controller driver software reads the I3C configuration and the
device database, including:
- List of I2C, static address devices.
- List of I3C, static address devices.
- List of expected I3C dynamic devices: vendor ID, device ID,
predefined dynamic address, and associated drivers.
- Optional hot-join allowed devices (vendor ID, device ID, and
predefined address).
3. Using the I3C controller software, the driver enumerates the devices on the
bus (set local addresses).
4. The I3C controller driver software writes an I3C controller with the
required devices and the bus characteristic information:
- Operation frequency
- Pure/legacy I2C mode
- SDR/HDR enable/disable (and types)
- IBI capable devices and expected data bytes
5. The I3C client software stack receives the following information about the
I3C configuration and device database.
- List of I2C, static address devices.
- List of I3C, static address devices.
- List of expected I3C dynamic devices: vendor ID, device ID,
predefined dynamic address, and associated drivers.
- Optional hot-join allowed devices (vendor ID, device ID, and
predefined address).
## I3C features
Source: [https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html](https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html)
The aDSP/SDC I3C subsystem supports the following features.
- Address phase at frequency 400 kHz.
- Data phase at frequency 12,500 kHz.
- Backward compatibility with legacy I2C.
- Dynamic addressing of targets.
- Single data rate (SDR) mode.
- CCC commands as per the MIPI I3C specification
## I3C interface
Source: [https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html](https://docs.qualcomm.com/doc/80-70014-8/topic/i3c.html)
I3C use cases in the aDSP/SLPI software support sensor target device communication.
Note: I3C does not support Linux use cases.
The software
driver and the configuration support for the I3C functionality for target communication
are listed in the following table.
Table : aDSP/SLPI/SDC target communication
| File type | Description |
| --- | --- |
| QUP v3 serial engine configuration | For QUP v3 serial engine configuration settings in the aDSP subsystem
to enable the I3C interface, see the following file paths.