I3C Communication Protocol
The I3C communication protocol (pronounced eye-three-see) is a standard by the Sensor Working Group at the MIPI Alliance. The name is intended to indicate it’s similarity to I2C, with the bus having the same two-wire SCL and SDA wires and being backwards compatible with I2C (with some caveats).
MIPI membership (and $$$) is required to get the full I3C specification. However, there is a publicly available subset of the full specification called MIPI I3C Basic, which can be downloaded for free from the MIPI Alliance website.
History
The I3C standard was first released publicly by the MIPI Alliance in late 20171, named MIPI I3C v1.0. MIPI Alliance members had access to the standard before this release date. MIPI I3C Basic v1.0 was released in October 2018. MIPI I3C v1.1 was released in December 20192.
Comparison With I2C
The MIPI I3C Basic specification states that I3C has significant energy consumption and bus speed improvements over I2C:
The speed improvement over I2C is enabled mostly by the ability for I3C to switch from open-drain to push-pull drive in certain modes. I2C uses open-drain drive at all times, which limits the rise-time of the signal (the signal is pulled high by a “slow” resistor). I3C can switch from open-drain to push-pull once the initial bus arbitration has taken place, allowing much faster communication (up to rates comparable with SPI).
I3C does not need external pull-up resistors --- the pull-up resistors are provided by the I3C master(s).
Backwards Compatibility With I2C
I2C devices can be connected to an I3C bus and communicate with I2C and I3C nodes at I2C bit rates. The standard allows the bit rate to increase when an I3C node is communicating with another I3C node. While I2C slaves are supported on an I3C bus, I2C masters are not (the master on a I3C must be a I3C device).