Why replace SPI (Serial Peripheral Interface) with I3C?

SPI requires four wires and has many different implementations because there is no clearly defined standard. In addition SPI requires one additional chip select (or enable) wire for each additional device on the bus, which quickly becomes cost-prohibitive in terms of number of pins and wires, and power. I3C aims to fix that, as it uses only two wires and is well defined.

I3C covers most of the speed range of SPI, but is not intended for the highest speed grades that really only work well with a point-to-point interface, such as for SPI Flash.

What are CCCs (Common Command Codes) and why are they used?

The CCCs are the commands that an I3C Master uses to communicate to some or all of the Slaves on the I3C bus. The CCCs are sent to the I3C broadcast address (which is 7’h7E) so as not to interfere with normal messages sent to a Slave. The CCCs are used for standard operations like enabling/disabling events, managing I3C specific features and other bus operations. CCCs can be either broadcasted (sent to all the devices on the bus), or directed at specific devices on the bus.

How can Masters and Slaves communicate on the I3C bus?

The basic byte-based messaging schemes of I²C and SPI map easily onto I3C. Additionally, a set of common command codes (CCCs) has been defined for standard operations like enabling and disabling events, managing I3C specific features (dynamic addressing, timing control, etc.), and others. CCCs can be either broadcasted (sent to all devices on the bus), or directed at a specific device on the bus.

CCCs do not interfere with, and do not use up any of the message space of, normal Master-to -Slave communications. I3C provides a separate namespace for CCCs.

Is it possible to have multiple Masters on the same I3C bus?

Yes, I3C allows for multiple Masters on the same bus. I3C has one Main Master that initially configures the bus and act as an initial current Master. Optionally, the bus can have multiple Secondary Master devices that initially act as Slaves. Any Secondary Master device can request to become the current Master. Once the current Master agrees, and transfers the current Master control to a given Secondary Master device, then that device becomes the current Master.

What is the bitrate for I3C?

I3C has several modes, each with associated bitrate(s). The base raw bitrate is 77 12.5 Mbps, with 11 Mbps real data rate at 12.5 MHz clock frequency (this is the only mode supported in I3C v1.0 and I3C Basic v1.0). The maximum raw bitrate is 33.3 Mbps at 12.5 Mhz, with real data rate of 30 Mbps (this is achieved via HDR modes that are currently only available in I3C v1.0).

Most traffic will use the 10 to 11 Mbps rate, while large messages can use one of the higher data rate modes.

Is I3C backward compatible with I²C?

Yes, most I²C Slave devices can be operated on an I3C bus, as long as they have a 50 ns glitch filter and do not attempt to stall the clock. Such use will not degrade the speed of communications to I3C Slaves, requiring only decreased speed when communicating with the I²C Slaves.

I3C Slave devices with a Static Address can operate as I²C Slaves on an I²C bus; optionally, they can also have a 50 ns spike filter.