Embedded Sharing #31: 10 Times Faster than I2C! Have You Used I3C on RK3576?

Cover Image

Embedded Sharing #31: 10 Times Faster than I2C! Have You Used I3C on RK3576?

During the pandemic, due to a significant reduction in vehicles, the polluted air in Kathmandu, Nepal, began to clear, allowing views of Mount Everest.

Main Content

Recently, it was discovered that the RK3576 actually has an I3C interface. While we are still figuring out I2C, I3C has already emerged, so let’s quickly take a look at what I3C is.

Table of Contents:

1. What is I3C;

2. Key Features of I3C;

3. I3C on RK3576;

4. Can I3C Completely Replace I2C?

1. What is I3C?

I3C stands for Improved Inter-Integrated Circuit, which is an enhanced version of I2C. It was introduced by the MIPI (Mobile Industry Processor Interface) Alliance to address the limitations of the traditional I2C bus by integrating the advantages of both I2C and SPI, in order to meet the demands of modern IoT devices and embedded systems for higher performance, more flexible device management, and more efficient power management.

2. Key Features of I3C

Here are the key highlights of I3C as provided in the official documentation:

Embedded Sharing #31: 10 Times Faster than I2C! Have You Used I3C on RK3576?

Translated, they are:

  • Combines the beauty of both I2C and SPI;

  • Reduces signal pins: In-band interrupts, no extra interrupt pins needed for slave devices;

  • High performance: Maximum transmission rate can reach 12.5Mbps, far exceeding I2C’s 400kbps or 3.4Mbps (high-speed mode);

  • Low power consumption: Features advanced low-power modes, with current in sleep mode only at the μA level;

  • Low electromagnetic interference: Differential transmission, push-pull output, and low operating voltage are key characteristics;

  • Backward compatible with I2C: But not compatible with 10-bit I2C extended addresses.

The current latest version of MIPI I3C is v1.2.Embedded Sharing #31: 10 Times Faster than I2C! Have You Used I3C on RK3576?

3. I3C on RK3576

The RK3576 chip has 2 I3C controllers, supporting the following features:

  • Supports I3C bus master mode, with pure I3C device transmission rates up to 12.5Mbit/s;
  • Compatible with I2C bus master mode, with pure I2C device transmission rates up to 400K bit/s;
  • Supports 7-bit and 10-bit addressing modes.

Hardware Circuit Design:

When operating in I3C compatible I2C mode, 3 pins are required: I3C_SCL, I3C_SDA, and I3C_SDA_PU, where I3C_SDA is connected to I3C_SDA_PU via a pull-up resistor, and I3C_SCL is connected to the pull-up power supply via a pull-up resistor. The pull-up power supply must be consistent with the GPIO power domain supply.

When only operating in I2C mode, only 2 pins are needed: I3C_SCL and I3C_SDA, with the hardware wiring method being the same as I2C.

Embedded Sharing #31: 10 Times Faster than I2C! Have You Used I3C on RK3576?

DTS Configuration

        i3c0: i3c-master@2abe0000 {                compatible = "rockchip,i3c-master";                reg = <0x0 0x2abe0000 0x0 0x1000>;                interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;                #address-cells = <3>;                #size-cells = <0>;                clocks = <&cru HCLK_I3C0>, <&cru CLK_I3C0>;                clock-names = "hclk", "i3c";                dmas = <&dmac0 22>, <&dmac0 23>;                dma-names = "rx", "tx";                resets = <&cru SRST_I3C0>, <&cru SRST_H_I3C0>;                reset-names = "i3c", "ahb";                pinctrl-names = "default";                pinctrl-0 = <&i3c0m0_xfer &&i3c0_sdam0_pu>;                status = "okay";        };
&&pinctrl {        i3c0 {                /omit-if-no-ref/                i3c0m0_xfer: i3c0m0-xfer {                        rockchip,pins =                                /* i3c0_scl_m0 */                                <0 RK_PC1 11 &&pcfg_pull_none_smt>,                                /* i3c0_sda_m0 */                                <0 RK_PC2 11 &&pcfg_pull_none_smt>;                };                /omit-if-no-ref/                i3c0m1_xfer: i3c0m1-xfer {                        rockchip,pins =                                /* i3c0_scl_m1 */                                <1 RK_PD2 10 &&pcfg_pull_none_smt>,                                /* i3c0_sda_m1 */                                <1 RK_PD3 10 &&pcfg_pull_none_smt>;                };        };};

4. Can I3C Completely Replace I2C?

Finally, there is a question: Can I3C completely replace I2C? The answer is no, at least not in the short term. The reasons are as follows:

(1)Cost. The extremely low cost of I2C devices is hard to surpass, and the circuit design is very simple;

(2)Ecology.I2C has a history of over 40 years, accumulatinga vast, mature, reliable, and low-cost I2C peripheral chips (sensors, EEPROMs, IO expanders, ADC/DAC, RTCs, etc.). Almost all microcontrollers (MCUs) have built-in I2C controllers. It is one of the most basic and widely used low-speed peripheral interfaces.

(3)Compatibility.A key design goal of I3C isbackward compatibility with standard mode I2C slave devices (Legacy I3C Slave). This means that both I2C devices and older I2C devices can be connected to an I3C bus simultaneously. This is an important strategy and advantage for I3C to replace I2C. Due to this backward compatibility,the mixed use of I3C and I2C devices is the norm, not the exception. System designers do not need to replace all I2C devices with I3C versions immediately; they can transition gradually. Completely replacing all existing I2C devices is neither economical nor practical.

Conclusion: The future trend is complementary coexistence, rather than complete replacement.

(End)

Welcome to follow “Embedded Sharing“, for continuous updates!☞

Leave a Comment