THIS APPLICATION NOTE
- Gives a brief orientation on the physical layer and packet structures of I3C with the goal of providing just enough detail to help with troubleshooting
- Explains how to set up decoding on an oscilloscope equipped with I3C decoding
- Explains how to interpret serial bus data on an oscilloscope equipped with I3C decoding
- Explains what searching options are available on an oscilloscope equipped with I3C decoding
With the optional serial analysis capability, Tektronix oscilloscopes become powerful tools for embedded system designers working with I3C buses. In this application note the 5 Series MSO is used to demonstrate I3C analysis. See Serial Support Using Oscilloscopes and Optional Software for a complete listing.
Introduction
MIPI I3C® is a two-wire interface with a bidirectional data bus for connecting sensors to an application processor. The standard was developed and is maintained by the MIPI Alliance. It is designed for mobiles applications, to:
- Standardize sensor communication
- Reduce the number of physical pins used in sensor system integration
- Support low power, low EMI operation
High-end smartphoness can have 10 or more sensors which can present some distinct challenges. For example, "always-on" features, such as a pedometer counting steps, can require constant monitoring of sensor functions even when a device is in idle mode. Both I2C and SPI have traditionally been used to support sensors, but neither bus has a method to notify the master of a change in state or to initiate a sensor data transfer. In I2C and SPI-based systems these notifications have usually been made using additional general-purpose input and output (GPIO) lines. The I3C interface reduces the need for external GPIO interrupt lines and replaces them with in-band interrupts. The result is a simpler and more flexible sensor system.
The I3C bus can support many sensor types: mechanical, motion, biometric, environmental, and more. Thanks to its design and support from the mobiles device industry, I3C is being adopted in sensor applications by many semiconductor and IP providers.
I3C Technology Overview
The MIPI I3C interface uses an I2C-like interface with an open drain data line (SDA) and a push-pull clock line (SCL). The open drain SDA line allows for slaves to take control of the data bus and initiate interrupts. The push-pull SCL line is used by the master to clock the communication bus up to 12.5 MHz.
MIPI I3C supports multiple classes of devices including main master, secondary master, MIPI I3C slave, and I2C slave. The master can dynamically assign 7-bit addresses to all MIPI I3C devices while supporting the static addresses of legacy I2C devices. This ensures full compatibility between I3C and I2C.
The I3C bus works with push-pull modes (in addition to an open drain mode with pull-up resistor disabled) to achieve a higher data rate.
I3C offers four data transfer modes to support multiple data rates:
- SDR (Single Data Rate) an I²C-like single data rate (SDR) messaging mode running up to 12.5 Mbps
- HDR DDR (Double Data Rate) at 25 Mbps
- HDR TSP (Ternary Symbol rate Pure) and TSL (Ternary Symbol rate Legacy) where data is sent on a combination of the clock and data achieving 1.5 bits per symbol (27.5 Mbps, and 39.5 Mbps)
I3C introduces a series of standard protocol commands (Common Command Codes) and standard responses to enable:
- Dynamically assigning addresses to slaves
- Reading register details to understand the slave's capabilities
- Adding the ability for a slave to interrupt traffic on the bus
- Speed negotiation from the basic rate to higher rates
Here are a few examples of broadcast CCCs:
Enter Dynamic Address Assignment (ENTDAA): indicates to all I3C Devices that the Master requires them to enter the Dynamic Address Assignment.
Reset Dynamic Address Assignment (RSTDAA): indicates to all I3C Devices that the Master requires them to clear/reset their Master-assigned Dynamic Address. If the I3C Device supports the Group Address feature, then receipt of an RSTDAA CCC shall also reset (clear) all its assigned Group Addresses.
Enter Test Mode (ENTTM): informs all I3C Devices that the Master is entering a specified Test Mode during manufacturing or Device test. The Enter Test Mode command frame format includes a byte that specifies which Test Mode to enter.
How to Set Up Bus Decoding
On Tektronix oscilloscopes, pressing the front panel Bus button enables you to define inputs to the scope as a bus. By simply defining which channels clock and data are on, along with the digital threshold levels used to determine logic ones and zeroes, you enable the oscilloscope to understand the protocol being transmitted across the bus. For I3C it’s important to set the SCL and SDA threshold levels to get the correct logic states.
Interpreting the I3C Bus
The time-correlated waveform and bus decode display is a familiar and useful format for most engineers. The decoded bus waveform indicates the elements of an I3C message. The oscilloscope acts as a protocol analyzer, displaying both bus/ waveforms and logic states/waveforms for the corresponding I3C bus.
The figure below shows a typical I3C frame decoded on the oscilloscope. The lower image is zoomed in for a bit more detail. This shows a Direct Common Command Code (CCC) frame. It begins with a Start, followed by the Broadcast Address 7Eh and a write indication. The command code follows, terminated with a T-bit. A repeated Start ends the CCC. The targeted slave device is addressed, data is transferred, and Stop is sent.
For relating activity to firmware, the Results Table format is a useful addition. This time-stamped display of bus activity can be easily compared to software listings and allows easy calculation of the execution speed. The Results Table also provides linkage back to the waveform displays. You can tap a line in the tabular display and the oscilloscope automatically zooms in on the corresponding bus signals and resulting decoded bus waveform, shown in the lower section of the screen.
Searching the I3C Bus
On a Tektronix oscilloscope you can use the automated search to find all the bus events that meet a specified set of search criteria and determine how many of them occurred.
In this example, the search condition is set to look for every SDR direct message of "Enable Slave".
In this second example, the search condition is set to look for every read or write to or from address 0x3F.
Here is the list of search options that can help you pinpoint specific activity and show the corresponding timing waveforms.
The search setup specifies bus events of interest and allows the oscilloscope to find and mark all the specified bus events. In this example, the automatic search is looking for two different types of events.
The result badges on the righthand side of the display show the number of captured searches with their color-coded markers and number of events. The results table at the top of the display shows the entire decoded message in tabular form, along with a precise start and stop timestamp.
In the example above, two searches were configured. The pink triangles indicate the results of a search for a CAA broadcast address of 0x7E. A single event matching this condition was found. The blue search condition occurred three times and the locationss within the acquisition can be seen in the center of the display.
Conclusion
This application note offers a brief overview of the physical layer and packet structures of I3C. It covered how to set up decoding on an oscilloscope equipped with I3C decoding and how to interpret serial bus data on an oscilloscope equipped with I3C decoding. It also explained searching options. With the optional serial bus analysis capability, Tektronix oscilloscopes become powerful tools for embedded system designers working with I3C buses. The 5 Series MSO was used to demonstrate I3C serial bus decoding and search in this applcation note. Other Tektronix oscilloscopes also support I3C analysis. See Serial Support Using Oscilloscopes and Optional Software for a complete listing.