From I2C to I3C

The MIPI Alliance Inc. industry consortium has just released the specification for the Improved Inter-Integrated Circuit – or I3C – a sensor interface specification. The I3C is supersets the I2C specification. I3C is aimed to streamline sensor integration in smartphones, wearables, Internet of Things (IoT) devices and automotive systems. I2C has been the most widely used for sensors because its multidrop capabilities can support multiple sensors and its low-complexity and low-speed attributes help keep costs down. Yet I2C is not practical for quickly sending large amounts of batched data, which is necessary for many sensor applications (so somewhat more complicated and faster Serial Peripheral Interface (SPI for) was needed for some application).

The new MIPI I3C specification incorporates and unifies attributes of I2C with a comprehensive, low pin count and scalable interface and architecture. I3C incorporates key attributes of the traditional I2C and SPI interfaces to provide a new, unified, high-performing, very low power solution. Today high-end smartphones incorporate 10 or more sensors, with more than 20 signals, so a good fast interface is needed to connect them all easily.

The I3C standard specifies a single two-wire serial bus for MIPI a chip-to-chip interface that can connect all sensors in a device to the application processor. A key objective of the MIPI I3C specification is to build on the I2C ecosystem and capabilities while preserving the two-wire serial interface.  I3C llow seamless transition from I2C to I3C, because the MIPI I3C specification is backward compatible with I2C, allowing I2C slave devices to exist on the same interface as devices using the I3C specification. I3C can use clock rates up to 12.5MHz (10 Mbps with options for higher performance high data rate modes), which means that it provides more than an order of magnitude the bandwidth compared to traditional I2C (typically bus speed is 100 kbit/s or 400 kbit/s, but has fast modes 1 Mbit/s and 3.3 Mbit/s). The electrical interface is implemented with standard CMOS I/O.

I3C allows in-band prioritized interrupts within the 2-wire interface, eliminating the need for a dedicated interrupt pin. I3C offers multi-master support and uses dynamic addressing and standardized commands to control the bus. It also offers advanced power management capabilities. MIPI I3C works equally well with standalone sensor/context hubs and with integrated hubs in the application processor. MIPI I3C is always more efficient than I2C.

Sources and more information:

Consortium Releases Sensor Interface Spec

MIPI I3C℠ Sensor Specification

Complimentary Whitepaper:  Introduction to the MIPI I3C Standardized Sensor Interface

I3C specification updates I2C for sensor subsystems

MIPI Creates the I3C Sensor Interface

MIPI I3C Provides a Unified, High-Performing Interface for Sensors

I3C℠ Sensor Specification

 

23 Comments

  1. Tomi Engdahl says:

    Taking the Leap Off Board: An Introduction to I2C Over Long Wires
    http://hackaday.com/2017/02/08/taking-the-leap-off-board-an-introduction-to-i2c-over-long-wires/

    If you’re reading these pages, odds are good that you’ve worked with I²C devices before. You might even be the proud owner of a couple dozen sensors pre-loaded on breakout boards, ready for breadboarding with their pins exposed. With vendors like Sparkfun and Adafruit popping I²C devices onto cute breakout boards, it’s tempting to finish off a project with the same hookup wires we started it with.

    I thought I’d take this week to break down that misconception of running I²C over cables, and then give a couple examples on “how to do it right.”

    Reply
  2. Tomi Engdahl says:

    An Introduction to Differential I²C
    http://hackaday.com/2017/03/31/an-introduction-to-differential-i%c2%b2c/

    A few weeks back, we talked about the no-nos of running I²C over long wires. For prototyping? Yes! But for a bulletproof production environment, this practice just won’t make the cut. This month I plucked my favorite solution from the bunch and gave it a spin. Specifically, I have put together a differential I²C (DI²C) setup with the PCA9615 to talk to a string of Bosch IMUs. Behold: an IMU Noodle is born!

    There’s a host of ways to make I²C’s communication lines more noise resistant. From all of the choices we covered, I picked differential signals. They’re simple, fairly standardized, and just too elegant to ignore.

    Getting Cozy with DI²C

    In a nutshell, DI²C isn’t too complicated. We’re all pretty familiar with conventional I²C’s SDA and SCL signals. The PCA9615 simply splits each signal into two differential pairs for a grand total of four communication wires. Any chip that wants to jump onto the DI²C bus first needs to convert it’s SDA and SCL lines into the corresponding Plus and Minus differential pair signals: DSDAP, DSDAM, and DSCLP, DSCLM. After that, communication can begin as normal with no software changes.

    One last hiccup: the start and finish of the actual cable that carries the DI²C signal needs to be populated with termination resistors. These resistors are specced to match the characteristic differential impedance of the cable itself.

    The PCA9615 has a few options for setting up a DI²C bus

    Reply
  3. Tomi Engdahl says:

    Enginursday: I2Considerations
    https://www.sparkfun.com/news/2366

    In this Enginursday, we’ll explore some of the problems that can creep up when connecting I2C devices

    Reply
  4. Tomi Engdahl says:

    The Week In Review: Design
    https://semiengineering.com/the-week-in-review-design-109/

    The MIPI Alliance opened access to the MIPI I3C sensor interface specification to all companies. New specifications that implement I3C are planned for 2018, including MIPI I3C Host Controller Interface, MIPI Touch, MIPI Debug for I3C, MIPI DisCo for I3C and MIPI CSI-2.1.

    MIPI Alliance Opens Access to its MIPI I3C Sensor Interface Specification
    https://mipi.org/MIPI-opens-access-to-MIPI-I3C-specification

    Broader access enables more design innovations for smartphones, wearables, IoT devices, AR/VR and automotive

    PISCATAWAY, N.J., December 12, 2017 – The MIPI® Alliance, an international organization that develops interface specifications for mobile and mobile-influenced industries, today announced it is opening access to its sensor interface specification, MIPI I3C.

    Starting today, all companies, including those not currently members of MIPI Alliance, may access the MIPI I3C v1.0 specification so they may evaluate the incorporation of the specification into their sensor integration plans and design applications.

    “MIPI I3C provides a welcome update to the I2C technology that has been widely adopted over the past 35 years.

    Reply
  5. Tomi Engdahl says:

    Sensor Interface Expands Beyond Mobile
    https://www.eetimes.com/author.asp?section_id=36&doc_id=1333184

    A board member from the MIPI Alliance shares the group’s efforts to expand adoption of its I3C sensor interface.

    The MIPI Alliance recently opened access to the MIPI I3C interface specification to encourage its adoption beyond the traditional mobile applications where it is already used by leading SoC and sensor vendors. The Alliance also invites other electronics standards groups to consider adopting the specification.

    The interface, released more than a year ago, has transformed sensor integration for smartphones and other mobile applications that require low-power, low-cost and highly efficient system design. It features technological advances while maintaining backwards compatibility to I2C.

    Leading companies that supply application processors for smartphones are using MIPI I3C, motivating sensor companies to also create their own implementations. So far, the sensors most commonly interconnected with MIPI I3C in smartphones include ambient light and proximity sensors, gyroscopes, accelerometers and magnetometers, but other sensor classifications and functions are applicable.

    I3C’s management features eliminate the need for sideband signals which saves pins to allow incorporation of more sensors and features in a design. The spec is flexible, enabling a single I3C bus to interface a variety of sensors and data speeds at the same time. It can be applied in a variety of topologies and roles, such as single-master and multi-master configurations.

    Reply
  6. Tomi Engdahl says:

    The Week In Review: Design
    https://semiengineering.com/the-week-in-review-design-129/

    The MIPI Alliance released MIPI Touch, a family of publicly available specifications for the design and implementation of touch applications, such as in smartphones. The effort ties together several MIPI specifications for touch, sensor, and software integration: MIPI Touch Command Set (MIPI TCS) for writing device drivers across operating systems; MIPI Touch Adaptation Layer for I3C (MIPI ALI3C) to translate touch commands for use on the MIPI I3C protocol; MIPI I3C Host Controller Interface (MIPI I3C HCI), which enables touch commands and multiple data streams for advanced systems; and MIPI I3C v1.0, which connects an application processor to a touch sensor.

    MIPI Alliance Introduces Set of Touch Specifications to Standardize Touch Integration in Mobile Designs
    https://www.mipi.org/MIPI-Alliance-Introduces-Set-of-Touch-Specifications

    Reply
  7. Tomi Engdahl says:

    MIPI I3C Basic V1.0, a subset of MIPI I3C, bundles the most commonly needed features of I3C for developers and standards organizations. MIPI I3C Basic V1.0, a subset of the MIPI Alliance’s MIPI I3C interface specification, bundles the most commonly used features of I3C

    MIPI Alliance Crafts Basic I3C Specification
    https://www.eeweb.com/profile/eeweb/news/mipi-alliance-crafts-basic-i3c-specification

    MIPI I3C Basic V1.0, a subset of MIPI I3C, bundles the most commonly needed features of I3C for developers and standards organizations.

    MIPI I3C Basic V1.0, a subset of the MIPI Alliance’s MIPI I3C interface specification, bundles the most commonly used features of I3C for developers and standards organizations. Released under royalty-free terms, MIPI I3C Basic provides a streamlined upgrade path from I2C, the de facto standard for connecting processors, sensors, and other devices in mobile, IoT, and automotive system designs.

    In addition to backward compatibility with I2C, MIPI I3C Basic V1.0 offers 20 key features from MIPI I3C, including a multidrop bus that, at 12.5 MHz, is over 12 times faster than I2C with lower power consumption. In-band interrupts allow slaves to notify masters of interrupts, a design that eliminates the need for separate GPIO for each slave, while dynamic address assignment avoids conflicting static addresses.

    Reply
  8. Tomi Engdahl says:

    Using I2C Communication Protocol to Connect 6 Arduino Megas © GPL3+
    If you’ve ever wanted to connect devices with just 3 pins, this is the perfect project for you!
    https://create.arduino.cc/projecthub/sherwinchiu89/using-i2c-communication-protocol-to-connect-6-arduino-megas-ac5e1e

    Reply
  9. Tomi Engdahl says:

    The Mobile Industry Processor Interface (MIPI) Alliance has announced the first major update to its I3C standard, designed to replace I2C, bringing it to v1.1 and adding the ability to use additional bus lanes to bring its interface speed to near 100MHz.

    MIPI Alliance Launches I3C v1.1, Bringing the Interface Speed Close to 100MHz
    https://www.hackster.io/news/mipi-alliance-launches-i3c-v1-1-bringing-the-interface-speed-close-to-100mhz-452f184f55c8

    Available now to members, I3C v1.1 ups the maximum speed close to 100MHz while adding new features for novel applications.

    Reply
  10. Tomi Engdahl says:

    Arasan Chip Systems released MIPI I3C Host Controller Interface (I3C HCI) Host IP and I3C Device IP compliant to the MIPI I3C HCI Specification Ver 1.1. Arasan also provides a Linux software stack compatible with its I3C HCI Host IP and I3C HDK.
    https://www.arasan.com/news/arasan-i3c-hci-v1-1-press-release/

    Reply
  11. Tomi Engdahl says:

    The Connector Zoo: I2C Ecosystems
    https://hackaday.com/2022/05/04/the-connector-zoo-i2c-ecosystems/

    I2C is a wonderful interface. With four wires and only two GPIOs, you can connect a whole lot of sensors and devices – in parallel, at that! You will see I2C used basically everywhere, in every phone, laptop, desktop, and any device with more than a few ICs inside of it – and most microcontrollers have I2C support baked into their hardware. As a result, there’s a myriad of interesting and useful devices you can use I2C with. Occasionally, maker-facing companies create plug-and-play interfaces for the I2C device breakouts they produce, with standardized pinouts and connectors.

    Following a standard pinout is way better than inventing your own, and your experience with inconsistent pin header pinouts on generic I2C modules from China will surely reflect that. Wouldn’t it be wonderful if you could just plug a single I2C-carrying connector into an MPU9050, MLX90614 or HMC5883L breakout you bought for a few dollars, as opposed to the usual hurdle of looking at the module’s silkscreen, soldering pin headers onto it and carefully arranging female headers onto the correct pins?

    Reply
  12. Tomi Engdahl says:

    The Most Frequently Asked MIPI I3C Questions—Answered
    May 25, 2022
    In September 2021, the MIPI Alliance updated versions of the full MIPI I3C and I3C Basic specifications. Tim McKee, chair of the MIPI I3C Working Group, takes on some of the questions that often get asked about the specification.
    https://www.electronicdesign.com/technologies/embedded-revolution/article/21237498/mipi-alliance-the-most-frequently-asked-mipi-i3c-questionsanswered?utm_source=EG+ED+Connected+Solutions&utm_medium=email&utm_campaign=CPS220606004&o_eid=7211D2691390C9R&rdx.ident%5Bpull%5D=omeda%7C7211D2691390C9R&oly_enc_id=7211D2691390C9R

    Reply
  13. Tomi Engdahl says:

    I3C — No Typo — Wants To Be Your Serial Bus
    https://hackaday.com/2022/08/25/i3c-no-typo-wants-to-be-your-serial-bus/

    Remember old hard drives with their giant ribbon cables? They went serial and now the power cables are way thicker than the data cables. We’ve seen the same thing in embedded devices. Talking between chips these days tends to use I2C or SPI or some variation of these to send and receive data over a handful of pins. But now there is I3C, a relatively new industry standard that is getting a bit of traction.

    I2C and SPI are mature but they do have problems. I2C can be relatively slow and SPI usually requires extra pins for each device. Besides that, there is poor support for adding and removing devices dynamically or discovering devices automatically.

    I3C, created by the MIPI Alliance, aims to fix these problems. It does use the usual two wires, SCL for the clock and SDA for data. One device acts as a controller. Other devices can be targets or secondary controllers. It is also backward compatible with I2C target devices. Depending on how you implement it, speeds can be quite fast with a raw speed of 12.5 Mbps and using line coding techniques can go to around 33 Mbps.

    Reply
  14. Tomi Engdahl says:

    Using I²C Sensors With Any Linux Via USB And IIO
    https://hackaday.com/2022/12/01/using-i%c2%b2c-sensors-with-any-linux-via-usb-and-iio/

    Hooking up I2C sensors is something which is generally associated with microcontrollers and SBCs, yet it’s very easy to use such I2C sensors from basically any system that runs Linux. After all, I2C (that is, SMBus) is one of the interfaces that is highly likely to be used on your PC’s mainboard as well as peripherals. This means that running our own devices like the well-known BME280 temperature, pressure and humidity sensor, or Si1145 light sensor should be a piece of cake.

    In a blog post from a few years ago, [Peter Molnar] explains in detail how to wire up a physical adapter to add a USB-connected I2C interface to a system. At its core is the ATtiny85 AVR-based MCU, which provides a built-in USB interface, running the I2C-Tiny-USB firmware.

    Using I²C sensors on a linux via a USB and IIO
    A short story of getting a tiny, cheap USB I²C adapter for a home server, learning about the Industrial I/O linux subsystem, and connecting it to collectd.
    https://petermolnar.net/article/linux-i2c-iio-collectd/

    https://github.com/harbaum/I2C-Tiny-USB/tree/master/digispark

    Reply

Leave a Comment

Your email address will not be published. Required fields are marked *

*

*