Mipi I3C Basic Specification v1 1 1
Mipi I3C Basic Specification v1 1 1
1
11-Mar-2022
Errata 01 for
MIPI I3C Basic Specification
(Improved Inter Integrated Circuit)
Specification Version 1.1.1
Specification Dated 9 June 2021
Specification MIPI Board Adopted 23 July 2021
Spec PDF
Item Page Page Correction
Number Number
1 6 34 Editorial or Technical: Editorial
Location: Section 1.3 I3C Key Features, line 154
Correction: Replace unit “Ms” with “ms”
Reason: To correct a typo.
Technical Impact: None
2 6 34 Editorial or Technical: Editorial
Location: Section 1.3 I3C Key Features, line 155 & line 161
Correction: Replace unit “mJ” (milli-Joules) with “µJ” (micro-Joules)
Reason: To correct a technical authoring error.
Technical Impact: None
3 41 69 Editorial or Technical: Editorial
Location: Section 5.1.2.1.1 Role of I3C Target Acting as an I2C Target with
Static Address, lines 897 and 901
Corrections:
Change:
Line 897: “…with Open Drain timing parameters (per Table
86)…”
Line 901: “…with Open Drain timing parameters, …”
To:
Line 897: “…with FM/FM+ timing parameters (per Table 85)…”
Line 901: “…with FM/FM+ timing parameters, …”
Reason: Error during drafting. The existing text only referred to Open Drain
timing parameters, but a properly defined Spike Filter would filter
out the START followed by 7’h7E if it were sent too quickly by the
Controller. To ensure that it is not filtered out, the Controller must
send the START followed by 7’h7E using valid FM/FM+ timing
parameters, so that this might be seen with the Spike Filter
enabled.
Technical Impact: None
4 50 78 Editorial or Technical: Editorial
Location: Section 5.1.2.2.5 I3C Target Address Restrictions, Table 8,
column Binary
Corrections:
Row 7’h06: Change: “000 0011” To: “000 0110”
Row 7’h07: Change: “000 0011” To: “000 0111”
Reason: To correct two typos. The Hex values are correct, but the Binary
values are not.
Technical Impact: None
P
Target or DCR Type BCR Type Static
Group of Target of Target Address Target Addr
Address or Group or Group / 1'b0 / RnW / ACK
/ 1'b0 Sr
/T /T /T
/T 7’h7E
Next CCC
/ W / ACK
Version 1.1.1
9 June 2021
MIPI Board Adopted 23 July 2021
Public Release Edition
Further technical changes to this document are expected as work continues in the I3C Ad Hoc Working Group.
NOTICE OF DISCLAIMER
The material contained herein is provided on an “AS IS” basis. To the maximum extent permitted by
applicable law, this material is provided AS IS AND WITH ALL FAULTS, and the authors and developers
of this material and MIPI Alliance Inc. (“MIPI”) hereby disclaim all other warranties and conditions, either
express, implied or statutory, including, but not limited to, any (if any) implied warranties, duties or
conditions of merchantability, of fitness for a particular purpose, of accuracy or completeness of responses,
of results, of workmanlike effort, of lack of viruses, and of lack of negligence. ALSO, THERE IS NO
WARRANTY OR CONDITION OF TITLE, QUIET ENJOYMENT, QUIET POSSESSION,
CORRESPONDENCE TO DESCRIPTION OR NON-INFRINGEMENT WITH REGARD TO THIS
MATERIAL.
IN NO EVENT WILL ANY AUTHOR OR DEVELOPER OF THIS MATERIAL OR MIPI BE LIABLE
TO ANY OTHER PARTY FOR THE COST OF PROCURING SUBSTITUTE GOODS OR SERVICES,
LOST PROFITS, LOSS OF USE, LOSS OF DATA, OR ANY INCIDENTAL, CONSEQUENTIAL,
DIRECT, INDIRECT, OR SPECIAL DAMAGES WHETHER UNDER CONTRACT, TORT,
WARRANTY, OR OTHERWISE, ARISING IN ANY WAY OUT OF THIS OR ANY OTHER
AGREEMENT RELATING TO THIS MATERIAL, WHETHER OR NOT SUCH PARTY HAD
ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.
The material contained herein is not a license, either expressly or impliedly, to any IPR owned or controlled
by any of the authors or developers of this material or MIPI. Any license to use this material is granted
separately from this document. This material is protected by copyright laws, and may not be reproduced,
republished, distributed, transmitted, displayed, broadcast or otherwise exploited in any manner without the
express prior written permission of MIPI Alliance. MIPI, MIPI Alliance and the dotted rainbow arch and all
related trademarks, service marks, tradenames, and other intellectual property are the exclusive property of
MIPI Alliance Inc. and cannot be used without its express prior written permission. The use or
implementation of this material may involve or require the use of intellectual property rights (“IPR”)
including (but not limited to) patents, patent applications, or copyrights owned by one or more parties,
whether or not members of MIPI. MIPI does not make any search or investigation for IPR, nor does MIPI
require or request the disclosure of any IPR or claims of IPR as respects the contents of this material or
otherwise.
Without limiting the generality of the disclaimers stated above, users of this material are further notified
that MIPI: (a) does not evaluate, test or verify the accuracy, soundness or credibility of the contents of this
material; (b) does not monitor or enforce compliance with the contents of this material; and (c) does not
certify, test, or in any manner investigate products or services or any claims of compliance with MIPI
specifications or related material.
Questions pertaining to this material, or the terms or conditions of its provision, should be addressed to:
MIPI Alliance, Inc.
c/o IEEE-ISTO
445 Hoes Lane, Piscataway New Jersey 08854, United States
Attn: Managing Director
Contents
Figures .....................................................................................................................................ix
Tables ...................................................................................................................................xiv
Release History............................................................................................................................ xvii
Preface to the I3C Basic Specification ............................................................................................. 1
1 What is MIPI I3C Basic? ....................................................................................................................... 1
2 Motivation ....................................................................................................................................... 1
3 IPR Status ....................................................................................................................................... 1
4 Relationship to MIPI I3C v1.x Specifications ....................................................................................... 2
4.1 I3C v1.1.1 Functions Not Included in I3C Basic....................................................................... 2
4.2 Organization of This Specification ............................................................................................ 2
4.3 I3C Basic v1.1.1 as an Update of I3C Basic v1.0...................................................................... 2
5 How I3C Basic Devices Work with I3C v1.x Devices .......................................................................... 2
1 Introduction ................................................................................................................................ 3
1.1 Scope ....................................................................................................................................... 4
1.2 I3C Purpose ..................................................................................................................................... 4
1.3 I3C Key Features ............................................................................................................................. 4
2 Terminology ............................................................................................................................... 8
2.1 Use of Special Terms ....................................................................................................................... 8
2.2 Definitions ....................................................................................................................................... 8
2.3 Abbreviations ................................................................................................................................ 13
2.4 Acronyms ..................................................................................................................................... 14
3 References ................................................................................................................................ 15
3.1 Normative References ................................................................................................................... 15
3.2 Informative References ................................................................................................................. 15
4 Technical Overview (Informative) ........................................................................................... 17
4.1 I3C Fundamental Principles .......................................................................................................... 18
4.2 I3C Controller and Target Devices ................................................................................................ 21
4.2.1 I3C Controller Device ....................................................................................................... 22
4.2.1.1 I3C Controller Device Roles.............................................................................23
4.2.2 I3C Target Device ............................................................................................................. 24
4.2.2.1 I3C Target Device Roles ...................................................................................25
5 I3C Protocol ............................................................................................................................. 27
5.1 Single Data Rate (SDR) Mode ...................................................................................................... 29
5.1.1 Bus Configuration ............................................................................................................. 30
5.1.1.1 I3C Device Characteristics ...............................................................................31
5.1.1.2 I3C Characteristics Registers ............................................................................34
5.1.1.2.1 Bus Characteristics Register (BCR) ..............................................35
5.1.1.2.2 Device Characteristics Register (DCR) .........................................36
5.1.1.2.3 Legacy Virtual Register (LVR) .....................................................36
5.1.2 Bus Communication ......................................................................................................... 37
5.1.2.1 Role of I3C Target ............................................................................................39
5.1.2.1.1 Role of I3C Target Acting as an I2C Target with Static Address ...41
5.1.2.1.2 Composite Devices and Virtual Targets ........................................42
5.1.2.1.3 Targets Supporting Group Addresses ............................................43
Figures
Figure 1 I3C System Diagram ......................................................................................................................... 3
Figure 2 I3C vs. I2C FM+ Data Blocks Bit Rates in Mbps (12.5 MHz Clock) ............................................... 5
Figure 3 I3C vs. I2C FM+ 1 kB Effective Data Transfer Times in Ms ............................................................ 6
Figure 4 I3C vs. I2C FM+ Energy per 1 kB Effective Data Block, in mJ ....................................................... 6
Figure 5 I3C Multi-Lane Effective Bit Rates, in Mbps ................................................................................... 7
Figure 6 Example of Data Traffic on the I3C Bus ......................................................................................... 18
Figure 7 I3C Communication Flow ............................................................................................................... 19
Figure 8 I3C Controller Device Block Diagram............................................................................................ 22
Figure 9 I3C Target Device Block Diagram .................................................................................................. 25
Figure 10 I3C Bus with I2C Devices and I3C Devices .................................................................................. 30
Figure 11 I3C Minimal Bus with I3C Target Devices ................................................................................... 31
Figure 12 Address Header Comparison ......................................................................................................... 38
Figure 13 Address Arbitration During Header............................................................................................... 47
Figure 14 Transition from Address ACK to Mandatory Byte During IBI ..................................................... 53
Figure 15 Transition from IBI Address NACK to Repeated START or STOP .............................................. 54
Figure 16 Controller Clock Stalling in ACK Phase ....................................................................................... 60
Figure 17 Controller Clock Stalling in Write Parity Bit ................................................................................ 60
Figure 18 Controller Clock Stalling in T-Bit Before Next Read Data ........................................................... 61
Figure 19 Controller Clock Stalling in T-Bit Before STOP ........................................................................... 61
Figure 20 Controller Clock Stalling in Low T-Bit Before Repeated START ................................................ 62
Figure 21 Controller Clock Stalling in High T-Bit Before Repeated START ................................................ 62
Figure 22 Controller Clock Stalling in High T-Bit Before Repeated START and STOP .............................. 63
Figure 23 Controller Clock Stalling in Dynamic Address First Bit ............................................................... 63
Figure 24 Bus Condition Timing ................................................................................................................... 65
Figure 25 Dynamic Address Assignment Transaction ................................................................................... 71
Figure 26 IBI Sequence with Mandatory Data Byte...................................................................................... 83
Figure 27 Pre-Handoff Steps Flow ................................................................................................................ 90
Figure 28 Graphical Representation of Async Mode 0 Timestamp Interpolation ....................................... 104
Figure 29 Example of Asynchronous Mode 0 Timestamp Data Transfer .................................................... 106
Figure 30 CCC Broadcast General Frame Format....................................................................................... 111
Figure 31 CCC Direct General Frame Format............................................................................................. 111
Figure 32 ENEC/DISEC Format 1: Direct .................................................................................................. 125
Figure 33 ENEC/DISEC Format 2: Broadcast ............................................................................................ 125
Figure 34 ENTASx Format 1: Direct........................................................................................................... 127
Figure 35 ENTASx Format 2: Broadcast ..................................................................................................... 128
Figure 36 RSTDAA Format ........................................................................................................................ 129
Figure 37 ENTDAA Format ........................................................................................................................ 129
Figure 38 Direct SETMWL/GETMWL Format .......................................................................................... 130
Figure 39 Broadcast SETMWL Format....................................................................................................... 131
Figure 40 Direct SETMRL/GETMRL Format ............................................................................................ 132
Figure 41 Broadcast SETMRL Format ........................................................................................................ 133
Figure 42 DEFTGTS Format....................................................................................................................... 134
Figure 43 ENTTM Format .......................................................................................................................... 136
Figure 178 Example Communication Using I3C SDR Mode with Broadcast CCC.................................... 407
Figure 179 Example Communication Using HDR-DDR Protocol .............................................................. 408
Figure 180 Example Communication Using HDR-BT Protocol ................................................................. 409
Tables
Table 1 Roles for I3C Compatible Devices ................................................................................................... 21
Table 2 I3C Devices Roles vs Responsibilities ............................................................................................. 32
Table 3 I2C Features Allowed in I3C Targets ................................................................................................ 33
Table 4 Legacy I2C-Only Target Categories and Characteristics ................................................................... 33
Table 5 Bus Characteristics Register (BCR).................................................................................................. 35
Table 6 I3C Device Characteristics Register (DCR) ..................................................................................... 36
Table 7 Legacy I2C Virtual Register (LVR) ................................................................................................... 36
Table 8 I3C Target Address Restrictions ....................................................................................................... 50
Table 9 Available Options for Bus Operating Parameters, Per I3C Bus Configuration ................................. 57
Table 10 Controller Clock Stall Times .......................................................................................................... 59
Table 11 Activity States ................................................................................................................................. 66
Table 12 Mandatory Data Byte Field Format ................................................................................................ 84
Table 13 Mandatory Data Byte Value Ranges ............................................................................................... 85
Table 14 Asynchronous Timing Control Mode Supported in I3C Basic ..................................................... 103
Table 15 CCC Frame Field Definitions ....................................................................................................... 112
Table 16 I3C Common Command Codes .................................................................................................... 118
Table 17 Enable/Disable Target Events Command Codes (ENEC/DISEC) ................................................ 125
Table 18 Enable Target Events Command Byte Format .............................................................................. 126
Table 19 Disable Target Events Command Byte Format ............................................................................. 126
Table 20 Enter Activity State 0–3 Command Codes (ENTAS0–ENTAS3) ................................................. 127
Table 21 Enter Activity State CCCs (ENTASx) .......................................................................................... 128
Table 22 Set/Get Max Write Length Command Codes (SETMWL/GETMWL)......................................... 130
Table 23 Set/Get Max Read Length Command Codes (SETMRL/GETMRL) ........................................... 132
Table 24 DEFTGTS Data Bytes for Target or Group .................................................................................. 135
Table 25 ENTTM Test Mode Byte Values ................................................................................................... 136
Table 26 Enter HDR Mode CCCs (ENTHDRx) .......................................................................................... 137
Table 27 GETSTATUS MSB-LSB Format 1 ............................................................................................... 145
Table 28 GETSTATUS Format 2 Defining Byte Values.............................................................................. 147
Table 29 Status Bytes for GETSTATUS Format 2 with Defining Byte PRECR ......................................... 149
Table 30 maxWr Byte Format ..................................................................................................................... 158
Table 31 maxRd Byte Format ...................................................................................................................... 158
Table 32 maxRdTurn Format....................................................................................................................... 159
Table 33 GETMXDS Defining Byte Values ................................................................................................ 160
Table 34 CRHDLY1 Byte Format ............................................................................................................... 162
Table 35 GETCAP1 Byte Format ................................................................................................................ 164
Table 36 GETCAP2 Byte Format ................................................................................................................ 165
Table 37 GETCAP3 Byte Format ................................................................................................................ 166
Table 38 GETCAP4 Byte Format ................................................................................................................ 167
Table 39 GETCAPS Format 2 Defining Byte Values .................................................................................. 169
Table 40 TESTPAT Message Format ........................................................................................................... 171
Table 41 CRCAP1 Byte Format .................................................................................................................. 172
Table 42 CRCAP2 Byte Format .................................................................................................................. 173
Table 43 DBGCAPS Message Format ........................................................................................................ 175
Table 88 Timing and Drive for Start of New Frame: No Contention on A6 ................................................ 383
Table 89 Timing and Drive for Start of New Frame: With Contention on A6 ............................................. 383
Table 90 Timing and Drive for Continuation of Frame Using Repeated START ........................................ 383
Release History
Date Version Description
2 Motivation
4 MIPI Alliance considers I3C technology to have significant advantages over the widely adopted legacy
5 interfaces currently used for similar applications, and wishes to see I3C technology broadly deployed in the
6 industry. Being aware that some advanced I3C v1.x features are not needed for many common applications,
7 and that some potential users might regard MIPI Alliance membership as a barrier, the MIPI Board of
8 Directors decided to make the I3C Basic Specification freely available without requiring a MIPI Alliance
9 membership, and to facilitate a royalty free licensing environment for all implementers, as described further
10 below.
3 IPR Status
11 MIPI Alliance’s regular intellectual property rights-related terms apply only by and among members. To
12 address this issue, MIPI Alliance created a set of supplemental patent licensing terms for the current and
13 future versions of the I3C Basic Specification, attached to this document as Annex E. MIPI required that all
14 members participating in the development of the I3C Basic Specification agree to these additional terms.
15 These terms include an obligation to license applicable patent claims to both member and non-member
16 implementers, for uses both in mobile devices and otherwise, on “RAND-Z” terms: that is, under royalty free
17 (the Z references zero royalty) and otherwise reasonable and non-discriminatory terms.
18 As described in Annex E, any implementer that wishes to benefit from the RAND-Z obligation must also
19 commit to license other implementers under the same RAND-Z terms. This reciprocity requirement is
20 intended to expand royalty free license obligations through the broader I3C Basic ecosystem.
21 The MIPI member companies that joined the I3C Basic Specification development effort and manifest
22 agreement to the terms in Annex E are listed in Annex F. Annex F also notes if and when any party
23 terminates their agreement to these terms (subject to certain ongoing license obligations, as described in the
24 terms).
25 The I3C Basic IPR terms are intended to create a robust royalty free environment for implementers. However,
26 no set of IPR terms can comprehensively address all potential risks. The terms apply only to those parties
27 that agree to them, and the scope of application is limited to what is described in the terms. Implementers
28 must ultimately make their own risk assessment, and the disclaimers described elsewhere in this document
29 remain in full force and effect.
1 Introduction
65 I2C was introduced many years ago to provide a low cost method for connecting a processor to a set of devices
66 to support the needs of consumer electronics; various flavors of I2C have continued to be widely used in
67 many industries where its low cost ability to connect a set of devices (AKA Multi-Drop) has served the needs
68 reasonably well, although often with the need for side-band pins, and often with interoperability challenges.
69 In mobile wireless devices the I2C tradition continued, but changing requirements had made I2C more and
70 more problematic: with the increasing use of sensors, this started creating fragmentation in terms of choice
71 of bus, including I2C, SPI, and UART to address bandwidth and other issues. Further, none of those buses
72 addressed the pin count problems made far worse with more complex end-devices, including the need for
73 various per-device GPIOs in parallel to the bus to cover interrupt (Target Device notifying Controller), sleep
74 and reset signals, and so on. On top of that, the increasing number of devices with increasing amounts of data
75 to send/receive has put pressure on bus bandwidth and latency. Adding more buses adds more pins, more
76 traces, and more power.
77 The MIPI I3C interface has been developed to address these sensor integration concerns, as well as those
78 historically encountered while using I2C, SPI, and UART in any product, by providing a fast, low cost, low
79 power and managed, two-wire digital interface. MIPI worked to address a set of key issues across:
80 performance, power, extraneous pins (e.g., Targets interrupting and reset control), interoperability, bus
81 management, and error-handling/stuck-bus protections; it chose to do all of this while maintaining back-
82 wards compatibility with legacy I2C, to aid in transition and evolution.
Out-of-Band Interrupt
I2C Target
I3C Bus
(SDA & SCL) Legacy
2
I C Device(s)
I3C Target
I3C Device(s)
Host Controller
May be SDR-Only
May be SDR-Only
83
84 Figure 1 I3C System Diagram
1.1 Scope
85 The following topics are in scope for this Specification:
86 • I3C interface protocols and commands
87 • Electrical specifications, such as timing and voltage levels
88 • Support for specific classes of Devices (e.g., sensors)
89 The following topics are out of scope for this Specification:
90 • Mechanical, system, and implementation details within an I3C Device
91 • ESD (Electrostatic Discharge) structures
92 • System power management
93 • Use case specific data or format definitions besides Bus management command codes
40
35
30
25
20
15
10
5
0
HDR-TSP HDR-TSL HDR-DDR SDR I2C 1 MHz
RAW EFFECTIVE
143
144 Note:
145 HDR-TSP Mode and HDR-TSL Mode are not included in I3C Basic.
146 To gain access to these HDR Modes, please contact MIPI Alliance.
147 Figure 2 I3C vs. I2C FM+ Data Blocks Bit Rates in Mbps (12.5 MHz Clock)
148 Figure 3 shows the effective single lane transfer time of 1 kB block of data for the I3C Modes compared to
149 I2C FM+ (1 MHz).
9
8
7
6
5
4
3
2
1
0
150
HDR-TSP HDR-TSL DDR SDR I2C 1 MHz
151 Note:
152 HDR-TSP Mode and HDR-TSL Mode are not included in I3C Basic.
153 To gain access to these HDR Modes, please contact MIPI Alliance.
154 Figure 3 I3C vs. I2C FM+ 1 kB Effective Data Transfer Times in Ms See Errata 01, Item 1
155 Figure 4 shows the amount of Energy (mJ) consumed for an effective single lane of 1 kB block of data for
156 the I3C Modes compared to I2C FM+ (1 MHz).
See Errata 01, Item 2
9
8
7
6
5
4
3
2
1
0
HDR-TSP HDR-TSL DDR SDR I2C 1 MHz
162 Figure 5 shows the Effective Bitrates (Mbps) of the different I3C Modes over Multi-Lane.
100
80
60
40
20
0
HDR-BT HDR-TSP HDR-DDR SDR
2 Terminology
2.2 Definitions
187 1-Wire: A communication bus protocol.
188 ACK: Short for ‘acknowledge’. See also NACK.
189 Active Controller: The I3C Device that presently has control (i.e., the Controller Role) of the I3C Bus.
190 Address Arbitration: Process for determining arbitrated Addresses to resolve contention.
191 Address: A set of bits designating a Device or the location of a register.
192 Arbitrable: Subject to decision by Arbitration.
193 Arbitration: If two Devices start transmission at the same time, then Arbitration is required to determine
194 Bus control. Arbitration could also be required during a Target transmission if a Controller addresses multiple
195 Targets.
196 Bit Banged: When GPIOs are manually changed by software to follow a protocol. For example, software
197 could operate in I2C Controller mode quite easily by writing the SCL pin and reading/writing the SDA pin in
198 between.
199 Bridge Device: Device on the I3C Bus that allows conversion from the native I3C Bus protocol to another
200 protocol (such as SPI, UART etc.).
201 Broadcast: A command intended for multiple Target Devices, using the Broadcast Address 7’h7E.
202 Bus: The physical and logical implementation of the SCL and SDA lines.
203 Bus Available Condition: A period during which the Bus Free Condition, after a STOP and before a START,
204 is sustained continuously for a duration of at least tAVAL (see Table 86 and Section 5.1.3.2.2).
205 Bus Free Condition: A period after a STOP and before a START with a duration of at least tCAS (see Table
206 86) for a Pure Bus, and at least tBUF (see Table 85, Table 86, and Section 5.1.3.2) for a Mixed Bus.
207 Bus Idle Condition: A period during which the Bus Free Condition, after a STOP and before a START, is
208 sustained continuously for a duration of at least tIDLE (see Table 86 and Section 5.1.3.2.3).
209 Bus Turnaround: When a transmitting Device sends a command, and then the receiving Device takes over
210 the I3C Bus in order to respond.
211 Characteristics: Quantification of a Device’s available features and capabilities.
212 Clock to Data Turnaround Time: The time duration between reception of an SCL edge and the start of
213 driving an SDA change. See tSCO in Table 87.
214 Coding: See Data Transfer Coding.
215 Controller: An I3C Device that is capable of controlling the I3C Bus.
216 Note:
217 In previous versions of the I3C and I3C Basic Specifications, a Controller Device was called a “Master
218 Device”. This version of the I3C Basic Specification (as well as the I3C v1.1.1 Specification) has
219 deprecated the term “Master”, and now uses the updated normative term “Controller.” Please note
220 that the technical definition of such a Device, and its Role on an I3C Bus, are unchanged.
221 Unless specified otherwise, a Controller as a Device (or its Role) is a generic term between I3C Basic
222 and I3C. Such a Device may comply with either this I3C Basic Specification or a compatible version
223 of the full I3C Specification [MIPI08] in cases where this distinction is not technically pertinent.
224 Controller Role: Control of the I3C Bus, in a Controller role. See Active Controller.
225 Controller Role Request: A method whereby a Controller-capable Device (i.e., a Secondary Controller)
226 requests to become the next Active Controller of the Bus, using a form of interrupt request (i.e., In-Band
227 Interrupt).
228 CRC-5: Cyclic Redundancy Check with fifth-order polynomial length:
229 CRC-5 = X5 + X2 + X0
230 CRC-16: Cyclic Redundancy Check with sixteenth-order polynomial length, as defined by ANSI and used
231 in USB (also known as CRC-16-IBM):
232 CRC-16 = X16 + X15 + X2 + 1
233 CRC-32: Cyclic Redundancy Check with thirty-second-order polynomial length:
234 CRC-32 = X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
235 Data Transfer Coding: A specific contract for extending an I3C Mode to use additional Data Lanes (i.e.,
236 Multi-Lane). The contract may include changes to the framing, flow, and data bit/byte packing of the
237 structured protocol elements. In some sections of this Specification related to Multi-Lane, a Data Transfer
238 Coding may also be referred to as simply a Coding.
239 Device: A Controller or Target.
240 Device ID: Defines a Device’s characteristic or function within a sensor system.
241 Dynamic Address: A Device Address that is assigned or allocated during initialization of the Bus. Usually
242 occurs after power up.
243 Failsafe: An I3C Device Bus pad is considered Failsafe if its leakage does not increase when it is unpowered.
244 A pad may be unpowered because the Device is unpowered, because its IO rail is unpowered or clamped, or
245 both. Failsafe only matters for some Hot-Join Devices.
246 Flow Element: A structured protocol element, such as a Word or a Block, used as portion of the framing of
247 a given flow to indicate various phases of data transmission to define the Frame, as well as other necessary
248 conditions such as Bus Turnaround.
249 Frame: A Frame begins with a START, followed by the Address of the Target(s), Data, and finally a STOP.
250 High: Defines a signal level that is a logical ‘1’.
251 High Data Rate (HDR): High Data Rate Modes that achieve higher speed by transferring data on both clock
252 edges.
253 High-Keeper: A weak Pull-Up type Device used when SDA, and sometimes SCL, is in High-Z with respect
254 to all Devices.
255 Host: Hardware and software that provides the core functionality of a mobile device.
256 Hot-Join: Targets that join the Bus after it is already started, whether because they were not powered
257 previously or because they were physically inserted into the Bus; the Hot-Join mechanism allows the Target
258 to notify the Controller that it is ready to get a Dynamic Address.
259 Hot-Join Request: A method whereby a Target joins the Bus and requests a Dynamic Address from the
260 Controller, using a special Interrupt request with a reserved I3C Address.
261 Hot-Joining Device: A Device that is currently attempting to join the Bus (i.e., as a Target or Secondary
262 Controller) using the Hot-Join Request.
263 In-Band Interrupt (IBI): A method whereby a Target Device emits its Address into the arbitrated Address
264 header on the I3C Bus to notify the Controller of an interrupt.
265 I2C Device: A Controller or Target that meets the requirements of the I2C Specification [NXP01].
266 I3C Basic Device: A Controller or Target that meets the requirements of this I3C Basic specification (not the
267 full I3C Specification [MIPI08]). That is, an I3C Basic Device supports only the I3C Basic core capabilities
268 plus any optional features and capabilities defined in this I3C Basic Specification; it does not support any
269 optional features defined only in the full I3C Specification.
270 Note:
271 An I3C Basic Device is defined to be interoperable with I3C with respect to the core capabilities that
272 I3C and I3C Basic share, and with respect to I3C Basic’s optional features and capabilities.
273 See the Preface for an overview of I3C v1.1.1 functions not included in I3C Basic and how I3C Basic
274 Devices work with I3C v1.x Devices; see also other sections in this Specification that define the
275 specific features.
276 I3C Basic Controller: An I3C Basic Device that is Controller-capable, i.e., that can hold the Controller Role
277 of an I3C Bus. See also Controller and I3C Basic Device.
278 I3C Controller: See Controller.
279 I3C Device: A Controller or Target that meets the requirements of either this I3C Basic Specification, or of
280 a version of the full I3C Specification that is interoperable with I3C Basic (e.g., I3C v1.1.1 [MIPI08]).
281 Note:
282 In this Specification, I3C Device typically describes compatibility with I3C in a generic sense. An I3C
283 Device does not always imply an I3C Basic Device, since an I3C Device can support either I3C or I3C
284 Basic where such distinctions are not technically pertinent. However, in cases where an I3C Bus
285 contains both I3C Basic Devices and other I3C Devices that comply with the full I3C Specification and
286 that also use features or capabilities that are not included in I3C Basic, there might be restrictions on
287 which features or capabilities can be used with such an I3C Basic Device, and certain compatibility
288 concerns should be understood and addressed. See the Preface Prefacefor an overview.
289 I3C Master: Deprecated term, see Controller.
290 I3C Slave: Deprecated term, see Target.
291 I3C Target: See Target.
292 Legacy I2C: I3C maintains the industry standard architecture of I2C and supports existing I2C Target Devices.
293 I3C does not support I2C Bus Controllers.
294 Note:
295 A Legacy I2C “Target” Device is defined to have the same meaning as an I2C “Slave” Device, as
296 defined in the current version of the I2C Specification [NXP01].
297 Low: Defines a signal level that is a logical ‘0’.
298 Master: Deprecated term, see Controller.
299 Message: A packetized communication between Devices.
300 Minimal Bus: An I3C Bus with one Controller Device (potentially with reduced functionality), and one
301 active Target Device with a fixed and reserved Target Address value of 7’h01. Additional Read-only Target
302 Devices may optionally also be present in a Minimal Bus, but there can be no additional Read-Write Target
303 Devices.
304 MIPI Manufacturer ID: A two-byte/16-bit unique identifier for a vendor of a MIPI compliant Device
305 [MIPI01].
306 Mixed Bus: An I3C Bus topology with both I2C and I3C Devices present on the I3C Bus. May be either a
307 Mixed Fast Bus or a Mixed Slow/Limited Bus.
308 Mixed Fast Bus: I3C Bus topology with both I2C and I3C Devices present on the I3C Bus, where the I2C
309 Devices have a true I2C 50 ns Spike Filter on the SCL line.
310 Mixed Slow/Limited Bus: I3C Bus topology with both I2C and I3C Devices present on the I3C Bus, where
311 the I2C Devices do not have a true I2C 50 ns Spike Filter on the SCL line.
312 Mode: Distinguishes different data transfer methods used in I3C and I3C Basic, including Legacy I2C Mode,
313 Single Data Rate Mode (SDR), High Data Rate Mode (HDR), Dual Data Rate Mode (HDR-DDR), and HDR
314 Bulk Transport Mode (HDR-BT). Note that I3C Basic does not include support for the HDR Ternary Modes
315 that are defined in the full I3C Specification: Ternary Symbol Legacy Mode (HDR-TSL) and Ternary Symbol
316 for Pure Bus Mode (HDR-TSP).
317 Multi-Controller: Multiple Bus Controllers present on the Bus. Used when multiple nodes on the Bus need
318 to initiate a transfer.
319 Multi-Drop: A Bus that communicates through a process of Arbitration to determine which Device sends
320 information at any point. The other Devices listen for data they are intended to receive.
321 Multi-Lane: A method of using more physical wires (i.e., additional Data Lanes along with the SDA Lane)
322 to achieve higher data transfer rates in various I3C Modes.
323 NACK: Short for “not acknowledge”, which means No ACK was asserted. See also ACK.
324 Offline Capable: An Offline Capable Device is able to disconnect from the physical I3C Bus and/or is able
325 to ignore I3C traffic on the I3C Bus. A Device’s Offline capability is one of the capabilities reflected in its
326 Bus Characterization Register.
327 Open Drain: High-Z with an active Pull-Down. Typically used in conjunction with a passive Pull-Up.
328 Park: Logic level High set by the Controller (or Target on Read) before turning around the Bus to allow the
329 other to drive to Logic level Low or not (will be held High by weak Pull-Up).
330 Peripheral: The portion of the logic of a Device that implements the I3C Bus protocol, usually including
331 any FIFOs or other buffers, and an interface to the rest of the system, such as an internal bus to a processor.
332 Preamble: The bits preceding the data Words in HDR-DDR.
333 Primary Controller: The Controller-capable I3C Device that initializes the I3C Bus and performs
334 configuration of all Target Devices. It acts as the authority for the Bus in its initial state, and becomes the
335 first Active Controller once the Bus is configured.
336 Pull-Down: Active mechanism used to pull the Bus to a logical Low state.
337 Pull-Up: Mechanism used to pull the Bus to a logical High state. The mechanism may be either active or
338 passive.
339 Pure Bus: A Bus topology with only I3C Devices present. No I2C Devices are permitted on a Pure Bus.
340 Push-Pull: Active Pull-Down and active Pull-Up on output driver.
341 Read Segment: A series of Flow Elements that comprise a Read transaction addressing a Target, within the
342 framing of a given HDR Mode. Usually part of a Direct SET CCC flow.
343 Repeated START: Two or more instances of a START in a row without an intervening STOP. A Repeated
344 START is used in circumstances where the Controller wishes to continue communicating on the I3C Bus
345 without having to first generate a STOP. In this Specification, a Repeated START is abbreviated as ‘Sr’. This
346 is equivalent to Repeated START in I2C [NXP01].
347 Route: Path through a Device connecting two different I3C Buses. A given Device may contain one or more
348 Routes.
349 Routing Device: Device on the I3C Bus that allows conversations between two or more different I3C Buses
350 through integrated logic on the given Device. The Routing Device (as distinct from a Bridge Device)
351 buffers/queues the transactions, causing the Device to be non-transparent.
352 SDR-Only: An SDR-Only Device supports only SDR Mode, i.e., does not support HDR Mode.
353 Secondary Controller: A Controller-capable I3C Device that initially acts as a Target, but can also accept
354 the Controller Role from any Active Controller (including the Primary Controller). Once a Secondary
355 Controller accepts the Controller Role it becomes the new Active Controller, and may then pass the Controller
356 Role along: either back to the previous Active Controller, or on to any other Controller-capable Device
357 present on the I3C Bus.
358 Segment: A series of Flow Elements that comprise either a Read or Write transaction addressing a Target or
359 Group, within the framing of a given HDR Mode. Usually part of a Direct CCC flow.
360 Single Data Rate (SDR): Single Data Rate transfers data on only one edge of the clock.
361 Slave: Deprecated term; see Target.
362 Spike Filter: A filter that removes SCL (and SDA) spikes shorter than 50 ns in duration. See Input Filter (tSP
363 parameter) in the I2C Specification [NXP01]. Also known as a glitch filter.
364 Stall: The act of the I3C Controller holding the SCL line Low under specific transitory conditions.
365 START: START is the I3C Bus condition of a High to Low transition on the SDA line while the SCL line
366 remains High. In this Specification, a START is abbreviated as ‘S’.
367 START Request: A method for a Target to force the Controller to issue a START on an idled I3C Bus.
368 Static Address: A Device Address that is fixed and cannot be changed.
369 STOP: STOP is the I3C Bus condition of a Low to High transition on the SDA line while the SCL line
370 remains High. In this Specification, a STOP is abbreviated as ‘P’.
371 Swizzle: To swap or interleave bits.
372 T-Bit: Transition bit, an alternative to the ACK/NACK mechanism.
373 Target: A Target Device can only respond to either Common or individual commands from a Controller.
374 Note:
375 In previous versions of the I3C Basic Specification (as well as some previous versions of the full
376 I3C Specification), a Target Device was called a “Slave” Device. This version of the I3C Basic
377 Specification has deprecated the term “Slave” and now uses the updated normative term “Target”.
378 Please note that the technical definition of such a Device, and its Role on an I3C Bus, are
379 unchanged. Unless specified otherwise, a Target as a Device (or its Role) is a generic term
380 between I3C Basic and I3C. Such a Device may comply with either this I3C Basic Specification or
381 a compatible version of the full I3C Specification [MIPI08] in cases where this distinction is not
382 technically pertinent.
383 Target Reset: The Target Reset mechanism allows the Controller to request a reset of specific Target Devices,
384 including: reset of the I3C Peripheral, reset of the whole Device, and wake from deepest sleep. Target Reset
385 uses a specialized pattern of Bus activity (specifically, an extension of the HDR Exit pattern) that cannot
386 occur in any other way in the I3C protocol.
387 Termination Marker: A Flow Element or other unique HDR Pattern that signifies the end of a specific Flow
388 Element, a Segment, or the data message sent by the Controller as part of a Broadcast CCC flow.
389 Ternary Mode: These Modes are defined in the full I3C Specification, and I3C Basic does not include
390 support for them: HDR-TSP (Ternary Symbol for Pure Bus) Mode and HDR-TSL (Ternary Symbol Legacy)
391 Mode.
392 Timestamping: The act of determining and assigning the time at which an event occurred.
393 Timing Control: Methods of exchanging and controlling system timing information, with the intent to
394 synchronize and/or Timestamp I3C Bus Devices and events. See Section 5.1.8.
395 Virtual Target: A physical Device that represents multiple I3C Targets, often implemented as multiple Target
396 Devices sharing a common set of I3C pads. Additionally, there can be multiple Virtual Targets inside a single
397 Device or a Bridge/Hub that manages the Bus connection. See also Table 5, Section 5.1.2.1.2, and
398 Section 5.1.9.3.19.
399 Virtual Target Detect Operation: A method for determining which Virtual Targets share the same Peripheral
400 logic within a particular I3C Device.
401 Word: Transmission containing 16 payload bits and two parity bits.
402 Write Segment: A series of Flow Elements that comprise a Write transaction addressing a Target or Group,
403 within the framing of a given HDR Mode. Usually part of a Direct SET CCC flow.
2.3 Abbreviations
404 ACK Acknowledge
405 e.g. For example (Latin: exempli gratia)
406 High-Z An output driver that is set to high impedance mode (cannot source or sink current)
407 i.e. That is (Latin: id est)
408 NACK Not Acknowledge
409 P STOP
410 PHY Physical Layer
411 S START
412 Sr Repeated START
413 T Transition Bit
2.4 Acronyms
414 AXI Advanced eXtensible Interface
415 BCR Bus Characteristics Register
416 CCC Common Command Code
417 CRC Cyclic Redundancy Check
418 CRR Controller Role Request
419 D2DT Device to Device(s) Tunneling
420 DCR Device Characteristics Register
421 DDR Double Data Rate
422 ESD Electro Static Discharge
423 FSM Finite State Machine
424 HDR High Data Rate
425 HDR-DDR HDR Double Data Rate Mode
426 IBI In-Band Interrupt
427 IMU Inertial Measurement Unit
428 LCR Legacy Characteristics Register
429 LIN Local Interconnect Network
430 LSB Least Significant Byte
431 LSb Least Significant Bit
432 Mbps Megabits per second
433 MHz Mega Hertz
434 MID MIPI Manufacturer Identification [MIPI01]
435 MSB Most Significant Byte
436 MSb Most Significant Bit
437 NVMEM Non-Volatile Memory
438 OCP Open Core Protocol
439 OD Open Drain
440 SCL Serial Clock
441 SDA Serial Data
442 SDR Single Data Rate
443 SPI Serial Peripheral Interface
444 SRFF State Retention Flip-Flop
445 TSL Ternary Symbol Legacy
446 TSP Ternary Symbol for Pure Bus (no I2C Devices)
447 UART Universal Asynchronous Receiver Transmitter
3 References
Legacy I2C I3C SDR I3C SDR I3C SDR I3C HDR
Message w/o CCC(2) Broadcast Direct CCC Mode
CCC(1)
7'h7E Entry
7'h7E 7'h7E 7'h7E
Static Addr, R
(broadcast), W, (broadcast), W, (broadcast), W, (broadcast), W,
or W, ACK
ACK ACK ACK ACK
Repeated
Data, ACK START CCC Broadcast CCC Direct CCC Enter HDR
Dynamic Addr,
ACK R or W, ACK Defining
Continue Optional Data, Byte
T
Dynamic Addr,
Continue R or W, ACK
Done, I2C NACK
I3C NACK
I2C NACK
Data, T
Entry
Done
Exit to STOP
Done
Continue
522 I3C is based on a Frame encapsulation approach. A Frame includes a Data Payload. The transfer protocol for
523 the Data Payload is either SDR or HDR. Frames are bordered by I2C-like Bus management.
524 The I3C Frame always includes at least the START, the Header, the Data, and the STOP.
525 The Header following a START allows for Bus Arbitration. The Controller uses the Header to address Target
526 Device(s). I3C Target Devices(s) may use the Header Arbitration for multiple purposes: for In-Band Interrupt,
527 for Hot-Join, and for Secondary Controller functionality.
528 Common Command Codes (CCCs) are used to enter the High Data Rate (HDR) Modes. It is important to
529 understand that I3C Bus activity for the HDR Message does not follow the Legacy I2C format. Supported
530 HDR protocols use the SDA line and the SCL line to transfer commands, data, and other control information,
531 using alternate formats specified in Section 5.2.
532 I3C allows only one Controller to have control of the I3C Bus at a time. Mechanisms for handoff of the
533 Controller role from one Device to another Device are provided.
COMMS INTERFACE
I3C CORE - CONTROLLER
577
578 Figure 8 I3C Controller Device Block Diagram
COMMS INTERFACE
I3C CORE - TARGET
624
625 Figure 9 I3C Target Device Block Diagram
5 I3C Protocol
635 This Section specifies the communication protocols for all defined I3C Modes:
636 • Single Data Rate (SDR) Mode: See Section 5.1
637 • High Data Rate (HDR) Modes: See Section 5.2
638 • NOT INCLUDED IN I3C BASIC: HDR Ternary Symbol Pure-bus (HDR-TSP) Mode: See
639 Section 5.2.3
640 • NOT INCLUDED IN I3C BASIC: HDR Ternary Symbol Legacy-inclusive-bus (HDR-TSL)
641 Mode: See Section 5.2.3
642 • HDR Double Data Rate (HDR-DDR) Mode: See Section 5.2.2
643 • HDR Bulk Transport Mode: See Section 5.2.4
644 It is important to note that the I3C Bus is always initialized and configured in SDR Mode, never in any of
645 the HDR Modes. (The procedure for entering an HDR Mode from SDR Mode is detailed in Section 5.2.1.)
646 As a result, most of the essential basic I3C protocol specifications are found in Section 5.1, including:
Subject Section
Bus Configuration 5.1.1
Bus Communication 5.1.2
Bus Conditions 5.1.3
Bus Initialization and
5.1.4
Dynamic Address Assignment Mode
Hot-Join Mechanism 5.1.5
In-Band Interrupt 5.1.6
I3C Bus with Multiple Controllers 5.1.7
Timing Control 5.1.8
Common Command Codes (CCC) 5.1.9
Error Detection and Recovery Methods for SDR 5.1.10
Target Reset 5.1.11
SDA
I3C
PRIMARY
CONTROLLER SCL
LEGEND
I3C CONTROLLER
I3C DEVICE
(incl. Primary I3C TARGET I2C TARGET
with multiple roles
Controller)
679
680 Figure 10 I3C Bus with I2C Devices and I3C Devices
681 Figure 11 shows another example block diagram, with an I3C Minimal Bus use case for simple point-to-
682 point communications. In this use case a single Controller assigns the same Dynamic Address to one or more
683 I3C Target Devices, only one of which supports Read transactions and In-Band Interrupts.
I3C I3C
TARGET TARGET
SDA
I3C
PRIMARY
CONTROLLER SCL
LEGEND
684
685 Figure 11 I3C Minimal Bus with I3C Target Devices
686 I3C compatible Devices may have diverse features, as appropriate for their function within the I3C Bus.
687 Depending on the I3C Bus’s system design, it may not be necessary for all features of a given Device to be
688 enabled for any particular Bus instantiation. However, the enabled features of every I3C compatible Device
689 shall be described in Characteristics Registers associated with the Device and its Roles, as described in
690 Section 5.1.1.2. The I3C Primary Controller shall obtain the Characteristics of any Legacy I2C Devices on
691 the I3C Bus before power-up (e.g., the fixed Address of each Legacy I2C Device present on the Bus).
692 At every start-up from a powered-down state, the Primary Controller shall assign a unique Dynamic Address
693 to every Device presenting an active Role on the Bus, including itself. The Dynamic Address assignment
694 procedure is described in Section 5.1.4. Dynamic Addresses create a priority ranking of In-Band Interrupts.
695 Any Secondary Controllers present on the I3C Bus shall be made aware of the Dynamic Address assignments
696 and Characteristic Registers associated with each I3C compatible Device on the Bus via Common Command
697 Codes as described in Section 5.1.9.
702 The I3C protocol supports a subset of I2C Target features. For example, an I3C Target can have a Static
703 Address but also support Dynamic Addressing. A Device shall not have a 50 ns Spike Filter enabled when
704 used in an I3C Bus operating at full clock speed. These differences are summarized in Table 3. When used
705 in an I3C system, I3C Targets shall enable or disable appropriate I2C features as shown in Table 3.
706 Table 3 I2C Features Allowed in I3C Targets
I2C Feature When Used Required Desirable Not Used Not Allowed
Note
on an I3C Bus on I3C on I3C on I3C on I3C
Fm/Fm+ Speed X – – – 2, 3, 4
HS Speed – – X – 3
UFm Speed – – X – 3
Static I2 C Address – X – – –
X
50 ns Spike Filter – – X (Shall 3
disable)
Clock Stretch – – – X –
20 mA Open Drain Driver – – X – 1, 3
Matches I2 C AC Timing – – X – 2, 3
I2 C Extended Address (10 bit) – – X – 3
I3C Reserved Addresses – – – X –
Note:
1) See Table 82 and Table 85
2) I3C drive and timing requirements are different from I2C.
3) If an I3C Target has I2C features intended for use on an I2C Bus, then they will not be used on an
I3C Bus. As stated in Section 5.1.1.1, once the Target sees a 7’h7E, it will disable I2C features
that are not used by I3C.
4) For a Mixed Bus, timing requirements when communicating with I2C-only Devices may depend on
the maximum SCL clock frequency supported by such I2C-only Devices. See Table 84 and Table
85.
707 Performance of an I3C Bus is heavily dependent upon any I2C-only Devices that may be connected to that
708 Bus. Consequently, all I2C-only Devices permitted on any instantiation of an I3C Bus must be compliant with
709 one of the categories detailed in Table 4. Furthermore (and as referenced in Table 84), no I2C or I3C Device
710 present on an I3C Bus shall have an I2C Static Address that matches any of the Addresses associated with
711 Error Type TE0 (see Table 59).
712 Table 4 Legacy I2C-Only Target Categories and Characteristics
I2C-Only Devices I2C-Only Devices I2C-Only Devices
Index Specific
Index 0 Index 1 Index 2
50 ns IO Spike Filter1 Y N N
Max SCL clock frequency (fSCL) tolerant2 N/A Y N
Note:
1) Allows tolerance of HDR Modes and SDR at SCL High periods of tDIG_H_MIXED or less
2) Allows compliance up to maximum SDR SCL clock frequency (fSCL)
745 Virtual Register (LVR) describing the Device’s significant features. Since these are Legacy I2C Devices, it is
746 understood that this register will exist virtually, for example as part of the Device’s driver. When Legacy I2C
747 Devices are present on an I3C Bus, LVR data determines allowed Modes and maximum SCL clock frequency.
748 The bits within the LVR shall conform to the descriptions in Table 7.
749 All LVRs shall be established by the higher-level entity controlling the I3C Bus, and shall be transferred to
750 the I3C Bus Primary Controller prior to Bus configuration. The LVR content for all I2C Devices is always
751 known by the Primary Controller. The Primary Controller shall transfer the LVR content for all I2C Devices
752 to Secondary Controllers by using the DEFTGTS CCC (see Section 5.1.9.3.7).
753 Table 7 Legacy I2C Virtual Register (LVR)
Bits Name Values
3’b000: Index 0: Spike Filter, Max SCL clock freq tolerant N/A
Legacy I2C-Only [2:0] 3’b001: Index 1: No Spike Filter, Max SCL clock freq tolerant
LVR[7:5]
per Table 4 3’b010: Index 2: No Spike Filter, Not Max SCL clock freq tolerant
3’b011 – 3’b111: Index 3 – 7: Reserved
0: I2C Fm+
LVR[4] I2C Mode Indicator
1: I2C Fm
0: Reserved
MIPI Alliance I3C WG
LVR[3:0] 1 – 15: 15 available codes for describing the Device capabilities
Reserved
and function on the sensors’ system.
S or
I3C TARGET ADDRESS R/W ACK
Sr
S or ACK /
I2C TARGET ADDRESS R/W ACK DATA P
Sr NACK
879 5. If the Message is not addressed to the I3C Broadcast Address (7’h7E) or to any of the Target’s
880 currently assigned Addresses (i.e., Dynamic Address or Group Address), then the I3C Target shall
881 await either a Repeated START or a STOP. The Target may record/monitor the bits as they pass (if
882 desired), but the only obligation is to wait for either a Repeated START or a STOP:
883 Note:
884 Repeated START and STOP are specified in Section 2.2 and Section 6.2, and are similar to I2C.
885 In both cases, I3C timing may or may not be the same as with I2C.
5.1.2.1.1 Role of I3C Target Acting as an I2C Target with Static Address
886 As noted in other Sections, I3C Targets are capable of acting as standard I2C Targets as long as they have an
887 I2C Static Address.
888 There are two situations:
889 1. They are on a Legacy I2C Bus, and so all messaging is coming from a Legacy I2C Controller.
890 2. They are on an I3C Bus, but the I3C Controller is not assigning them a Dynamic Address, so they
891 continue to operate as an I2C Target; Messages to/from its I2C Static Address use the I2C protocol.
892 For operation on an I2C Bus, the Target may use an I2C Fm/Fm+ Spike Filter of 50 ns (or more) if it has one.
893 For operation on an I3C Bus, the Target may have an I2C Fm/Fm+ Spike Filter of 50 ns (or more), which it
894 shall disable once it sees a Message from an I3C Controller, notably the first I3C Address Header after Bus
895 initialization (i.e., a START followed by 7’h7E and a RnW bit of 0; see Section 5.1.2.2). To support the
896 disabling of the Spike Filter, the I3C Controller shall emit at least the first such I3C Address Header with
897 Open Drain timing parameters (per Table 86) such that the High and Low periods are long enough to be seen
898 with the Spike Filter enabled (see Section 5.1.2.2.2).
899 Note: See Errata 01, Item 3
900 If the Target has such a Spike Filter enabled, and sees the Controller send such an I3C Address
901 Header with Open Drain timing parameters, then it shall disable the Spike Filter after the ACK (i.e.,
902 after acknowledging the I3C Broadcast Address).
903 An I3C Target acting as an I2C Target will operate correctly on an I3C Bus with the Spike Filter disabled, or
904 without ever having a Spike Filter, because of two strict requirements on all conforming I3C Targets:
905 1. An I3C Target shall recognize all required Broadcast CCCs and act appropriately for each one,
906 even if the Target has not yet received a Dynamic Address. This notably includes the ENTHDRn
907 CCCs (see Section 5.1.9.2 and Table 16).
908 2. An I3C Target shall recognize the HDR Exit Pattern (see Section 5.2.1.1.1).
909 As a result of these two requirements, it is safe for an I3C Target acting as an I2C Target to see the short SCL
910 High periods (unlike a Legacy I2C Device). As a result, it can operate correctly as an I2C Target on an I3C
911 Bus without a Spike Filter (unlike Legacy I2C Targets).
SDA A6 A5 A4 A3 A2 A1 A0 R/W
SCL
SDA A6 A5 A4 A3 A2 A1 A0 R/W
SCL
SDA A6 A5 A4 A3 A2 A1 A0 R/W
SCL
SDR Transfer
0.7 X VDD
SDA A6 A5 A0 RnW ACK D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C2 C7 C8 C9 C1 C2 C8 C9
0.3 X VDD
= Open-Drain Pull-Up class Transition from SCL clocks are shown identical for OD and PP
Open-Drain to even though they differ substantially
= High Speed Active Push-Pull Drive Push-Pull
0.7 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
NOTE:
= Active Drive by Controller or Target
Open-Drain: Controller drives and then releases SDA after a
suitable delay from SCL edges = Open-Drain Pull-Up class by Controller
= High-Z by Controller
Push-Pull: Target drives SDA after its tSCO from SCL edges = High-Z by Target
*tSCO is depicted for informative purposes only
1181
1182 Figure 14 Transition from Address ACK to Mandatory Byte During IBI
STOP
0.7 X VDD
SDA A6 A5 A0 RnW NACK 0.3 X VDD
Repeated START
0.7 X VDD
SCL C9 0.3 X VDD
0.7 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
Open-Drain
Timing Open-Drain Push-Pull Push-Pull
parameters or Push-Pull tSU_PP
used
NOTE:
Open-Drain: Controller releases SDA after a = Active Drive by Controller or Target
suitable delay from SCL edges
= Open-Drain Pull-Up class by Controller
Push-Pull: Controller drives SDA after a
= High-Z by Target
suitable delay from SCL edges
= Controller drives Push-Pull HIGH,
prepares for Repeated START
= Master drives Push-Pull LOW,
prepares for STOP
1183
1184 Figure 15 Transition from IBI Address NACK to Repeated START or STOP
5.1.2.4 Use of Clock Speed to Prevent Legacy I2C Devices from Seeing I3C Traffic
1231 In a system, there are three possible I3C Bus Configurations:
1232 1. Pure Bus: Only I3C Devices are present on the Bus.
1233 2. Mixed Fast Bus: Both I3C Devices and Legacy I2C Devices are present on the Bus, such that the
1234 Legacy I2C Devices are restricted to ones that are generally permissible (i.e., Target-only, and no
1235 Target clock stretching), and that have a true I2C 50 ns Spike Filter on SCL. (I.e., I2C Devices that
1236 do not ‘see’ the SCL line as High when the High duration is less than 50 ns, across all
1237 temperatures and processes.)
1238 3. Mixed Slow/Limited Bus: Both I3C Devices and Legacy I2C Devices are present on the Bus, such
1239 that the Legacy I2C Devices are restricted to ones that are generally permissible (i.e., Target-only,
1240 and no Target clock stretching), but that do not have a true I2C 50 ns Spike Filter on SCL.
1241 The Bus designer’s choice of Bus Configuration affects what speed options are available for I3C SDR, as
1242 well as what HDR Modes are possible at various clock speeds. Table 9 shows the possible options for each
1243 Bus Configuration.
1244 Table 9 Available Options for Bus Operating Parameters, Per I3C Bus Configuration
5.1.2.4.1 Use of Duty Cycle to Achieve Lower Effective Speed in a Mixed Fast Bus
1245 An I3C Pure Bus may simply change the clock speed to any frequency in the allowed speed range, as outlined
1246 in Section 6. By contrast, a Mixed Fast Bus wanting to clock faster than the slowest Legacy I2C Device needs
1247 to take advantage of the Spike Filter, i.e., shall ensure that the SCL High period is shorter than the Spike
1248 Filter, in order to prevent the Legacy I2C Devices from seeing the SCL High period (see tDIG_H_MIXED in Table
1249 87). As a result, the Legacy I2C Device ‘sees’ the SCL as staying Low the whole period.
1250 However, a Mixed Fast Bus I3C Controller can change the effective Bus frequency by varying the duty-cycle
1251 of SCL. This allows running the data rate slower, for example to accommodate Targets that need a lower rate
1252 as defined by GETMXDS CCC (see Section 5.1.9.3.18). It may also be necessary to accommodate Legacy
1253 I2C Devices with Spike Filters that need a longer Low period in order to function properly.
1254 In this model the SCL High period shall never exceed tDIG_H_MIXED, thus staying below the 50 ns required by
1255 the I2C Spike Filter; however, the Low period is free to be any length permitted by I3C’s allowed clock
1256 frequency range. For example, depending on the clock generation capability of the I3C Controller, the SCL
1257 Low period may be a multiple of the High period, or it may be any multiple of some higher frequency clock
1258 capable of providing a High period less than or equal to tDIG_H_MIXED, but greater than the minimum SCL High
1259 period as defined in Table 85.
1260 Example 1: An SCL High period of 40 ns, plus a Low period of 280 ns, yields a total clock period of 320 ns
1261 which corresponds to a frequency of 3.125 MHz.
1262 Example 2: In order to ensure that the Legacy I2C Device Spike Filters continue tracking SCL as Low, an
1263 SCL High period of 40 ns could be used with a Low period of 80 ns, yielding a total clock period of 120 ns
1264 which corresponds to a frequency of 8.3 MHz.
1265 Such adjustment of the clock Duty Cycle brings three benefits:
1266 • It remains hidden from Legacy I2C Devices, while still significantly increasing the SDR,
1267 HDR-DDR, and HDR-BT data rate.
1268 • It ensures a longer Low period, so that Legacy I2C Device Spike Filters continue to track SCL as
1269 Low.
1270 • It is easy for a Controller to generate, and has no impact on I3C Targets (which just react to clock
1271 edges).
1272 This model works because all I3C Targets must be able to accommodate 12.5 MHz as a clock rate, so the
1273 shorter High period will not impact them.
1274 Note that this Duty Cycle technique does not resolve issues of long Buses with high line capacitance. This is
1275 because the short High period may be insufficient for SDA propagation, even if the Low period is long
1276 enough.
1296 In all cases, after Stalling the SCL Low period, the continuation of the clock (i.e., the first SCL rising edge
1297 after the extended Low period) shall follow the normal rules for I3C SDR (for I3C SDR Messages), or for
1298 I2C (for I2C Messages) including rise time, change in SDA (if any) before SCL rise, next bit, etc. For example,
1299 the I3C Controller might choose to terminate the Frame after this Stalled bit with a STOP; but in this case
1300 the Controller is required to observe the requirements for STOP timing, as appropriate.
1301 It is recommended to use Controller Clock Stalling only when necessary and unavoidable. In all other
1302 circumstances the Controller should avoid Controller Clock Stalling because of its negative impacts on Bus
1303 performance. In order to help guide system designers, Data Sheets for I3C Controller Devices should include
1304 appropriately detailed SCL Stalling parameters.
ACK/
A0 RnW
NACK
SDA
C7 C8 C9
SCL
D0 T
SDA
C8 C9
SCL
D0 T D7
SDA
C8 C9 C1
SCL
D0 T
SDA
C8 C9
SCL
Repeated
START
(Sr)
D0 T
SDA
C8 C9
SCL
D0 T
SDA
C8 C9
SCL
Repeated STOP
START (Sr) (P)
D0 T
SDA
C8 C9
SCL
C63 C64 C1
SCL
SCL
tIDLE = 200 µS
tAVAL = 1.0 µS
Note:
Durations
Bus Available Condition
not drawn to
scale
tBUF = 1.3 µS
tBUF = 0.5 µS Bus Free Condition for Mixed Bus with I 2C FM Device
1407 The Activity State number serves as a hint to the Target, indicating how long it will be before the Controller
1408 directs Bus activity to that Target, and the likely latencies to expect in response to the Target pulling SDA
1409 Low (i.e., for the START Request to then generate an In-Band Interrupt Request or a Controller Role
1410 Request).
1411 The Controller uses CCC commands ENTAS0, ENTAS1, ENTAS2, and ENTAS3 (see Section 5.1.9.3.2) to
1412 communicate the four expected Bus Activity states to Targets. Each ENTASx CCC has both a Broadcast
1413 version and a Directed (per-Target) version. The Controller may switch to a different Activity State in any
1414 way, and at any time, by issuing the appropriate ENTASx CCC command.
1415 The Target may use the received Activity State hint to adjust internal settings such as power savings, FIFO
1416 trigger levels, timestamp counters and clock rates, and other suitable operating parameters. However Targets
1417 are not required to support the Activity States CCCs (ENTASx), and as a result could even ignore them
1418 completely.
1419 The Activity States mechanism is a basis for a general agreement between Controller and Target, i.e., that the
1420 Target may NACK any access occurring sooner than the general time factor. For example: If the Controller
1421 sends the ENTAS2 CCC, meaning the Controller is unlikely to initiate a request sooner than 2 ms from the
1422 time the CCC is sent, then a request arriving only 1 ms later could result in a NACK (although it will be
1423 ACKed if the request is repeated after the Target re-awakens). As a result, the Target shall wake up either
1424 upon any Bus activity, or upon matching 7’h7E and its own Dynamic Address.
1425 The Activity State CCCs also adjust the maximum value for I3C Bus timing parameter tCAS (Clock after
1426 START; see Table 86), the maximum amount of time that the Controller may take to generate the SCL clock
1427 (drive SCL Low) in response to the Target pulling SDA Low. Note that tCAS is only a worst-case number; it
1428 does not indicate whether or not the Controller will ACK the In-Band Interrupt Request or Controller Role
1429 Request. Further, the selected Activity State does not necessarily indicate the time at which the Controller
1430 will read additional data from a Target in response to an In-Band Interrupt; that is a private contract between
1431 Controller and Target. A Target that does not support the ENTASx CCCs shall have a tCAS maximum value
1432 of 50 ms (the ENTAS3 value).
1433 Activity States are not intended as a substitute for a more precise power mode, nor for any other mechanism
1434 that might be supported by private contract between Controller and Target. For example, if a Target has a
1435 Device power mode setting, then the Controller should use that mechanism to put the Target into the desired
1436 state. Likewise, a Target could provide a FIFO trigger level setting, relating to the amount of time that the
1437 Controller will have to read the FIFO contents in response to an In-Band Interrupt Request; if so, then the
1438 Controller should use that setting to match its internal latencies.
1538 4. The Active Controller shall send a Repeated START, and the I3C Broadcast Address 7’h7E with
1539 RnW bit High (i.e., Read). Every I3C Device on the I3C Bus that supports Dynamic Address
1540 Assignment with ENTDAA and does not yet have an assigned Dynamic Address shall
1541 acknowledge the I3C Broadcast Address, except for Hot-Joining Devices that are not eligible to
1542 participate (per Section 5.1.5).
1543 At least one I3C Device on the I3C Bus should acknowledge the I3C Broadcast Address in this
1544 step, if a Hot-Join Device had previously initiated a Hot-Join Request to signal that it needed a
1545 Dynamic Address and was eligible to participate in Dynamic Address Assignment with ENTDAA.
1546 Note:
1547 Per Section 5.1.5, a Hot-Joining Device must first emit the Hot-Join Request at least once,
1548 before it may ACK the I3C Broadcast Address 7’h7E with RnW bit High and participate in a
1549 Dynamic Address Assignment procedure with ENTDAA. For example, a Hot-Joining Device
1550 that uses the standard Hot-Join method must wait to determine that the Bus is Idle (see
1551 Section 5.1.3.2.3) before it may request a START as part of a Hot-Join Request. If such a
1552 Device has not waited for the minimum time (i.e., Bus Idle Condition) to determine whether
1553 the Bus is Idle, then it shall not emit the Hot-Join Request, and hence it cannot participate in
1554 Dynamic Address Assignment with ENTDAA.
1555 This use of the I3C Broadcast Address (7’h7E) with RnW bit High (i.e., Read) is specific to
1556 Dynamic Address Assignment Mode. It is also acceptable per the I2C Specification [NXP01].
1557 5. The Active Controller shall drive only the SCL line. The Active Controller shall release the SDA
1558 line to a High-Z state, allowing SDA to go to High level via the Bus Pull-Up resistor.
1559 6. Every I3C Device that is eligible to participate and responds to the I3C Broadcast Address sent in
1560 Step 4 shall drive the SDA line with its own 48-bit Provisioned ID (using Big Endian bit order),
1561 until it loses Dynamic Address Arbitration.
1562 The 48-bit Provisioned ID shall be transferred continuously, starting with the most significant bit
1563 (bit[47]), with no delimitation or ACK/NACK pulse.
1564 Note:
1565 As mentioned above, a Hot-Joining Device shall only participate in the Dynamic Address
1566 Assignment procedure after emitting the Hot-Join Request (per Section 5.1.5).
1567 7. The Active Controller shall continue to drive the SCL line with the same clock, while still
1568 releasing the SDA line. The I3C Device that did not yet lose the Arbitration shall then transfer its
1569 Bus Characteristics Register (BCR) and Device Characteristic Register(s) (DCR) per
1570 Section 5.1.1.2.2, until it eventually loses Dynamic Address Arbitration. See also Section 5.1.4.3.
1571 8. The Device whose concatenated Provisioned ID, BCR, and DCR has the lowest value will win the
1572 Arbitration round, due to the nature of Arbitration.
1573 Note:
1574 It is possible for multiple Devices to have the same concatenated value, although this is
1575 highly improbable. See Section 5.1.4.3.
1576 Per Section 5.1.2.5.4, the Controller can stall SCL after receiving the last bit of the DCR, if it
1577 needs time to determine the correct Dynamic Address for the specific Device that has won
1578 this Arbitration round.
1579 9. The Active Controller shall transfer a 7-bit wide Dynamic Address for the winning Device, in
1580 Open Drain Mode. This Dynamic Address shall incorporate the priority level that the Active
1581 Controller assigns to the Device, per Section 5.1.6.2. The Arbitration-winning Device shall
1582 acknowledge the assigned Dynamic Address. This Dynamic Address transfer procedure shall have
1583 the following steps:
1584 • The Active Controller shall drive the 7-bit Dynamic Address, followed by a parity bit (PAR),
1585 which is calculated as odd parity. Odd parity is the inverse of the XOR of the 7 bits. Therefore
1586 ~XOR( dynamic_address[7:1] ) is placed in position 0.
1587 • If the parity is valid, then the Target shall acknowledge receipt of the Dynamic Address on the
1588 next SCL clock. If the parity is invalid, then the Target shall passively NACK on the next
1589 SCL.
1590 10. The Active Controller shall repeat this procedure, jumping back to step 4 until there is no ACK
1591 from any Device present on the I3C Bus.
1592 11. This Dynamic Address Assignment procedure shall be ended by the Active Controller issuing a
1593 STOP.
1594 Figure 25 shows a typical Dynamic Address Assignment transaction using the flow that is entered with the
1595 ENTDAA CCC, including two iterations of steps 4–9 above. This Figure shows how the Controller may send
1596 the ENTDAA CCC after either a START or a Repeated START.
I3C Reserved Byte Read Data: 8 Bytes Assign 7-bit Dynamic ACK/
Sr ACK PAR
(7'h7E) (RnW=1) (48-bit Unique ID, BCR, DCR) Address to the Target NACK
I3C Reserved Byte Read Data: 8 Bytes Assign 7-bit Dynamic ACK/
Sr ACK PAR
(7'h7E) (RnW=1) (48-bit Unique ID, BCR, DCR) Address to the Target NACK
1695 3. After the Active Controller assigns Group Addresses, the Active Controller shall use the
1696 DEFTGTS CCC to inform any Secondary Controllers about the Dynamic Addresses and Group
1697 Address(es) that were assigned.
1698 4. If any Secondary Controllers support Group Addressing, then the Active Controller shall use the
1699 DEFGRPA CCC to inform them about the Group memberships that were assigned.
1700 If the Active Controller detects the disconnection of any I3C Devices from the I3C Bus, then the Active
1701 Controller shall execute step 4 of the above procedure.
1702 The Active Controller could use the RSTGRPA CCC to manage Group membership of Targets, and to modify
1703 the existing Groups, or reset all Groups and Group Addresses.
1704 In addition to resetting the Target’s Dynamic Address, the RSTDAA CCC shall also reset all of the Target’s
1705 Group Addresses if the Target supports the Group Address function.
1706 Group Addresses may also be used for write transactions that use Multi-Lane formatting, if supported by all
1707 Targets assigned to a Group Address (see Section 5.3.1.1.1).
1708 If an I3C Target supports the Group Address feature, and is presented by a composite Device that presents
1709 multiple Virtual Targets on the I3C Bus using shared Peripheral logic (per Section 5.1.2.1.2) then each Virtual
1710 Target shall report its Group Address capabilities using the GETCAPS CCC. Each such Virtual Target may
1711 optionally support multiple Groups, and the Device shall store all assigned Group Addresses for each Virtual
1712 Target. The Controller may assign any or all such Virtual Targets to as many Groups as each Virtual Target is
1713 capable of supporting, if the Active Controller so desires. The Device’s shared Peripheral logic shall match
1714 incoming Private Write transfers addressed to any such Group Addresses, and deliver them internally to
1715 appropriate logic for each Virtual Target function that has been assigned to that Group Address.
1750 2. The Active Controller shall either ACK the request, to indicate that it has seen the Hot-Join and
1751 will assign a Dynamic Address at some point in the future; or NACK the request to reject the Hot-
1752 Join and defer processing.
1753 a. If the Active Controller NACKs the request, then the Target attempting to Hot-Join shall try
1754 again, following the I3C Target Interrupt Request procedure (see Section 5.1.6.2).
1755 b. If the Active Controller ACKs the request, then the Target knows that the Hot-Join was
1756 accepted, and it shall wait for the Active Controller to initiate the Dynamic Address
1757 Assignment procedure with ENTDAA (see Section 5.1.4.2). Once the Target has seen the
1758 ACK of the Hot-Join Request, it shall not send another Hot-Join Request.
1759 c. The Active Controller may choose to issue a Broadcast CCC to disable Hot-Join by setting the
1760 DISHJ bit in the Command Code Disable Target Events Command (DISEC, see
1761 Section 5.1.9.3.1). The Active Controller may do so after either a NACK or an ACK of the
1762 Hot-Join Request, although this typically happens after a NACK. If another Target attempts to
1763 Hot-Join before the Controller is ready to assign Dynamic Addresses to the Targets, then the
1764 Controller might need to repeat this procedure.
1765 d. Likewise, the Active Controller may choose to re-enable Hot-Join at a later time (i.e., after
1766 using the DISEC CCC with DISHJ bit set, to disable Hot-Join). To do this, the Active
1767 Controller may issue a Broadcast CCC to enable Hot-Join by setting the ENHJ bit in the
1768 Command Code Enable Target Events Command (ENEC, see Section 5.1.9.3.1).
1769 If any Hot-Joining Targets had previously received the DISEC CCC with DISHJ bit set,
1770 then such Targets may choose to re-send the Hot-Join Request after receiving the ENEC
1771 CCC with ENHJ bit set.
1772 3. The Active Controller should eventually issue a Broadcast Command Code Enter Dynamic
1773 Address Assignment (ENTDAA, see Section 5.1.9.3.4) to start the Dynamic Address Assignment
1774 process. Since only eligible Targets with no Dynamic Address shall participate, this allows the
1775 newly joined Target to receive its Dynamic Address.
1776 a. If the Active Controller has limited capabilities (e.g., is a reduced functionality Secondary
1777 Controller Device, per Section 5.1.7.3.4), then it may choose to not process the Hot-Join
1778 Request, by using the NACK followed by the DISEC CCC (as listed above), and then it may
1779 pass the Controller Role to a more capable Controller (per Section 5.1.7.3.6) at a later time.
1780 b. A Target that supports Hot-Join (either via the standard method, or the passive method per
1781 Section 5.1.5.3) is eligible to participate in Dynamic Address Assignment if and only if it has
1782 issued the Hot-Join Request (i.e., using the reserved Target Address, 7’h02).
1783 Note:
1784 Controller ACK in a Hot-Join Request does not imply that the Dynamic Address Assignment
1785 will necessarily start immediately. The Controller may wait for a potentially prolonged period
1786 before issuing the ENTDAA CCC.
1787 Note:
1788 Hot-Join is only compatible with ENTDAA. Targets that do not support ENTDAA shall not
1789 use Hot-Join.
1790 If an Enter Dynamic Address Assignment (ENTDAA) Command Code is issued as
1791 described in Section 5.1.9.3.4, then the Target shall transmit its 48-bit Provisioned ID per
1792 the normal mechanism. Hot-Join Targets required to receive the same assigned Dynamic
1793 Address every time they join can use a fixed-value ID, per Section 5.1.4.1.1.
1794 Figure 171 in Annex C illustrates the Hot-Join flow, for both standard and passive Hot-Joining Targets. This
1795 flow diagram is strictly informative and does not provide every possible combination of paths.
1796 If a Target drops off the I3C Bus due to being detached or depowered, then the Controller might not be aware
1797 of this. The Controller may determine this condition by repeated attempts to contact the Target using a safe
1798 Command Code (i.e., a CCC that the Target is required to always respond to), such as Get Device Status
1799 (GETSTATUS, see Section 5.1.9.3.15). If the Controller determines that the Target is no longer part of the
1800 I3C Bus, then it shall either recycle that Target’s Dynamic Address, or else reserve that Target’s Dynamic
1801 Address in case that Target later re-joins the Bus.
1802 Note:
1803 If the Controller’s first attempt to emit the first I3C Address Header (i.e., emitted slowly to allow for I3C
1804 Targets to disable Spike Filters) is converted into a Hot-Join, then the Controller needs to ACK it, then
1805 emit STOP and attempt to emit the I3C Address Header again, per Section 5.1.2.1.1.
1806 A Hot-Joining Target may power-up at the same time as the Primary Controller (e.g., may be
1807 connected to the I3C Bus when power is applied to the system). In that case, the Hot-Joining Target
1808 might pull SDA Low even before the I3C Bus has been started, assuming that SCL and SDA are
1809 being pulled up. If a Primary Controller needs 1 ms or more in order to start acting on the I3C Bus,
1810 then that Primary Controller shall tolerate the situation of SDA being held Low when it is ready to
1811 initialize the I3C Bus, or it may hold SDA and/or SCL Low until ready, keeping the Hot-Joining Target
1812 from seeing the Bus Idle Condition.
1813 Hot-Joining Targets should implement some method that allows the system designer to prevent the
1814 Device from attempting to Hot-Join when the Device is not being used as a Hot-Joining Target. For
1815 example: either NVMEM or a pin strap could be used when such a Device is soldered onto the board
1816 and powered with the rest of the I3C Bus.
1817 Target Hot-Join Requirements
1818 A Hot-Joining Target (i.e., a Hot-Joining Device attempting to join with active Target role) should be ‘single-
1819 minded’ in nature, focusing exclusively on emitting the Hot-Join Request, until the Active Controller either
1820 ACKs the request (thereby indicating that it will eventually start the process of Dynamic Address
1821 Assignment) or NACKs the request (thereby indicating that the Target should continue providing Hot-Join
1822 Requests until the Active Controller either ACKs such a request, or sends the Broadcast DISEC CCC to
1823 disable Hot-Join, as mentioned above).
1824 1. The first time the Hot-Joining Target connects to the I3C Bus, the Target shall wait for the
1825 appropriate opportunity to send the Hot-Join Request, based on its eligibility:
1826 a. A Hot-Joining Target using the standard method shall become eligible after waiting for a
1827 period of at least Bus Idle Condition (tIDLE, see Table 86) and ensuring that the Bus remains
1828 Idle (i.e., that SDA and SCL are both High per Section 5.1.3.2.3).
1829 b. A Hot-Joining Target using a passive method shall follow the conditions of eligibility defined
1830 in Section 5.1.5.3.
1831 If multiple Hot-Joining Targets become eligible at the same time, then they could all attempt to
1832 emit the Hot-Join Request together (i.e., at the same time). This could apply to Hot-Joining Targets
1833 using any combination of standard or passive Hot-Join methods.
1834 2. The Hot-Joining Target shall, when eligible, send the Hot-Join Request on the I3C Bus, following
1835 a START.
1836 a. The Hot-Join Request is an IBI from the reserved Target Address (i.e., 7’h02), with the RnW
1837 bit Low (i.e., Write).
1838 b. The Target shall send the Hot-Join Request, by either waiting for a START, or requesting a
1839 START by pulling SDA Low (for the standard method only). After the START, the Target
1840 shall drive the Address of 7’h02 / W into the Arbitrable Address Header.
1841 Note:
1842 To issue a START, a Hot-Joining Target using the standard method must pull SDA Low; the
1843 Target shall then wait for the Controller to drive SCL Low. This applies to the standard Hot-
1844 Joining method only; a passive Hot-Joining Target that does not have a timer must wait for
1845 another Device to drive a START Request, per Section 5.1.5.3.
1846 In the case where multiple Hot-Joining Targets successfully emit the Hot-Join Request at the
1847 same time, it would not be necessary for each of these eligible Targets to emit separate Hot-
1848 Join Requests in succession with delays between each request. If a Hot-Join Request was
1849 successfully emitted, and if the Active Controller responds to that Hot-Join Request, then
1850 each such Target shall participate in a subsequent Dynamic Address Assignment procedure
1851 with ENTDAA that would be initiated by the Active Controller.
1852 c. The Target shall watch for the Active Controller to either ACK or NACK the Hot-Join
1853 Request.
1854 3. The Hot-Joining Target shall conditionally continue sending the Hot-Join Request on each
1855 subsequent START (i.e., at the next appropriate opportunity) until and unless the Active Controller
1856 provides an ACK for the Hot-Join Request.
1857 Once such an eligible Target sees the Active Controller ACK the Hot-Join Request (i.e., one that it
1858 initiates or that it is eligible to initiate, per step 1), then it shall stop sending further Hot-Join
1859 Requests.
1860 4. Once the Hot-Joining Target sees the Active Controller ACK or NACK the Hot-Join Request, it
1861 shall follow all normative requirements for the Role of an I3C Target per Section 5.1.2.1 (i.e., one
1862 that has not yet received its Dynamic Address).
1863 Note:
1864 A Hot-Joining Target that uses the standard Hot-Join method (i.e., based on the Bus Idle
1865 Condition) shall not follow these normative requirements (i.e., as a Target that has not yet
1866 received its Dynamic Address) until and unless it emits the first Hot-Join Request, and then
1867 receives an ACK or NACK from the Active Controller. This is because the Bus Idle Condition is
1868 related to the minimum time necessary to determine that the Bus is free and not in any HDR Mode
1869 (i.e., no transfer is in progress).
1870 a. This shall include receiving and appropriately processing all required Broadcast CCCs.
1871 b. This may also include the Broadcast ENEC CCC with the ENHJ bit set, if the Target chooses
1872 to support re-sending Hot-Join Requests as a response to this Broadcast CCC, and if it
1873 previously received the Broadcast DISEC CCC with the DISHJ bit set. Note that this shall not
1874 affect whether the Target supports (or remains ready to respond to) the Broadcast ENTDAA
1875 CCC.
1876 c. The Target shall also remember that it has seen an ACK/NACK response to at least one
1877 Hot-Join Request, and it shall remain ready to respond to the Broadcast ENTDAA CCC for
1878 subsequent Dynamic Address Assignment. Note that this may follow immediately after any of
1879 the following:
1880 i. An ACK or a NACK, followed by a Repeated START;
1881 ii. A STOP, followed by a delay (i.e., Bus Free Condition, or longer); or
1882 iii. A Repeated START that is followed by other valid Bus traffic, such as Private Reads,
1883 Private Writes, and/or other CCCs.
1884 Note:
1885 Once the Target has emitted the Hot-Join Request, the Target shall remain ready to respond to the
1886 Broadcast ENTDAA CCC, even if it sees a NACK to a Hot-Join Request, or a NACK followed by the
1887 Broadcast DISEC CCC with the DISHJ bit set.
1888 If a Hot-Joining Target has not yet emitted the Hot-Join request, then it shall not be eligible to
1889 participate in Dynamic Address Assignment with the ENTDAA CCC.
1890 A Hot-Join Request shall always follow a START, which means that this uses an Arbitrable Address
1891 Header. Hot-Joining Targets should attempt to arbitrate the reserved Target Address (i.e., 7’h02), per
1892 the conditions of eligibility to emit the Hot-Join Request (i.e., standard vs. passive Hot-Join method).
1893 Since this reserved Target Address has a very low value, it will almost always have higher priority
1894 over other I3C Target Addresses, which means it is very likely to win Arbitration.
1986 iii. Abort the IBI service (e.g., for Timing Control information).
1987 In all cases the specific follow-up actions shall be established by private contract between
1988 the Devices, bearing in mind the possibility for data to be corrupted in the meantime.
1989 One conceptual time diagram of this sequence is shown in Figure 26.
Drive High or
Open Hand
Open Drain Open Drain Push-Pull Low, and Push-Pull
Drain Off
then High-Z
SCL
S Target_addr_as_IBI/R Controller_ACK Target_byte T Sr
High
1991 b. If the I3C Target’s BCR[2] bit is set to 0, then the Active Controller may take any other valid
1992 I3C action to terminate the frame after providing the ACK bit; i.e., issue either a STOP or a
1993 Repeated START.
1994 Or:
1995 2. Refuse the IBI without disabling interrupts. To do this the Active Controller simply passively
1996 NACKs, thus denying the IBI. The Target will normally try again after the next Bus Available
1997 Condition, or on the next START.
1998 Or:
1999 3. Refuse the IBI and disable interrupts. To do this, the Active Controller NACKs to deny the IBI,
2000 then sends a Repeated START, and finally sets the DISINT bit in the Command Code Disable
2001 Target Events Command (DISEC) to the interrupting Target as described in Section 5.1.9.3.1.
2002 (The Active Controller can set the ENINT bit in the Command Code Enable Target Events
2003 Command (DISEC) at a later time.)
2004 In cases where the Active Controller anticipates that the I3C Bus might be needed for a higher Priority Level
2005 transaction before the newly requested transaction would complete, the Active Controller could either deny
2006 the access (by not acknowledging the request), or else drive the higher-priority Device Address instead of the
2007 Address of the Device sending the IBI request. The Active Controller would then hold the SCL line Low until
2008 the expected higher-priority transaction begins.
2009 Bus contention occurs during Address evaluation. As a result, if multiple I3C Devices simultaneously attempt
2010 to win the Bus, then all but one will lose the Arbitration. These Devices will have the opportunity, but are not
2011 required, to repeat the attempt upon the next Bus Available Condition. Note that Target Devices have the
2012 option to choose to not try again.
Non MIPI 3’b011 5’h00 – 5’h1F Non MIPI Reserved Allocated for uses outside of MIPI Alliance
Reserved
Timing 3’b100 5’h00 – 5’h1F Vendor Reserved May have any value defined by the vendor
Information
Pending 3’b101 5’h00 – 5’h0C MIPI Alliance I3C WG Indicates that the interrupt is generated by a
Read Reserved Device that wants to send a specific MIPI
Notification 5’h0D MIPI Alliance Debug WG Alliance WG-related or vendor-specific
Reserved interrupt, and has a data message that will
5’h0E MCTP Packet be returned on the next Private Read if
(for DMTF [MCTP01]) ACKed (see Section 5.1.6.2.2)
5’h0F MIPI Alliance I3C WG
Reserved
5’h10 – 5’h1F Vendor Reserved
Reserved 3’b110 — Reserved
Reserved 3’b111 — Reserved
2070 A Target may hold only one active Pending Read Notification at any time, while it is waiting for the Controller
2071 to read the data:
2072 • While the Target is waiting for the Controller to initiate a Private Read request for its active
2073 Pending Read Notification, it shall not send an IBI with a Mandatory Data Byte value to indicate
2074 another Pending Read Notification until after the Controller has initiated the expected Private
2075 Read request to consume the data for the active Pending Read Notification.
2076 • However, the Target may send an IBI with another Mandatory Data Byte value (i.e., one that does
2077 not signal a Pending Read Notification) for other reasons, such as reporting error conditions or
2078 other types of interrupt events.
2079 • If the Controller has serviced and accepted the IBI and its MDB, but has not initiated the expected
2080 Private Read request in a timely manner, then the Target may re-transmit the IBI with the same
2081 MDB (with additional data bytes, as described above) as a reminder.
2082 • The Controller need not initiate multiple Private Read requests (i.e., one for each additional
2083 IBI with MDB for a Pending Read Notification); the most recent IBI shall be the notification
2084 to consume the data for the active Pending Read Notification.
2085 • However, if the Controller does initiate additional Private Read requests due to additional IBIs
2086 as reminders, then the Target shall not accept such requests.
2087 • The Target shall keep the data available for the Controller, to satisfy the expected Private Read
2088 request, unless it encounters an error (e.g., due to delayed read or other conditions).
2089 • If the Target encounters an error or is unable to return the data, then it shall not accept the
2090 Private Read request (i.e., the Target shall NACK the read), and should also report this as an
2091 error (i.e., an IBI with another MDB value).
2092 By default, a Target should not attempt to send an IBI with a Mandatory Data Byte value to indicate a Pending
2093 Read Notification until it has been enabled to do so by the Controller.
2094 Note:
2095 The method for configuring a Target to enable or disable IBIs with Pending Read Notifications is not
2096 defined by the I3C Basic Specification. This method might be a private contract between the
2097 Controller and the Target, or it might be defined for specific assigned MDB values in Table 13 (i.e.,
2098 with Interrupt Group Identifier value of 3’b101).
Active Controller
Received
Initiated by
Controller Send CCC
Active
Role GETSTATUS
Controller
Request
Target responds
Target unresponsive
Error
No
No
Send CCC
New Activity Send CCC Deep sleep
Yes “DEFTGTS”
State needed? ENTASx resync?
Broadcast
No No
No No
Controller No
Role Target still Poll until
Yes
Handoff processing? finished
Procedure
2180
2181 Figure 27 Pre-Handoff Steps Flow
2224 Some of these steps require the Active Controller to determine some of the optional Secondary Controller
2225 features and capabilities advertised by the Secondary Controller. In most cases, these can be determined by
2226 reading the data returned by the Secondary Controller in response to various CCCs with a Defining Byte (see
2227 Section 5.1.9.3.18 regarding the GETMXDS CCC with optional Defining Byte, and Section 5.1.9.3.19
2228 regarding the GETCAPS CCC with optional Defining Byte):
2229 • If the Active Controller has not already gathered this information and needs to determine whether
2230 the Secondary Controller requires special handling based on these features and capabilities, then it
2231 shall do so before taking any related steps that would require this information.
2232 • However, if the Active Controller has already gathered this information in advance, then it may
2233 rely on cached data, and does not need to gather it again.
2234 • Once all the data has been gathered, the Active Controller must make its decisions relating to the
2235 pre-Handoff flow steps, based on the data returned from the Secondary Controller.
2236 When the Active Controller has verified that the Bus is configured correctly, and the selected Secondary
2237 Controller indicates that it is ready to accept the Controller Role, the Active Controller shall initiate the
2238 Controller to Controller Handoff Procedure per Section 5.1.7.2 (next).
2285 Following this SCL falling edge, the new Active Controller shall actively drive SCL, while also
2286 driving SDA in Open Drain mode with the Arbitrable Address.
2287 After the Handoff procedure, the new active Controller (i.e., NCR in the steps above) should issue a START
2288 to assert its Controller Role within 100 μs, or the time interval indicated by its Activity State (as reported by
2289 the GETMXDS CCC with optional Defining Byte, per Section 5.1.9.3.18), whichever is greater. If the new
2290 Active Controller has not issued a START, then it shall respond to SDA being pulled Low by pulling SCL
2291 Low; this is a START, and the new Active Controller may follow it with any valid Bus activity that is
2292 sufficient to assert the Controller Role.
2293 However, if the new Active Controller does not pull SCL Low within 100 μs of SDA being pulled Low, then
2294 it might lose the Controller Role to the former Active Controller (i.e., ‘CCR’ in the steps above). To avoid a
2295 hung Bus, the former Active Controller should detect whether the new Active Controller has taken over the
2296 Bus per the Error Type CE3 flow described in Section 5.1.10.2.4.
2582 Terminology
2583 • T_C1: Target counter from Event occurrence to a Controller-initiated end-of-count (EOT_C1)
2584 point depending on Mode (e.g., IBI Acknowledged point in Mode 0).
2585 • T_C2: Target counter from EOT_C1 to a second Controller-initiated end-of-count, EOT_C2 (e.g.,
2586 T-Bit of IBI Mandatory byte in Mode 0).
2587 • aBE: Additional Bus Events, which are not used in Mode 0. These events are defined for other
2588 Async Modes, and are not supported in I3C Basic.
2589 Figure 28 illustrates the I3C Asynchronous Timing Control model. In this model, the I3C Controller Device
2590 maintains its own notion of time (“I3C Controller Ref Counter” in the Figure) using whatever timing source
2591 and units it needs; for example, a real-time clock, or a simple 32-bit rollover timer/counter. This notion of
2592 time allows the Controller to determine the relative timing among multiple events generated by different
2593 Targets. These relative time differences can then be used to correlate the Target-generated events, for example
2594 to support sensor fusion, to plot sensor events vs. absolute time, or for other purposes.
C_C2
C_REF
Count
T_C1 T_C2
0
0 t
2595 Time
2596 Figure 28 Graphical Representation of Async Mode 0 Timestamp Interpolation
2597 I3C Target Devices report the occurrence of sensor events to the I3C Controller using IBI, but because the
2598 IBI can be delayed before reaching the Controller, the Controller’s notion of time alone is not sufficient to
2599 accurately gauge event timing. For this reason, the Target maintains its own counter (“Target Device Counter
2600 (T_C1)” in Figure 28), driven by its own clock. At the time when the Target is able to generate the IBI to
2601 report the occurrence of a sensor event to the I3C Controller, the number of Target clocks elapsed since the
2602 event occurred (‘T_C1’ in the Figure) and the calibration period (‘T_C2’) shall be sent as IBI payload of the
2603 same IBI.
2604 The Target Device counts can be converted into Controller time via a Controller-provided method whereby
2605 the Target can measure the time between two points (‘EOT_C1’ and ‘EOT_C2’ in the Figure) as T_C1, in
2606 terms of number of its clock cycles whose approximate clock frequency is known to the Controller through
2607 the GETXTIME CCC, see Section 5.1.9.3.22). The Target then counts the time (T_C2) from EOT_C1 to
2608 EOT_C2, and then communicates both T_C1 and T_C2 to the Controller as IBI payload. This allows the
2609 Controller to correlate T_C1 and T_C2 with its own internal counter values C_REF and C_C2, respectively.
2610 The Controller knows the center clock frequency of the Target Device (again via the GETXTIME CCC), and
2611 can compare the Target-provided count with its expected value, given the known length of time reported by
2612 T_C2. The delta between the expected count and the actual count can be used as guidance to improve the
2613 accuracy of the SC2 value, derived from the GETXTIME CCC, and thereby the accuracy of the event’s
2614 calculated time-of-occurrence.
2615 Note that the higher the frequency of the Target clock vs. the effective SCL clock frequency during the T_C1-
2616 to-T_C2 measurement, the more accurate the error delta will be. This means that the Controller could gain
2617 more accuracy in the scale factor by extending the T_C1-to-T_C2 period.
2618 The Target shall report the T_C1 value as a 2-byte (16-bit) value, transmitting the Least Significant Byte first,
2619 and then the Most Significant Byte. The Target shall report the T_C2 value as a 1-byte value. If either count
2620 overflows (which can happen with a busy Bus with a large transaction), then the Target shall report values of
2621 all 1’b1 bits: 8’hFF for T_C2, and 16’hFFFF for T_C1.
2622 A Target may choose to not count T_C2 value if its counter’s clock source is insufficiently accurate, however
2623 in this case it shall report a value of 8’h00 for T_C2 in the IBI payload. A Controller receiving a T_C2 value
2624 of 8’h00 shall rely solely on the frequency value reported by GETXTIME for scaling. Targets having very
2625 stable clocks, especially when fast enough, could help the Controller achieve higher time-stamping accuracy
2626 by supporting and reporting the T_C2 count.
2627 In all supported Asynchronous Modes, the key points are:
2628 1. All I3C Devices supporting any of the Asynchronous Modes shall drive a Mandatory Byte after
2629 Acknowledgement of their IBI. As a result, the BCR[2] bit for these I3C Devices shall be set (i.e.,
2630 shall have the value 1’b1).
2631 In the Mandatory Byte:
2632 • Bits[7:5] shall be set to 3’b100, indicating that a timestamp follows.
2633 • Bits[4:0] shall be set by the Target and read by the Controller. These bits are typically used to
2634 convey some aspect of the event, and are interpreted according to a private contract between
2635 the two Devices.
2636 2. Two mutually identifiable Events on the I3C Bus between I3C Controller and I3C Target Devices:
2637 • End of T_C1 (EOT_C1): The T_C1 latch point and the start of the Calibration Window to count
2638 T_C2.
2639 The actual event used depends on which of the four Asynchronous Modes is being used. It could
2640 be either the IBI ACK point of the current IBI transaction, or an SCL edge, or some other event on
2641 the I3C Bus.
2642 • End of T_C2 (EOT_C2): The end of the Calibration Window.
2643 This event depends on which of the four Asynchronous Modes is being used. It could be either the
2644 T-Bit following the IBI’s Mandatory Byte for the current IBI transaction, or an SCL edge, or some
2645 other event on the I3C Bus.
2646 3. Additional common Events (aBE) are defined for other Asynchronous Modes, which are not
2647 supported in I3C Basic.
2648 4. After the Mandatory Byte, the Target shall send its timestamp values:
2649 • T_C1: The 16-bit timing counter from the original sensor-generated event
2650 • T_C2: An 8-bit reference/calibration count
2651 • aBE_TICKs: An optional 1-byte value indicating the number of aBEs that the Target has
2652 detected, from the sensor event to the IBI-ACK. These are not defined for Asynchronous
2653 Mode 0.
2654 The values of both T_C1 and T_C2 are in terms of the Target’s time scale. The Controller will convert these
2655 values into its own time scale, taking into consideration the Target’s counter clock frequency as reported by
2656 the GETXTIME CCC.
2657 In cases where the aBE event is used, the Controller then can calculate when the event occurred by taking
2658 the timestamp of the aBE event indicated by the Target (by count) and subtracting the time in T_C1 (translated
2659 to Controller time resolution).
2660 In order to support a wide range of applications, several degrees of accuracy are required for such timing
2661 related information. As a result, I3C Basic provides Asynchronous Mode 0 which is detailed in
2662 Section 5.1.8.3.1. Asynchronous Mode 0 provides a moderate level of accuracy, and presents a simple
2663 implementation for the Controller and/or Target. The SETXTIME CCC (see Section 5.1.9.3.21) is used to
2664 enter Asynchronous Mode 0, using the Sub-Command Byte field to select the desired Mode.
2665 Note:
2666 The full I3C Specification defines additional Timing Control modes that present additional choices,
2667 including different levels of accuracy and distinct complexity tradeoff options for the Controller and/or
2668 Target. I3C Controllers that support the full I3C Specification may optionally use the same SETXTIME
2669 CCC to enter these other Timing Control modes, and I3C Targets that support the full I3C
2670 Specification might optionally implement support for such Timing Control modes. However, such
2671 Timing Control modes shall not be supported by or enabled by any I3C Devices that support the I3C
2672 Basic Specification.
2673 These other Timing Control modes are not included in I3C Basic. To gain access to these other
2674 Timing Control modes, please contact MIPI Alliance.
SENSOR
Sensor starts T_C1 counter Sensor starts T_C2
CONTROLLER
Controller’s (calculated) C_REF Captured &
Timestamp C_TS C_C2 counter started C_C2 Captured
Virtual C_C1
Target to Controller
2692 Figure 29 illustrates the basic sequence of operations during a simple asynchronous time information
2693 transfer:
2694 1. The top black baseline shows the events visible outside of the Target and the Controller
2695 2. The middle (red) baseline shows the activity inside the Target’s timing counters
2696 3. The bottom black baseline presents the virtual and real activity inside the Controller’s timing
2697 counter
2698 In more detail, Figure 29 illustrates that:
2699 1. At sensor sampling/event time, the Target shall start its internal timing counter, and initiate the IBI
2700 request.
2701 2. If the IBI request is accepted, then:
2702 a. Immediately:
2703 • The Target shall record its internal timing counter, T_C1
2704 • The Controller shall record its internal timing counter, C_REF
2705 b. At the T-Bit of the IBI payload’s mandatory byte:
2706 • The Target shall record its internal timing counter, T_C2
2707 • The Controller shall record its internal timing counter, C_C2
2708 c. The Target shall transfer the recorded T_C1 & T_C2 values in the prescribed order.
2709 3. If the IBI request is not accepted, then:
2710 • The Target shall continue to increment its own counter for T_C1
2711 • The Target shall wait for the next opportunity for the IBI request to be issued & accepted
2712 • When the IBI request is eventually accepted, the Target shall proceed as described in step 2
2713 above.
2714 4. Evaluating the timing counter data:
2715 If the numbers are non-zero, then the Controller calculates the real time interval based on its
2716 internal timing counter, using the formula:
2717 C_TS = C_REF – C_C2 * T_C1 / T_C2
2718 • If T_C1 is zero, then no time information is assigned to the event
2719 • If T_C2 is zero, then the scaling shall be done based on the Target Device counter’s clock
2720 frequency as can be read with GETXTIME CCC.
2721 Note that the above method of recovering the target event’s timestamp is only suitable for periods during
2722 which the Target clock is appropriately stable. The calibration time available is the duration elapsed between
2723 EOT_C1 and EOT_C2, which in this mode is 9-bit durations on the I3C Bus for the Mandatory Byte. To
2724 enable better calibration for Targets using low-frequency clocks, the Controller may optionally use clock
2725 Stalling during the Mandatory Byte transfer, thus lengthening the calibration window; however, clock
2726 Stalling has the disadvantage that IBIs will consume more I3C Bus time.
2727 If better calibration is required and clock Stalling is not an option, then other, more refined procedures can
2728 be used.
2797 All CCC Commands share the same general Frame format, which is shown in Figure 30 for Broadcast CCCs, and in Figure 31 for Direct CCCs. Each CCC
2798 Command has a unique Command Code. The fields within this Frame format are detailed in Table 15.
P
S Defining
Broadcast Data
7’h7E Byte Target Addr
CCC (Optional)
/ W / ACK (Optional) / RnW / ACK
/T /T Sr
/T
Sr 7’h7E
Next CCC
/ W / ACK
2799
2800 Figure 30 CCC Broadcast General Frame Format
P
S Sub-
Defining Target Addr
Direct Command Data P
7’h7E Byte or
CCC Sr Byte (Per CCC)
/ W / ACK (Per CCC) Group Addr
/T (Per CCC) /T 7’h7E Target Addr
/T / RnW / ACK Sr / W / ACK
Sr / RnW / ACK
/T
Sr
Next CCC
2801
2802 Figure 31 CCC Direct General Frame Format
2868 In order to properly distinguish a Direct CCC sent without a Defining Byte from one sent with a Defining
2869 Byte, each Target shall track the Command Code value as well as the Defining Byte value (if present), and
2870 then respond appropriately when it sees a Repeated START before its own matched Address. In effect, the
2871 Target can regard such a Direct CCC either as an 8-bit Command Code, or as a 16-bit Command Code that
2872 includes the optional Defining Byte.
2873 If the Target supports a Direct CCC without a Defining Byte, but does not support that same Direct CCC
2874 when used with a particular Defining Byte value, then it shall NACK the Direct CCC Command after the
2875 Target Address. The Controller shall then assume that the Target does not support that particular Defining
2876 Byte for that Direct CCC; however, the Controller shall not infer the presence or absence of any particular
2877 Target feature or capability based solely upon the fact that the Target NACKed that particular combination
2878 of CCC and Defining Byte. The Controller should also not assume that the Target does not generally support
2879 the Direct CCC.
2880 Note:
2881 The Controller is responsible for determining whether the Target supports any given Defining Bytes
2882 for a given CCC. Depending on the particular CCC, this can usually be determined by checking other
2883 status bits or capabilities advertised by the Target, such as by reading a value returned from a Direct
2884 GET CCC without a Defining Byte.
2885 The Controller must also determine whether the Target supports Defining Bytes at all (i.e., whether
2886 the Target complies with v1.1 or higher of either the I3C Basic Specification or the full I3C
2887 Specification). If the Controller attempts to send a Direct CCC with a Defining Byte to a Target that
2888 does not comply with either I3C Basic v1.1.1 or higher or I3C v1.1 or higher, then the results may be
2889 undefined.
SETMWL
0x09 Broadcast R6 N N 5.1.9.3.5 Maximum write length in a single command
Set Max Write Length
SETMRL
0x0A Broadcast R7 N N 5.1.9.3.6 Maximum read length in a single command
Set Max Read Length
ENTTM
0x0B Broadcast O N N 5.1.9.3.8 Controller has entered Test Mode
Enter Test Mode
SETBUSCON Controller specifies a higher-level protocol and/or I3C
0x0C Broadcast O N N 5.1.9.3.31
Set Bus Context specification version that the Bus will use
0x0D – 0x11 – N/A – – MIPI Reserved – Reserved for future use by MIPI Alliance
Framework for Controllers and Targets to exchange set-
up parameters for ending data transfers in supported
ENDXFER
0x12 Broadcast C R N 5.1.9.3.25 HDR Modes
Data Transfer Ending Procedure Control
Required If: Target supports HDR Flow Control per
Section 5.2.2.3
0x13 – 0x1E – N/A – – MIPI Reserved – Reserved for future use by MIPI Alliance
Dummy command code only, for use during CCC flows
Reserved in HDR Modes, to signal the end of CCC modality and
0x1F N/A C – – For use in special CCC flows for HDR Modes 5.2.1.2.1 return to generic HDR transaction
only. Required If: Target supports CCC flows in HDR Modes
(e.g., HDR-DDR)
Controller has entered HDR-DDR Mode
ENTHDR0
0x20 Broadcast C3 N N 5.1.9.3.9 Required If: Target supports HDR Mode 0 per
Enter HDR Mode 0
Section 5.2
Controller has entered HDR-TSP Mode
ENTHDR1
0x21 Broadcast N3 N N 5.1.9.3.9 This HDR Mode is not included in the I3C Basic
Enter HDR Mode 1
Specification
Controller has entered HDR-TSL Mode
ENTHDR2
0x22 Broadcast N3 N N 5.1.9.3.9 This HDR Mode is not included in the I3C Basic
Enter HDR Mode 2
Specification
Controller has entered HDR-BT Mode
3 ENTHDR3
0x23 Broadcast C N N 5.1.9.3.9 Required If: Target supports HDR Mode 3 per
Enter HDR Mode 3
Section 5.2
RSTACT
0x2A Broadcast R R N 5.1.9.3.26 Configure and query Target Reset action and timing
Target Reset Action
Controller tells Secondary Controllers details about an
DEFGRPA indicated Group Address
0x2B Broadcast C N N 5.1.9.3.29
Define List of Group Address Required If: Device is a Secondary Controller and
supports Group Addressing per Section 5.1.4.4
Controller removes a Target from an indicated Group
RSTGRPA Address by resetting the assigned Group Address
0x2C Broadcast C N N 5.1.9.3.28
Reset Group Address Required If: Target supports Group Addressing per
Section 5.1.4.4
MLANE Control a Multi-Lane Data Transfer
0x2D Broadcast C R N 5.1.9.3.30
Multi-Lane Data Transfer Control Required If: Target supports Multi-Lane per Section 5.3
0x2E – 0x48 – N/A – – MIPI I3C WG Reserved – Reserved for future use by MIPI Alliance I3C WG
– – Reserved for future use by MIPI Alliance Camera
0x49 – 0x4C Broadcast N/A MIPI Camera WG Reserved – Broadcast CCCs –
Working Group
0x4D – 0x57 Broadcast N/A – – MIPI Reserved – Broadcast CCCs – Reserved for future use by other MIPI Working Groups
0x58 – 0x5B Broadcast N/A – – MIPI Debug WG Reserved – Broadcast CCCs – Reserved for use by MIPI Alliance Debug Working Group
0x5C – 0x60 Broadcast N/A – – MIPI RIO WG Reserved – Broadcast CCCs – Reserved for use by MIPI Alliance RIO Working Group
– – Vendor / Standards Extension –
0x61 – 0x7F Broadcast N/A – For Vendor or Standards10 use
Broadcast CCCs
ENEC Enable Target event driven interrupts
0x80 Direct R N N 5.1.9.3.1
Enable Events Command Default State: On
DISEC Disable Target event driven interrupts
0x81 Direct R N N 5.1.9.3.1
Disable Events Command Default State: Off
Set Activity Mode to State 0 (normal operation).
ENTAS0 Default State: On
0x82 Direct C1 N N 5.1.9.3.2
Enter Activity State 0 Required If: Target supports any other ENTASx CCC
per Section 5.1.9.3.2
ENTAS1 Set Activity State 1
0x83 Direct O1 N N 5.1.9.3.2
Enter Activity State 1 Default State: Off
ENTAS2 Set Activity State 2
0x84 Direct O1 N N 5.1.9.3.2
Enter Activity State 2 Default State: Off
ENTAS3 Set Activity State 3
0x85 Direct O1 N N 5.1.9.3.2
Enter Activity State 3 Default State: Off
DEPRECATED: v1.1 Controllers shall not use
0x86 Direct R – – RSTDAA Direct 5.1.9.3.3 v1.0 Controllers should not use
Reset Dynamic Address Assignment v1.1 Targets shall NACK
0x9E – 0xBF Direct N/A – – MIPI I3C WG Reserved – Direct CCCs – Reserved for future use by MIPI Alliance I3C WG
0xC0 – 0xC3 Direct N/A – – MIPI Camera WG Reserved – Direct CCCs – Reserved for future use by MIPI Alliance Camera WG
0xC4 – 0xD6 Direct N/A – – MIPI Reserved – Direct CCCs – Reserved for future use by other MIPI Alliance WGs
0xD7 – 0xDA Direct N/A – – MIPI Debug WG Reserved – Direct CCCs – Reserved for use by MIPI Alliance Debug WG
0xDB – 0xDF Direct N/A – – MIPI RIO WG Reserved – Direct CCCs – Reserved for use by MIPI Alliance RIO WG
0xE0 – 0xFE Direct N/A – – Vendor / Standards Extension – Direct CCCs – For Vendor or Standards10 use
0xFF – N/A – – MIPI I3C WG Reserved – Reserved for future use by MIPI Alliance I3C WG
Note:
1) Target Devices may self-power-manage based on this information.
2) Applies to Target Devices that support a variable limit on the maximum number of data bytes per Message, where that limit may exceed 16 bytes.
3) All I3C compliant Targets shall recognize that the Bus is entering an HDR Mode, and detect the HDR Exit Pattern.
4) This CCC shall be supported by Target Devices with Bus Control Register (BCR) Bit[0] set to 1’b1.
5) This CCC shall be supported by Target Devices that support any HDR Mode.
6) See Section 5.1.9.3.5 Set/Get Max Write Length (SETMWL/GETMWL).
7) See Section 5.1.9.3.6 Set/Get Max Read Length (SETMRL/GETMRL).
8) This CCC shall be supported by all I3C Basic v1.1.1 Devices. However, it was not included in v1.0 of the I3C Basic Specification (see Section 5.1.9.3.19).
9) A Target Device that will only ever be used on special-purpose I3C Buses that do not require Enter DAA may choose to not implement support for the ENTDAA CCC. (Such
special-purposes I3C Buses use static addresses via SETAASA/SETDASA instead of ENTDAA). Such a Target may also choose not to implement support for the
SETNEWDA CCC, per Section 5.1.9.3.11; in this case, the Target’s Static Address effectively becomes its fixed Dynamic Address.
10) Standards use of Vendor CCC’s controlled by Bus Context. (See Section 5.1.9.3.31 and public registry at
https://www.mipi.org/MIPI_I3C_bus_context_byte_values_public.html [MIPI07].
P
S Direct
Enable/
ENEC/ P
7’h7E Target Addr Disable Target
DISEC Sr
/ W / ACK / W / ACK Events Byte
CCC 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
/T
Sr
Next CCC
Enable/ P
S Broadcast
Disable
ENEC/
7’h7E Target Target Addr
DISEC
/ W / ACK Events / RnW / ACK
CCC
Byte Sr
Sr /T 7’h7E
/T Next CCC
/ W / ACK
2945
2946 Figure 33 ENEC/DISEC Format 2: Broadcast
2947 Table 18 and Table 19 show the bits to set in the Target Events Byte to enable and disable, respectively, the four supported I3C Target/Secondary Controller event
2948 types. Reserved bits are for future MIPI use.
2949 Table 18 Enable Target Events Command Byte Format
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0
Reserved ENHJ Reserved ENCR ENINT
P
S
Direct
P
7’h7E ENTASx Target Addr
CCC Sr / W / ACK
/ W / ACK 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
Repeat to address
additional Targets
with this Direct CCC
2971
2972 Figure 34 ENTASx Format 1: Direct
P
S Broadcast
7’h7E ENTASx Target Addr
/ W / ACK CCC / RnW / ACK
/T Sr
Sr 7’h7E
Next CCC
/ W / ACK
2973
2974 Figure 35 ENTASx Format 2: Broadcast
2975 Table 21 gives the expected minimum Bus activity interval for each Activity State.
2976 Table 21 Enter Activity State CCCs (ENTASx)
P
S Broadcast
7’h7E RSTDAA Target Addr
/ W / ACK CCC / RnW / ACK
/T Sr
Sr 7’h7E
Next CCC
/ W / ACK
2982
2983 Figure 36 RSTDAA Format
P
S Direct
SETMWL P
7’h7E or Target Addr MWL MSB MWL LSB
Sr
/ W / ACK GETMWL / RnW / ACK /T /T 7’h7E Target Addr
CCC Sr / W / ACK
Sr / RnW / ACK
Sr /T
Next CCC
P
S Broadcast
7’h7E SETMWL MWL MSB MWL LSB Target Addr
/ W / ACK CCC /T /T / RnW / ACK
/T Sr
Sr 7’h7E
Next CCC
/ W / ACK
3000
3001 Figure 39 Broadcast SETMWL Format
P
S Direct
SETMRL IBI Payload
P
7’h7E or Target Addr MRL MSB MRL LSB Size
GETMRL Sr / RnW / ACK (Optional)
/ W / ACK /T /T 7’h7E Target Addr
CCC /T Sr / W / ACK
Sr / RnW / ACK
Sr /T
Next CCC
3015
3016 Figure 40 Direct SETMRL/GETMRL Format
IBI P
S Broadcast Payload
7’h7E SETMRL MRL MSB MRL LSB Target Addr
Size
/ W / ACK CCC /T /T (Optional) / RnW / ACK
/T Sr
Sr /T 7’h7E
Next CCC
/ W / ACK
3017
3018 Figure 41 Broadcast SETMRL Format
P
Target or DCR Type BCR Type Static
Group Target Target Addr Target Addr
Addr or Group or Group / 1'b0 / RnW / ACK
/ 1'b0 Sr
/T /T /T
/T 7’h7E
Next CCC
/ W / ACK
3030
3031 Figure 42 DEFTGTS Format See Errata 01, Item 15
3032 Count is the number of Targets and Groups present on the I3C Bus. Each Target or Group is represented by a set of four data bytes, as specified in Table 24.
3033 Note:
3034 For each configured Group Address, the DEFGRPA CCC (see Section 5.1.9.3.29) is used to provide more information about the Group, such as the list of
3035 I3C Targets that have been assigned to that Group Address.
3036 Table 24 DEFTGTS Data Bytes for Target or Group
3037 The Active Controller shall not send the DEFTGTS CCC unless at least one Secondary Controller Device is present on the I3C Bus. The Active Controller shall
3038 send the DEFTGTS CCC following every Hot-Join event (i.e., after each Dynamic Address Assignment), and as necessary, i.e., when any Dynamic Address or
3039 Group Address changes must be sent to Secondary Controller Devices.
P
S Broadcast
Test Mode
7’h7E ENTTM Target Addr
Byte
/ W / ACK CCC / RnW / ACK
/T Sr
/T
Sr 7’h7E
Next CCC
/ W / ACK
3044
3045 Figure 43 ENTTM Format
P
S 7-bit
Direct
Target Addr Dynamic P
7’h7E SETDASA
Sr (Static) Address
/ W / ACK CCC
/ W / ACK / 1'b0 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
/T
Sr
Next CCC
3067
3068 Figure 44 SETDASA Format 1: Primary
P
S
Direct
7'h01 7'h01 P
7’h7E SETDASA
Sr (Static) / 1'b0
/ W / ACK CCC
/ W / ACK /T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3084
3085 Figure 45 SETDASA Format 2: Point-to-Point
P
S New 7-bit
Direct
Target Addr Dynamic P
7’h7E SETNEWDA
Sr (Current) Address
/ W / ACK CCC
/ W / ACK / 1'b0 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
/T
Sr
Next CCC
3103
3104 Figure 46 SETNEWDA Format
GETPID Bytes P
S
Direct P
7’h7E GETPID Target Addr
CCC Sr / R / ACK
/ W / ACK Byte 5 Byte 4 Byte 3 Byte 2 Byte 1 Byte 0 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
/T /T /T /T /T /T
Sr
Next CCC
3109
3110 Figure 47 GETPID Format
P
S
Direct
GETBCR P
7’h7E GETBCR Target Addr
Sr Byte
/ W / ACK CCC / R / ACK
/T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3115
3116 Figure 48 GETBCR Format
P
S
Direct
GETDCR P
7’h7E GETDCR Target Addr
Sr Byte
/ W / ACK CCC / R / ACK
/T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3121
3122 Figure 49 GETDCR Format
GETSTATUS P
S
Direct P
7’h7E GETSTATUS Target Addr
CCC Sr / R / ACK
/ W / ACK MSB LSB 7’h7E Target Addr
/T Sr Sr
/T /T / W / ACK / RnW / ACK
Sr
Next CCC
3129
3130 Figure 50 GETSTATUS Format 1
GETSTATUS Format 2
3132 The optional GETSTATUS Format 2 (Figure 51) adds a Defining Byte (Table 28) and returns a variable number of data bytes. The number of data bytes returned
3133 and their format depend upon the Defining Byte value.
3134 Support for the GETSTATUS Format 2 CCC is optional, typically depending upon the Device’s role, capabilities, or other extended behavior. Before using
3135 GETSTATUS Format 2 for a given Target, a Controller shall determine whether that Target supports it. One way is to send the GETCAPS Format 1 CCC (no
3136 Defining Byte) and find that in Byte 3 (GETCAP3) of the data that the Target returns, bit 4 contains 1’b1 (see Table 37)
3137 GETSTATUS Format 2 conforms to the CCC Direct General Frame Format (Figure 31):
3138 • If the addressed Target Device does not support the given Defining Byte value for GETSTATUS Format 2: Then the Target shall NACK its Target
3139 Address, thus terminating the Direct CCC.
3140 • If the addressed Target Device does support the given Defining Byte value for GETSTATUS Format 2: Then the Target shall ACK its Target Address and
3141 return the requested data byte(s). The number of data bytes returned shall depend on the particular Defining Byte and its associated capabilities, as
3142 detailed below.
3143 • If the addressed Target Device is unable to immediately respond to the GETSTATUS Format 2 CCC with the given Defining Byte: Then, per the Retry
3144 Model for Direct GET CCC Commands (Section 5.1.9.2.3), the Target shall NACK the first attempt, and then the Controller shall attempt a single retry.
3145 If the Controller receives a NACK after a retry, then the Controller shall assume that the Target does not support the GETSTATUS Format 2 CCC with
3146 the given Defining Byte, and hence cannot return data describing any capabilities corresponding to that Defining Byte value. In most cases the
3147 Controller can proceed as though it had read a value equivalent to all zeros as a default value. However, a NACK after a retry does not guarantee that the
3148 Target does not possess any capability or feature set associated with the given Defining Byte value.
3149 A Target that supports the GETSTATUS Format 2 CCC (i.e., GETSTATUS with any optional Defining Bytes) shall return a value of 1’b1 in bit 4 of Byte 3
3150 (GETCAP3), when the GETCAPS CCC is sent without a Defining Byte. A Controller that sees that bit set to 1’b1 will know that the Target is capable of supporting
3151 at least one Defining Byte with the GETSTATUS Format 2 CCC. The ACK/NACK method explained above allows the Target to indicate which Defining Byte
3152 values it actually supports.
GETSTATUS Format 2
Length Depends Upon Defining Byte
P
S
Direct P
7’h7E Defining
GETSTATUS Target Addr
Byte Sr
/ W / ACK CCC / R / ACK Byte0 ... ByteN 7’h7E Target Addr
/T Sr Sr
/T /T /T / W / ACK / RnW / ACK
Sr
Next CCC
3153
3154 Figure 51 GETSTATUS Format 2
P
S
Direct PRECR P
7’h7E PRECR PRECR
GETSTATUS Defining Target Addr
Sr MSB LSB
/ W / ACK CCC Byte / R / ACK
/T /T 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3187
3188 Figure 52 GETSTATUS Format 2 with Defining Byte PRECR
3189 Table 29 Status Bytes for GETSTATUS Format 2 with Defining Byte PRECR
Byte Bits Field Description
MSB 15:8 Vendor Reserved Reserved for vendor-specific meaning.
7:2 Reserved Reserved for future definition by MIPI Alliance I3C WG.
1 Handoff Delay This bit indicates whether this Device is currently processing any DEFTGTS CCC (and DEFGRPA CCC, if supported)
NACK Broadcasts that may have been sent by the Active Controller. It is expected that this Device might take significant time to
process the data in such Broadcasts.
1’b1: The Active Controller may wait to send GETACCCR CCC to this Device, or should at least be aware that any
attempts to send GETACCCR CCC to this Device will be met with a NACK response, until this bit is read again later with
a value of 1’b0, to indicate that the Device has finished processing the data in these Broadcasts and has updated its
internal state.
LSB
1’b0: This Device is not currently processing Broadcast data, or has finished processing this data; in either case, it can
safely accept the Controller Role.
0 Deep Sleep This bit indicates whether this Device has entered a “deep sleep” state, in which it might have missed any DEFTGTS CCC
Detected (and DEFGRPA CCC, if supported) Broadcasts sent by the Active Controller. Consequently, this Device’s internal state of
known Target Devices (and known Group Addresses, if applicable) should be considered outdated.
1’b1: The Active Controller is obligated to send a fresh Broadcast of DEFTGTS CCC (and DEFGRPA CCC, if applicable
and supported) to update this Device’s internal state before sending GETACCCR CCC to this Device.
1’b0: This Device has not entered a “deep sleep” state, or is not capable of doing so.
S 7-Bit
Direct Target Addr Dynamic
7’h7E GETACCCR (Secondary
Sr Address P
/ W / ACK CCC Controller) / PAR
/T / R / ACK
/T
Sr
3211
3212 Figure 53 GETACCCR Format 1: Accepted
3213 Note:
3214 The value of the 7-Bit Dynamic Address will be the same as the value of the Target Address, and PAR is odd parity: ~XOR( Target Address[7:1] ).
P
S
Direct Target Addr Target Addr
Sr / RnW / ACK
7’h7E GETACCCR (Secondary 7’h7E
CCC Sr Controller)
Sr / W / ACK
/ W / ACK
/T / R / NACK
Sr Next CCC
3215
3216 Figure 54 GETACCCR Format 2: Not Accepted
P
S Incorrect
Direct Target Addr 7-Bit Target Addr
Sr / RnW / ACK
7’h7E GETACCCR (Secondary Dynamic 7’h7E
CCC Sr Controller) Address Sr / W / ACK
/ W / ACK
/T / R / ACK / PAR
Sr /T Next CCC
3217
3218 Figure 55 GETACCCR Format 3: Incorrect Cancel
P
S
Direct Dynamic ID k ID k P
7’h7E SETBRGTGT Target Addr Count Address k
Sr MSB LSB
/ W / ACK CCC / W / ACK /T / 1'b0 7’h7E Target Addr
/T /T /T Sr Sr
/T / W / ACK / RnW / ACK
Sr
Next CCC
3232 Note:
3233 1. If the Controller needs to change the Dynamic Address of a bridged Target that was configured using SETBRGTGT, then the change shall be performed
3234 using an updated SETBRGTGT, and not SETNEWDA.
3235 2. The Controller shall not rely on each bridged Target having a unique BCR, DCR, or PID; so, use of GETBCR, GETDCR, and GETPID may return the
3236 same result for each.
3237 3. The Controller shall not rely on each bridged Target handling directed CCCs as unique. So, for example, SETMRL to one bridged Target may affect all
3238 Targets accessed via the same bridge.
3239 4. Use of GETMXDS is recommended for bridged Targets, such that each may return its own appropriate values based on protocol being bridged to.
t2 t4
D Q
t1 D Q
PAD t3 PAD
Clock SCL
t8 t6
Q D
t9 Q D
PAD t7 PAD
iData SDA
t5 = tSCO
3253 Any Target Devices with a Clock-to-Data turnaround (tSCO) delay greater than 12 ns shall set the Clock to Data Turnaround field of the maxRD Byte to 3’b111 and
3254 report this value to the Controller by private agreement.
3255 Maximum Read Turnaround Time is used to notify the Controller how long to wait before reading the data it requested. This allows the Controller to get the Target
3256 Device’s turnaround delay time for data read requests (excluding In-Band Interrupt responses). This is useful because some Targets may exhibit data read delays
3257 (as contrasted with CCC reads) due to clock-starting effects, bridging, slower inner processors, etc. The Controller can use the returned delay factor to avoid
3258 NACKs that would result from reading the Device too soon. The Target may have the data ready before the time reported, and the Controller can also estimate the
3259 time and retry reading before the maximum Read Turnaround time. The Controller should be aware that any NACKs for read requests from the Target before the
3260 maximum time is a normal condition, and no recovery methods are required; by contrast, NACKs after the maximum Data Turnaround time shall be dealt with
3261 accordingly.
3262 Bit[6] of the maxRd byte indicates whether the Controller may insert a STOP between the Write (index) and the Read. If the value of Bit[6] is 1’b1, then the
3263 Controller can use the extra time for other communications or end the communication and re-initiate it at the appropriate time. If the value of Bit[6] is 1’b0, then
3264 the Controller shall keep within one Frame. If the Maximum Read Turnaround time is more than a few micro-seconds, then the Target should permit STOP between
3265 the Write and Read.
3266 Note:
3267 This CCC relates to bit data rates and Read Turnaround times, not data sizes. Data sizes are the subject of the CCCs Get Max Read Length (GETMRL, see
3268 Section 5.1.9.3.6) and Get Max Write Length (GETMWL, see Section 5.1.9.3.5).
3269 The Target Device shall return:
3270 Either:
3271 • GETMXDS Format 1: Two data bytes containing the Target Device’s Maximum Write Speed and Maximum Read Speed (see Figure 58),
3272 Or:
3273 • GETMXDS Format 2: Five data bytes containing the Target Device’s Maximum Write Speed, Maximum Read Speed, and a three-byte Maximum Read
3274 Turnaround Time (see Figure 59).
3275 The Target signals which Format it is returning via the number of returned data bytes: Two bytes indicates Format 1, and five bytes indicates Format 2.
3276 The Target’s selection of Format 1 vs. Format 2 should be based upon whether Maximum Read Turnaround Time needs to be communicated to the Controller
3277 Device.
3278 Interpretation of the returned fields maxWr, maxRd, and (for Format 2 only) maxRdTurn is shown in Table 30, Table 31, and Table 32 respectively.
3279 When reading the GETMXDS value from a Target, the SCL clock rate should be slowed (by frequency or duty cycle) to accommodate a possible slow Clock-to-
3280 Data turnaround (tSCO). This is only needed if the BCR bit has indicated a limitation. If BCR is not known (e.g., if SETDASA or SETAASA was used), then either
3281 read GETBCR slowly, or simply read GETMXDS slowly no matter what. See also Section 5.1.4 BCR Use in the MIPI I3C System Integrators App Note [MIPI03].
3282 The Command Code for the GETMXDS Direct CCC is 0x94. Support for this CCC is required if Bit[0] of the I3C Target’s Bus Control Register (BCR) is set to
3283 1’b1.
P
S
Direct P
7’h7E GETMXDS Target Addr MaxWr MaxRd
CCC Sr / R / ACK
/ W / ACK /T /T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
P
S
Direct 3 Bytes P
7’h7E GETMXDS Target Addr MaxWr MaxRd
Sr MaxRdTurn
/ W / ACK CCC / R / ACK /T /T 7’h7E Target Addr
/T Sr Sr
/T / W / ACK / RnW / ACK
Sr
Next CCC
3286
3287 Figure 59 GETMXDS Format 2: With Turnaround
GETMXDS Format 3
3291 Additionally, some I3C Devices may support this CCC with an optional Defining Byte (Figure 60), to return other capabilities based on the value of the Defining
3292 Byte. This support may be required as part of the Device’s role, capabilities, or other extended behavior. It is the Controller’s responsibility to determine whether
3293 the Device supports this CCC with an optional Defining Byte. The Controller may determine whether the Target has such support, by first sending this CCC without
3294 a Defining Byte, and checking for a value of 1’b1 in bit 3 of Byte 1 (maxWr) in the data read from the Target (see Table 31).
P
S
Direct P
7’h7E Defining
GETMXDS Target Addr GET Byte(s)
Byte Sr
/ W / ACK CCC / R / ACK /T
7’h7E Target Addr
/T Sr Sr
/T / W / ACK / RnW / ACK
Sr
Next CCC
3295
3296 Figure 60 GETMXDS Format 3: With Defining Byte
3297 To read the other Device capabilities accessed via a Defining Byte, the Controller shall send this CCC with a Defining Byte, according to the CCC Direct General
3298 Frame Format (Figure 31). If the Device identified by the Target Address does not support a particular Defining Byte value for this CCC, then it shall NACK its
3299 Target Address to terminate the Direct CCC. If the Device does support a particular Defining Byte, then it shall ACK its Target Address and return additional bytes
3300 of data. The length of the data returned shall depend on the particular Defining Byte and its associated capabilities (see Table 33 for supported Defining Byte
3301 values; see subsections below for specifics per Defining Byte value).
3303 According to the Retry Model for Direct GET CCC Commands, if a Device cannot provide an immediate response to this CCC with a particular Defining Byte,
3304 then it shall NACK the first attempt, and then the Controller shall attempt a single retry (see Section 5.1.9.2.3). If the Controller receives a NACK after a retry,
3305 then the Controller shall assume that the Device does not support this CCC with this particular Defining Byte, and hence has no data that would be returned for
3306 any capabilities relating to that Defining Byte value. In most cases, the Controller may proceed as though it read a value equivalent to all zeros as a default value.
3307 However, a NACK after a retry should not be interpreted as meaning that the Device does not possess a capability or feature set associated with that Defining Byte
3308 value.
3309 A Target that supports this CCC with any optional Defining Bytes shall return a value of 1’b1 in bit 3 of Byte 1 (maxWr) when this CCC is sent without a Defining
3310 Byte. If the Controller sees that bit set to 1’b1, then it knows that the Target is capable of supporting at least one Defining Byte with this CCC. The ACK/NACK
3311 method explained above allows the Target to indicate which Defining Byte values it actually supports.
Get Controller Handoff Delay Parameters (GETMXDS Format 3, Defining Byte CRHDLY)
3312 This Direct CCC with Defining Byte value CRHDLY (Figure 61) allows the Active Controller to query a Controller-capable (i.e., Secondary Controller) I3C
3313 Device, to read what optional Controller handoff delays or other timing parameters that Device will utilize. It is anticipated that a Device may advertise these
3314 parameters, to indicate whether it will enter an Activity State that requires the Active Controller to wait for an appropriate delay, before confirming its Controller
3315 Role or attempting the CE3 Error Recovery flow.
3316 It is recommended that all Controller-capable Devices should support this CCC with this Defining Byte in Target mode. If such a Device does not follow the default
3317 delay settings, or if it indicates other non-default timing parameters, then the Device shall support this Defining Byte.
3318 A Controller-capable Device may return one data byte, labeled CRHDLY1 per Figure 61.
3319 A Device that is not Controller-capable shall NACK its Target Address, to indicate that it does not support this CCC with this particular Defining Byte.
3320 Fields within the CRHDLY1 Byte are detailed in Table 34.
P
S
Direct CRHDLY P
7’h7E GETMXDS Defining Target Addr CRHDLY1
CCC Byte Sr / R / ACK /T
/ W / ACK 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3321
3322 Figure 61 GETMXDS Format 3 With Defining Byte CRHDLY
3335
3336 Figure 62 GETCAPS Format 1
3337 Note:
3338 An I3C Controller that supports I3C Basic version 1.1 or greater might be used with an I3C Target Device that supports version 1.0 of the full I3C
3339 Specification. In this case, such an I3C Target might support some HDR Modes (such as HDR-DDR), and might only return one byte (i.e., only the
3340 GETCAP1 Byte) as a response to the GETCAPS CCC (see note in Table 5). Therefore, the I3C Controller must recognize this as a valid configuration,
3341 even though the I3C Target would return just a single byte and would have limited capabilities. Figure 62 is provided as a reference for I3C Target Devices
3342 that support version 1.1 of the I3C Basic Specification and must return at least 2 bytes as a response to the GETCAPS CCC.
3354 Note:
3355 An I3C Target that supports I3C Basic shall not indicate support for any of the features or capabilities marked as “Not included in I3C Basic” in Table 37.
3356 An I3C Controller that supports supports any version of the I3C Basic Specification might receive a GETCAP3 Byte from an I3C Target that supports the full
3357 I3C Specification, and might also support some of the features or capabilities marked as “Not included in I3C Basic”. In such a case, the I3C Controller must
3358 ignore any such features or capabilities reported by the I3C Target, as the I3C Controller would not support them.
GETCAPS Format 2
3360 The optional GETCAPS Format 2 (Figure 63) adds a Defining Byte (Table 39) and returns a variable number of data bytes. The number of data bytes returned and
3361 their format depend upon the Defining Byte value.
3362 Support for the GETCAPS Format 2 CCC is optional, typically depending upon the Device’s role, capabilities, or other extended behavior. Before using GETCAPS
3363 Format 2 for a given Target, a Controller shall determine whether that Target supports it. One way is to send the GETCAPS Format 1 CCC (no Defining Byte) and
3364 find that in Byte 3 (GETCAP3) of the data that the Target returns, bit 4 contains 1’b1 (see Table 37)
3365 GETCAPS Format 2 conforms to the CCC Direct General Frame Format (Figure 31):
3366 • If the addressed Target Device does not support the given Defining Byte value for GETCAPS Format 2: Then the Target shall NACK its Target Address,
3367 thus terminating the Direct CCC.
3368 • If the addressed Target Device does support the given Defining Byte value for GETCAPS Format 2: Then the Target shall ACK its Target Address and
3369 return the requested data byte(s). The number of data bytes returned shall depend on the particular Defining Byte and its associated capabilities, as
3370 detailed below.
3371 • If the addressed Target Device is unable to immediately respond to the GETCAPS Format 2 CCC with the given Defining Byte: Then, per the Retry
3372 Model for Direct GET CCC Commands (Section 5.1.9.2.3), the Target shall NACK the first attempt, and then the Controller shall attempt a single retry.
3373 If the Controller receives a NACK after a retry, then the Controller shall assume that the Target does not support the GETSTATUS Format 2 CCC with
3374 the given Defining Byte, and hence cannot return data describing any capabilities corresponding to that Defining Byte value. In most cases the
3375 Controller can proceed as though it had read a value equivalent to all zeros as a default value. However, a NACK after a retry does not guarantee that the
3376 Target does not possess any capability or feature set associated with the given Defining Byte value.
3377 A Target that supports the GETCAPS Format 2 CCC (i.e., GETCAPS with any optional Defining Bytes) shall return a value of 1’b1 in bit 4 of Byte 3 (GETCAP3),
3378 when the GETCAPS CCC is sent without a Defining Byte. A Controller that sees that bit set to 1’b1 will know that the Target is capable of supporting at least one
3379 Defining Byte with the GETCAPS Format 2 CCC. The ACK/NACK method explained above allows the Target to indicate which Defining Byte values it actually
3380 supports.
GETCAPS Format 2
Length Depends Upon Defining Byte
P
S
Direct P
7’h7E Defining
GETCAPS Target Addr
Byte Sr
/ W / ACK CCC / R / ACK Byte0 ... ByteN 7’h7E Target Addr
/T Sr Sr
/T /T /T / W / ACK / RnW / ACK
Sr
Next CCC
3381
3382 Figure 63 GETCAPS Format 2
P
S
Direct TESTPAT TESTPAT1 TESTPAT2 TESTPAT3 TESTPAT4 P
7’h7E GETCAPS Defining Target Addr Value 0xA5 Value 0x5A Value 0xA5 Value 0x5A
CCC Byte Sr / R / ACK
/ W / ACK 7’h7E Target Addr
/T /T /T /T /T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3398
3399 Figure 64 GETCAPS Format 2 with Defining Byte TESTPAT
P
CRCAPS1
S /T
Direct CRCAPS P
7’h7E GETCAPS Defining Target Addr
CCC Byte Sr / R / ACK
/ W / ACK 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
CRCAPS1 CRCAPS2
Sr /T /T
Next CCC
3418
3419 Figure 65 GETCAPS Format 2 with Defining Byte CRCAPS
P
S
Direct DBGCAPS P
7’h7E GETCAPS Defining Target Addr DBGCAP1
Sr ...
/ W / ACK CCC Byte / R / ACK /T 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
P
VTCAP1
S /T
Direct VTCAPS P
7’h7E Target
GETCAPS Defining
Sr Addr
/ W / ACK CCC Byte 7’h7E Target Addr
/ R / ACK Sr Sr
/T /T / W / ACK / RnW / ACK
VTCAP1 VTCAP2
Sr /T /T
Next CCC
3464
3465 Figure 67 GETCAPS Format 2 with Defining Byte VTCAPS
P
S
Direct Dynamic Start Trans P
7’h7E SETROUTE Target Addr Count Address k ID k
Sr Count k
/ W / ACK CCC / W / ACK /T / 1'b0 /T
/T 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3471
3472 Figure 68 SETROUTE Format
3473 Target Addr is the Address of the Routing Device: either the Target’s original 7-bit static I2C Address, or else the current value of the Target’s assigned 7-bit
3474 Dynamic Address. This Target Address is used both for the Routing Device itself, and the other operations of the Device into which the routing behavior and logic
3475 is integrated.
3476 Count is the number of configured Routes to be defined/assigned with this CCC (not the number of Routes the Routing Device provides).
3477 Each Route is represented by three fields:
3478 • Dynamic Address: The 7 most significant bits (Bits[7:1]) contain the current value of the Target’s assigned 7-bit Dynamic Address, and the least
3479 significant bit (Bit[0]) is filled with the value 1’b0. This Address (not the Target Addr) is used when sending transactions to the associated I3C Bus.
3480 • ID: An 8-bit identifier, implementation-specific to the Routing Device, identifying the specific Route to the I3C Bus endpoint provided by the Routing
3481 Device.
3482 • Start Trans Count: An 8-bit value to which the Routing Device shall reset the transaction counter when initializing the Route.
3483 The method by which the Controller is informed about the identifiers for the various Routes provided by the Routing Device is not defined by this Specification;
3484 the Controller shall have prior knowledge of the identifiers, through either discovery registers or a priori knowledge. Although the identifiers used by the Routing
3485 Device are arbitrary, they shall be unique per I3C Bus endpoint.
3486 Only one Controller using the SETROUTE CCC shall configure a set of Routes at any given time. Any Controller accessing the Routing Device on any of the I3C
3487 Buses shall configure the Route(s). Only one Controller and its associated configured Routes shall be active at any given time. Each time a different Controller
3488 desires to configure its Route(s) through the Routing Device, it shall negotiate for ownership of the I3C Bus first.
Routing Devices
3489 A Routing Device enables an I3C Controller on a given I3C Bus to communicate to one or more other I3C Buses (see Figure 69). That is, a Routing Device enables
3490 a connection (also known as a Route), or multiple distinct connections, to exist between the connected I3C Buses. These I3C Buses are independent, and may have
3491 different sets of Dynamic Addresses.
3492 A Routing Device is distinguished from a Bridge Device, in that a Routing Device is not transparent; the transactions are relayed between the I3C Buses. Since the
3493 Routing Device inevitably incurs delays on the transactions, it shall handle transactions through buffers/queues in order to meet the transmit/receive requirements
3494 of the I3C protocol on each connected I3C Bus. Transactions from the Controller on its I3C Bus are queued by the Routing Device, and then sent to the other I3C
3495 Buses configured by the Controller. Each Route should have its own separate queue, in order to handle differences in timing and clocking.
Routing Device
Dynamic Address 0
Local Operations of the Device
(also contains any Routing
configurations) Queue I3C Bus A
Dynamic
Target Address Dynamic Address 1
Controller’s
Queue Queue I3C Bus B
I3C Bus
Dynamic Address 2
P
S Broadcast Sub-
Data
7’h7E SETXTIME Command Target Addr
(Optional)
/ W / ACK CCC Byte / RnW / ACK
/T Sr
Sr /T /T
7’h7E
Next CCC
/ W / ACK
3516
3517 Figure 70 SETXTIME Format 1: Broadcast
P
S
Direct Sub-
Data P
7’h7E SETXTIME Target Addr Command
Sr (Optional)
/ W / ACK CCC / W / ACK Byte
/T 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3518
3519 Figure 71 SETXTIME Format 2: Direct
P
S
Direct Supported
State Frequency Inaccuracy P
7’h7E GETXTIME Target Addr Modes
Sr Byte Byte Byte
/ W / ACK CCC / R / ACK Byte
/T /T /T 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3526
3527 Figure 72 GETXTIME Format
3528 The queried I3C Target returns four data bytes, with the following interpretations:
3529 • Supported Modes Byte: Bit mask indicating which Timing Control Mode(s) the Target supports (see Table 48). If a bit is set (has value 1’b1), then that
3530 Target supports the corresponding Timing Control Mode.
3532 • State Byte: Bit mask indicating which Timing Control Mode (if any) is currently enabled for the Target, and whether any counter overflows have
3533 occurred since the most recent previous check (see Table 49). If a Timing Control Mode bit is set (has value 1’b1), then that Target has currently enabled
3534 the corresponding Timing Control Mode. If the Overflow bit is set (has value 1’b1), then that Target experienced a counter overflow since the most
3535 recent previous check.
3536 Table 49 GETXTIME State Byte Fields
3537 Note:
3538 The Timing Control Modes marked “Not included in I3C Basic” in Table 49 are defined in the full I3C Specification but not included in I3C Basic. To gain
3539 access to these capabilities, please contact MIPI Alliance.
3540 An I3C Target that supports I3C Basic shall not indicate support for any of the Timing Control Modes marked “Not included in I3C Basic” in Table 49, and
3541 shall not report any of them as Enabled.
3542 • Frequency Byte: This byte represents the frequency of the Target’s internal oscillator, in increments of 0.5 MHz (i.e., 500 KHz), up to 127.5 MHz. The
3543 value 0 is an exception, and indicates an internal oscillator frequency of approximately 32 KHz.
3544 Example: A value of 8’d20 represents an oscillator frequency of 10.0 MHz.
3545 • Inaccuracy Byte: This byte represents the maximum variation of the Target’s internal oscillator in 1/10th percent (0.1%) increments, up to 25.5%.
3546 Example: A value of 8’d25 represents a maximum frequency variation of 2.5%.
P
S Broadcast
7’h7E SETAASA Target Addr
/ W / ACK CCC / RnW / ACK
/T Sr
Sr 7’h7E
Next CCC
/ W / ACK
3556
3557 Figure 73 SETAASA Format
P
S Broadcast
Defining Data
7’h7E ENDXFER Target Addr
Byte (Optional)
/ W / ACK CCC / RnW / ACK
/T /T Sr
/T
Sr 7’h7E
Next CCC
/ W / ACK
3570
3571 Figure 74 ENDXFER Format 1: Broadcast
P
S
Direct
Defining P
7’h7E ENDXFER Target Addr Data
Byte Sr
/ W / ACK CCC / RnW / ACK /T
/T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3572
3573 Figure 75 ENDXFER Format 2: Direct
0xF7 For HDR-DDR protocol: SET and GET the parameters for the Data Transfer Early One Byte
SET/GET Data Transfer Termination procedure, for the HDR-DDR protocol (see
Bits[7:6]: CRC Word Indicator
Early Termination Section 5.2.2.3.4).
2’b11: No CRC Word follows Early Termination request
Parameters
2’b01: CRC Word follows Early Termination request
(Checksum uses CRC-5 algorithm per Section 5.2.2.5)
Other: Reserved for future definition by MIPI Alliance
Bit[5]: Enable WRITE Early Termination Request
1’b0: Enable
1’b1: Disable
Bit[4]: Enable ACK/NACK Capability for WRITE Command
1’b0: Enable
1’b1: Disable
Bits[3:0]: Reserved for future use
0xAA For HDR-DDR protocol: Commands either all I3C Devices on the Bus, or else only One Byte
Confirm Set-up and some directly addressed Devices on the Bus, to begin For WRITE: The value 0xAA
Initiate Data Transfer operating using the Data Transfer Early Termination For READ: The value of the currently enabled Additional Data byte, as
procedure, as previously set up and confirmed using it pertains to ENDXFER sub-command 0xF7.
using Data Transfer Early
ENDXFER sub-command 0xF7.
Termination Procedure
0xFC Sub-command for These capabilities are not included in the I3C Basic One Byte
Monitoring Device Early Specification. To gain access to them, please contact MIPI
Termination Capability Alliance.
All Other Reserved Defining Byte values reserved and available for future Reserved for future definition
Values definition
(i.e., for new ENDXFER Sub-Commands)
P
S Broadcast
Defining Target Addr
7’h7E RSTACT
Byte / RnW / ACK
/ W / ACK CCC
/T Sr
/T 7’h7E
Sr Next CCC
/ W / ACK
3591
3592 Figure 76 RSTACT Format 1: Broadcast
P
S
Direct P
Defining
7’h7E RSTACT Target Addr
Byte Sr
/ W / ACK CCC / RnW / ACK 7’h7E Sr Target Addr
/T Sr
/T / W / ACK / RnW / ACK
Sr
Next CCC
Repeat for
additional
Targets
3593
3594 Figure 77 RSTACT Format 2: Direct Write
P
S
Direct P
Defining Returned
7’h7E RSTACT Target Addr
Byte Sr Data
/ W / ACK CCC / RnW / ACK 7’h7E Sr Target Addr
/T /T Sr
/T / W / ACK / RnW / ACK
Sr
Next CCC
3595
3596 Figure 78 RSTACT Format 3: Direct Read
3598 Note:
3599 1. The Target shall clear its reset action (as configured via the RSTACT CCC) upon receipt of the next START (but not Repeated START).
3600 2. The Defining Byte value for a Debug Network Adaptor Reset operation (Defining Byte 0x03) is intended for Target Devices that support the MIPI Debug
3601 for I3C specification [MIPI04]. Support for this reset operation is strongly recommended for any Debug-capable I3C Device that supports MIPI Debug for
3602 I3C as a Debug-capable Target System (TS). A Target Device that does not support this reset operation shall NACK its Target Address for this Defining Byte
3603 (if issued as a Direct CCC) or ignore the RSTACT CCC (if issued as a Broadcast CCC).
3604 The Debug Network Adaptor Reset operation (Defining Byte 0x03) does not reset the I3C Peripheral or its Target Address; it only resets the Device’s
3605 Debug for I3C Network Adaptors and all attached Debug Function logic. If issued as a Broadcast CCC, then it shall only affect Targets that support a
3606 Debug Network Adaptor reset operation.
3607 3. The Defining Byte value for a Virtual Target Detect operation (Defining Byte 0x04) is intended for composite Devices that support multiple Virtual Targets
3608 that share the same Peripheral logic (see Section 5.1.2.1.2). Support for this Defining Byte is required for any such Device that reports Virtual Target
3609 capabilities (i.e., BCR bit[4] is set to 1’b1, and GETCAPS CCC with Defining Byte VTCAPS indicates multiple Virtual Targets using shared Peripheral logic).
3610 A Device that does not support this operation shall NACK its Target Address for this Defining Byte (if issued as a Direct CCC).
3611 • This operation does not configure a Target or its shared Peripheral logic for any defined Target Reset action. It is only used for identification and
3612 association of any linked Virtual Targets.
3613 • This Defining Byte is only supported with Direct CCCs, not Broadcast CCCs.
3614 • The flag that resides in the shared Peripheral logic and which is set by Defining Byte 0x04 shall not be accessible or writeable from any
3615 application-specific logic connected to any Virtual Target. The state of this flag may only be accessed by a Controller, via this CCC (RSTACT) with this
3616 Defining Byte (0x04); or cleared by using this CCC (RSTACT) with Defining Byte 0x00.
3617 • Additionally, if a shared Peripheral is implemented in a manner that passes incoming RSTACT CCC events as messages up to application-specific
3618 queues or buffers for any Virtual Targets, then the shared Peripheral shall not pass any RSTACT CCC events as messages if they contain Defining Byte
3619 0x04 or 0x84, as these messages might notify a Virtual Target that the flag is being set or accessed by a Controller.
3620 4. The Reset the Whole Target operation (Defining Byte 0x02) is optional, but support for this reset operation is recommended. A Target Device that does
3621 not support this reset operation shall NACK its Target Address for this Defining Byte (if issued as a Direct CCC) or ignore the RSTACT CCC (if issued as a
3622 Broadcast CCC).
P
S
Direct 7-bit Group
P
7’h7E SETGRPA Target Addr Address
CCC Sr / W / ACK / 1'b0
/ W / ACK 7’h7E Target Addr
/T /T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3637
3638 Figure 79 SETGRPA Format
P
S
Direct
P
7’h7E RSTGRPA Target Addr
CCC Sr / W / ACK
/ W / ACK 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
P
S
Direct
P
7’h7E RSTGRPA Group Addr
CCC Sr / W / ACK
/ W / ACK 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
P
S Broadcast
7’h7E RSTGRPA Target Addr
/ W / ACK CCC / RnW / ACK
/T Sr
Sr 7’h7E
Next CCC
/ W / ACK
3650
3651 Figure 82 RSTGRPA Format 2: Broadcast
Dynamic Dynamic P
S Broadcast Group Addr Addr
Group
7’h7E DEFGRPA Addr Count (Target) (Target) Target Addr
Descriptor
/ W / ACK CCC / 1'b0 /T / RnW / ACK
/T / 1'b0 / 1'b0 Sr
/T /T
Sr 7’h7E
/T /T Next CCC
/ W / ACK
3658
3659 Figure 83 DEFGRPA Format
3660 • Group Descriptor: Identifier for this Group, using the same format and the same MIPI-defined values as the DCR (see Section 5.1.1.2.2 and MIPI-
3661 maintained web-based registry of defined values [MIPI02]).
3662 Examples: 8’d0 for Generic v1.0 Device, 8’d33 for Touch, 8’d129 for Proximity, etc.
3663 • Count: The number of the I3C Targets that are members of this Group. This is the same as the number of Dynamic Addr bytes that follow.
3664 • Dynamic Address: For each instance, the 7 most significant bits (Bits[7:1]) contain a member Target’s current 7-bit Dynamic Address. The least
3665 significant bit (Bit[0]) has the value 1’b0.
P
SDA[0] S Broadcast
Defining Data
7’h7E MLANE Target Addr
Byte (Optional)
/ W / ACK CCC / RnW / ACK
/T /T Sr
/T
Sr 7’h7E
Next CCC
/ W / ACK
3680
3681 Figure 84 MLANE Format 1: Broadcast
P
S
Direct
Defining P
7’h7E MLANE Target Addr Data
SDA[0] Byte Sr
/ W / ACK CCC / RnW / ACK /T
/T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3682
3683 Figure 85 MLANE Format 2: Direct
P
S
Direct
Defining P
7’h7E MLANE Target Addr Data
SDA[0] Byte Sr
/ W / ACK CCC / R / ACK /T
/T 7’h7E Target Addr
/T Sr / W / ACK
Sr / RnW / ACK
Sr
Next CCC
3685 Figure 86 MLANE Direct GET Version of SET/GET CCC (SDR Mode Only)
0xFF Get ML The directly addressed I3C Target responds with a 2-byte description of supported ML Frame One byte pair per every I3C Mode for which the Target supports
Capabilities formats, in every I3C Mode for which ML is supported: ML functionality.
Example: For a Target capable of ML on HDR-BT (Sub-Command 0x23), with all supported Within each byte pair:
Direct Read codings (i.e., Coding 0 and Coding 3) on Dual Lanes, two byte pairs are needed. The first byte of Identifier for the I3C Mode supported
First Byte:
Get only both pairs is the HDR-BT value (0x23). The second byte of the first pair is {5’d0, 3’d1} or 0x01, and (same values used in the Sub-Command
the second byte of the second pair is {5’d3, 3’d1} or 0x19. Function column at left):
The addressed Target therefore transfers the four bytes: 0x23, 0x01, 0x23, 0x19 0x23: HDR-BT
Note: Multi-Lane in other I3C Modes is not supported in
I3C Basic
Second Byte: 3-bit number of Additional Data Lanes
and 5-bit Data Transfer Coding number,
formatted as described below
0x7F Reset ML Broadcast SET: All I3C Targets return to Basic 2-wire I3C mode and a default Data Transfer No additional data bytes for this sub-command. Target(s) now
Broadcast or Coding, for all supported ML Frame formats. return to a default state, where they can be addressed in Basic
Direct Set Direct SET: The directly addressed Target returns to Basic 2-wire I3C mode and a default Data 2-wire I3C mode. Useful before a Controller Handoff to an I3C
Transfer Coding, for all supported ML Frame formats. If the Target also supports separate Group Secondary Controller that is not connected to additional Lanes.
ML configurations (see 0x9B and 0x9C), then these shall also be reset to the same default state.
Defining Sub-Command
Description Additional Data Bytes
Byte Value Function
0x00 SDR-ML Multi-Lane support for SDR Mode is not included in I3C Basic. One byte, as the ML Frame format, concatenating:
(Not supported) To gain access to this capability, please contact MIPI Alliance. • Bits[2:0]: Number of Additional Data Lanes:
0x20 HDR-DDR-ML Multi-Lane support for HDR-DDR Mode is not included in I3C Basic. 3’b000: Basic 2-wire I3C – SINGLE Lane config
(Not supported) To gain access to this capability, please contact MIPI Alliance. 3’b001: One additional Lane – DUAL Lane config
3’b011: Three additional Lanes – QUAD config
0x21 HDR-TSP-ML Multi-Lane support for HDR-TSP Mode is not included in I3C Basic. Other values not used
(Not supported) To gain access to this capability, please contact MIPI Alliance. • Bits[7:3]: Data Transfer Coding number to use (see
0x23 HDR-BT Sets or returns the current ML configuration (i.e., the ML Frame format) for HDR-BT Mode. The Section 5.3.2)
Frame Format Defining Byte value indicates the I3C Mode and its available ML Frame formats to which the sub- For Broadcast or Direct SET: The Target shall only accept a valid
command shall apply: and supported ML Frame format for a given I3C Mode, as
Set/Get • 0x23: HDR-BT ML Frame formats: see Section 5.3.2.4 indicated by Defining Byte 0xFF. See sub-sections below.
Direct SET to an assigned Dynamic Address: The Target uses the provided ML Frame format If the Target also supports Group Address capabilities (per
variation with the indicated number of Additional Data Lanes and Data Transfer Coding version. Section 5.1.4.4), then it shall also support Defining Byte 0x9B
Direct SET to an assigned Group Address (if supported, per Section 5.3.1.1.1): The Target uses (i.e., the sub-command for Group ML Capabilities).
the provided ML Frame format variation (as above) for all subsequent transfers addressing that If the Target also supports separate Group ML configurations (per
Group Address. Changes shall not apply to the ML configuration for Dynamic Address(es). Section 5.3.1.1.1), then it shall also support Defining Byte 0x9C
Broadcast SET: If the Target supports the given I3C Mode, then it shall use the provided ML (i.e., the sub-command for Get Group ML Report).
Frame format for all assigned Dynamic Addresses and Group Addresses (if applicable). For additional details and requirements, see Section 5.3.1.1 and
See Section 5.3.1.1 and sub-sections for full configuration requirements. sub-sections. Specific exceptions may apply per I3C Mode, per
Section 5.3.2 and sub-sections.
Direct GET to an assigned Dynamic Address: The Target responds with one byte (see right
column) indicating which variation of the ML Frame format is selected for ML operations involving
that Dynamic Address. If the Target also supports separate Group ML configurations (per
Section 5.3.1.1.1) or multiple Dynamic Addresses (per Section 5.3.1.1.2), then the data byte shall
apply to transactions involving that Dynamic Address (i.e., not any other assigned Addresses).
Defining Sub-Command
Description Additional Data Bytes
Byte Value Function
0x9B Group ML Direct GET to an assigned Dynamic Address: The directly addressed Target responds with one One byte, concatenating:
Capabilities byte (see Additional Data Bytes column) indicating whether it supports separate Group ML • Bits [1:0]: Whether separate Group ML configurations are
(optional) configurations, and if so, in what way. Required if the Target supports Group Addresses in any I3C supported:
Modes using ML. If the Target does not support Group Addresses in any I3C Modes using ML, then 2’b00: Not Supported (all configured Group Addresses use
Direct Read it shall NACK its Target Address. the same ML Frame format as the Target Address); this
Get only variant is not included in I3C Basic
See Section 5.3.1.1.1 for additional requirements.
2’b01: Supported; each newly configured Group Address
has its own configuration, set to a common frame format,
when the Target is assigned to a Group Address
Other values not used
• Bits [5:2]: The number of Group Addresses to which the
Target is currently assigned (value from 4’d0 to 4’d15)
• Bits [7:6]: Reserved
0x9C Get Group ML Direct GET to an assigned Dynamic Address: The directly addressed Target responds with a One byte for the number of separate Group ML configurations that
Report report on the number of separate Group ML configurations (i.e., separate ML Frame formats for a can be configured, followed by a 3-byte tuple for each described
(optional) Group Address) that it will support, followed by a 3-byte tuple describing the currently configured Group ML configuration.
ML Frame format for each supported I3C Mode for each Group Address to which the Target is Within each byte tuple:
Direct Read assigned.
• First Byte: The Group Address (if assigned), or 0x00 (if not
Get only Required if the Target supports Group Addresses in any I3C Modes using ML. If the Target does configured, which means the Second Byte and Third Byte are
not support separate Group ML configurations, then it may return a 1-byte message of 0x00, or not valid)
NACK its Target Address.
• Second Byte: If configured, the identifier for the I3C Mode
Example: For a Target that supports up to 4 Group Addresses, supports ML only in HDR-BT Mode, supported (see 0xFF above)
and that is currently assigned to 3 Groups, the Target returns the byte 0x04 to indicate 3 separate
• Third Byte: If configured, the 3-bit number of Additional Data
Group ML configurations, followed by a 3-byte tuple for each. The first byte of each tuple is the
Lanes and 5-bit Data Transfer Coding number, formatted as
Group Address, the second byte is the HDR-BT value (0x23), and the third byte is the ML Frame
described above
format’s data byte. This Target is assigned to Group Addresses 7’h71, 7’h72, and 7’h74.
For all valid Group ML configuration tuples, the first two bytes
The addressed Target therefore transfers the following thirteen bytes:
shall be unique.
0x04, The number of Group ML configurations across all I3C Modes
• All valid (configured) Group ML configurations shall be
0x71, 0x23, 0x00, Group Address 7’h71, HDR-BT mode 0x00, 1-Lane default returned before any invalid (non-configured). A Target may
0x72, 0x23, 0x01, Group Address 7’h72, HDR-BT mode 0x01, 2-Lane ML with Coding 0 terminate the transfer after at least one Group ML
0x74, 0x23, 0x1B, Group Address 7’h74, HDR-BT mode 0x1B, 4-Lane ML with Coding 3 configuration tuple consisting only of all ZEROs.
All Others Reserved Available Defining Byte values. Reserved for future definition of new MLANE CCC Sub-Commands. –
3687 Note:
3688 An I3C Controller that supports any version of the I3C Basic Specification might be on the same I3C Bus with an I3C Target that supports the full I3C
3689 Specification, and it might receive a report using the MLANE Direct GET CCC with the Sub-Command for Get ML Capabilities (i.e., Defining Byte 0xFF) or
3690 other Sub-Commands that include ML Frame formats for I3C Modes that the I3C Controller does not support. In such a case, the I3C Controller shall ignore
3691 any ML Frame formats that pertain to such I3C Modes (i.e., those marked as “Not included in I3C Basic” in Table 57), and shall not use the corresponding
3692 Sub-Commands for such I3C Modes, as the I3C Controller would not have the capability to support Multi-Lane Data Transfers for such I3C Modes.
P
S
Broadcast
7’h7E SETBUSCON Context / Optional Target Addr
/ W / ACK CCC T … /T / RnW / ACK
/T Sr
Sr 7’h7E Next CCC
/ W / ACK
3769
3770 Figure 87 SETBUSCON Format
3772 Note:
3773 An I3C Controller that supports version 1.1 or greater of the full I3C Specification might emit the SETBUSCON CCC with Bit[4] set to 1’b0. In that case, an
3774 I3C Target that supports version 1.1 or greater of the I3C Basic Specification should ignore Bit[4].
3775 An I3C Controller that supports any version of the I3C Basic Specification shall not emit the SETBUSCON CCC with Bit[4] set to 1’b0; for an I3C Basic
3776 Controller, 1’b1 is the only valid value for Bit[4].
5.1.10.1 SDR Error Detection and Recovery Methods for I3C Target Devices
3822 The Error Types summarized in Table 59 shall be supported for all I3C Target Devices. Each Error Type is
3823 further explained in a sub-section below the table.
3824 Note:
3825 In previous versions of the I3C Specification, these Error Types for I3C Target Devices were named
3826 “S0”, “S1”, etc. The purpose, detection methods, and recovery methods for these Error Types are
3827 unchanged.
SDA
SCL
3835
5.1.10.1.9 Optional Recovery Method for Error Types TE0 and TE1
3966 An I3C Target can recover from an Error Type TE0 or Error Type TE1 situation not only by detecting the
3967 HDR Exit Pattern, but also by monitoring the SCL and SDA lines. If the Target detects that both lines stay at
3968 High level for a period exceeding 60 µs, then the I3C Target can regard the Bus as operating in non-HDR
3969 mode. The I3C Target can then recover from the TE0 or TE1 situation, and wait for a STOP or a START to
3970 resume normal operation.
3971 Note:
3972 Regarding timing, HDR’s slowest clock rate is 10 kHz (100 µs total cycle). The period 60 µs is derived
3973 by assuming that HDR (i.e., HDR-DDR Mode) will always keep an approximately even duty cycle,
3974 especially at very slow clock rates (since the only reason to go so slow is for long lines and/or large
3975 capacitive load on Bus lines). 60 µs represents 60% of the duty cycle, and therefore is a safe duration
3976 to wait when seeing both lines High.
3977 The Target can start measuring the period whenever it detects that both SCL and SDA are at High
3978 level. There is no need to start timing this period at any particular signal pattern (for example, at the
3979 STOP).
5.1.10.2 SDR Error Detection and Recovery Methods for I3C Controller Devices
3980 Table 60 summarizes the defined Error Types for I3C Controller Devices. All I3C Controller Devices shall
3981 support Error Types CE0, CE2, and CE3, and should support Error Type CE1. Each Error Type is further
3982 explained in a sub-section below the table. Escalation and recovery is explained in Section 5.1.10.2.5 and
3983 Section 5.1.10.2.6.
3984 Note:
3985 In previous versions of the I3C Specification, these Error Types for I3C Controller / Controller Devices
3986 were named “M0”, “M1”, etc. The purpose, detection methods, and recovery methods for these Error
3987 Types are unchanged.
4201 Target: A Target shall react to receipt of the Target Reset Pattern based on its state at the time of reception:
4202 • If the Target had been configured via the RSTACT CCC to take a particular reset action (including
4203 taking no action) and was able to process that RSTACT CCC (i.e., not broken), then the Target
4204 shall perform the reset action as configured.
4205 • If the Target had been in a deepest-sleep state, then it may Wake up (e.g., power up, etc.). This
4206 Wake operation itself may either reset the Device or not, per Section 5.1.11.5.
4207 • If a Target had been unable to recognize a RSTACT CCC (i.e., was broken), or if no RSTACT
4208 CCC had been sent to the Target, then the Target shall either:
4209 • If this is the first time that the Target has seen the Target Reset Pattern: Then the Target shall
4210 reset the I3C Peripheral. If a processor is in use, then it will notify the application via internal
4211 interrupt, so that it can reconfigure the I3C Peripheral).
4212 or
4213 • If the Target has previously reset the I3C Peripheral and is seeing a new Target Reset Pattern
4214 with no intervening RSTACT or GETSTATUS CCC: Then the Target shall reset the whole chip,
4215 i.e., equivalent to an SRSTn pin being asserted (see Section 5.1.11.4).
4216 Note:
4217 Any reset action (including inaction) configured via the RSTACT CCC shall be cleared by the next
4218 SCL falling edge following a START (but not by the next Repeated START).
4219 Note:
4220 This specification is silent regarding what Target internal memory is retained vs. cleared in a
4221 Peripheral reset (where ‘memory’ could be either volatile or non-volatile, and could be implemented in
4222 any number of ways). In particular, the Target’s Dynamic Address may be either retained or cleared. If
4223 the Target clears its Dynamic Address, then it shall participate in an ENTDAA that follows the Target
4224 Reset Pattern; if the Target retains its Dynamic Address, then it shall not participate.
Enable I3C
Armed to
Peripheral Reset
Configure
Reset Action
Clear
Configured Take Configured
Reset Reset Action
Action RSTACT or Target Reset
(or inaction) GETSTATUS Pattern Wakeup
CCC
Clear
Escalation
Escalation
Reset Whole
Chip
4225
4226 Figure 89 Target Reset Operations Flow
Set Up SDA
If Needed
SDA
Set Up
SCL
SCL
Set Up SCL
If Needed Sr STOP
4237
4238 Figure 90 Target Reset Pattern
Subject Section
Bus Configuration 5.1.1
Bus Communication 5.1.2
Bus Conditions 5.1.3
Bus Initialization and
5.1.4
Dynamic Address Assignment Mode
Hot-Join Mechanism 5.1.5
In-Band Interrupt 5.1.6
I3C Bus with Multiple Controllers 5.1.7
Timing Control 5.1.8
Common Command Codes (CCC) 5.1.9
Error Detection and Recovery Methods for SDR 5.1.10
Target Reset 5.1.11
4324 Details common to all HDR Modes are detailed in this Section and in Section 5.2.1.
4325 Details unique to HDR Double Data Rate Mode (HDR-DDR) are specified in Section 5.2.2.
4326 Placeholders for the two HDR Ternary Modes that are not included in I3C Basic appear at Section 5.2.3.
4327 Details unique to HDR Bulk Transport Mode (HDR-BT) are specified in Section 5.2.4.
4328 Each HDR Mode is separate from all other HDR Modes:
4329 • I3C Targets may choose to support any desired combination of the HDR Modes included in I3C
4330 Basic, including no HDR Modes. If the I3C Bus enters an HDR Mode that an I3C Target does not
4331 support, then that Target can simply wait and watch for the common HDR Exit Pattern.
4332 • I3C Controllers may choose to support any desired combination of the HDR Modes included in
4333 I3C Basic, including no HDR Modes. However, manufacturers are generally encouraged to
4334 support all of these HDR Modes.
4335 • I3C Devices that support HDR-BT may choose to support DUAL Lane or QUAD Lane
4336 configurations, in addition to SINGLE Lane configuration.
4337 HDR Modes have Bus-wide effect. That is, the whole I3C Bus can be put into a given HDR Mode, and once
4338 entered that HDR Mode shall remain in effect until the end of that transaction.
4339 HDR Modes may support CCCs as indicated by Table 61. Generally, CCCs that assign Dynamic Addresses,
4340 alter I3C Bus Modes, or transfer the I3C Bus Controller Role are not allowed within HDR Modes.
4341 An HDR Mode period on the I3C Bus involves five steps:
4342 1. The Controller Broadcasts an Enter HDR Mode CCC, indicating which particular HDR Mode to
4343 enter. (See the Command Codes Enter HDR Mode 0 through Enter HDR Mode 7 [ENTHDR0–
4344 ENTHDR7] in Section 5.1.9.3.9).
4345 2. The I3C Bus switches from SDR Mode to the requested HDR Mode (see Section 5.2.1.3.1).
4346 3. The Controller issues the first structured protocol element per the HDR Mode framing.
4347 Typically this is either a Command or Header, followed by optional Data sent by the Controller or
4348 Target Device, etc.
4349 4. An HDR Restart Pattern or HDR Exit Pattern (see Section 5.2.1) is sent.
4350 • If an HDR Restart Pattern, then the Controller issues the first structured protocol element for
4351 the new HDR Mode transfer (i.e., another Command or Header, followed by optional Data,
4352 etc.; see Section 5.2.1.3.2).
4353 The Controller may repeat this process to remain in the HDR Mode, or send an HDR Exit Pattern
4354 to exit the HDR Mode.
4355 5. If the Controller sends an HDR Exit Pattern, then it is always followed by I3C STOP, which ends
4356 with the Bus Free Condition.
Fourth
falling
Set Up SDA
If Needed HDR Exit Pattern edge STOP
SDA
SCL
Set Up SCL Set Up SCL
If Needed for STOP
4379
4380 Figure 91 HDR Exit Pattern Followed by STOP
4381 Note:
4382 After the fourth SDA falling edge, the Controller shall drive SCL High in order to set up SCL to
4383 prepare for the I3C STOP.
SDA
SCL SCL
Edge
Set Up SCL Validates
4390 If Needed
4392 Note:
4393 After the necessary SCL ending edge, the I3C Bus remains in that HDR Mode, and the Controller
4394 typically follows by driving SCL Low to complete the SCL pulse, which signals the start of the next
4395 HDR Mode transfer. This begins the first structured protocol element (i.e., a Command or Header) for
4396 the HDR Mode framing, per Section 5.2.1.3.2.
1 D Q D Q D Q D Q STOP
4407 The Detector uses an inverted version of SDA as a clock (so positive edge logic, but can use negative edge
4408 logic), and is reset when SCL is High (1), or when the block is not in HDR Mode. The asynchronous nature
4409 of the reset makes this safe. This is shown in Figure 94. If the HDR Exit Pattern Detector were only using
4410 clocking logic, then it would not see any change at all (SDA posedge would always see SCL Low in this
4411 example). Because the Detector uses an asynchronous reset on SCL, a change in SCL will impact the counter,
4412 even in case (b) above. Note that SCL and SDA will still be approximately 50 ns between changes. So, as
4413 shown, if SCL rises at any time, then the HDR Exit Pattern Detector shall be reset, and therefore will not
4414 mistakenly signal a false Exit.
SDA SDA
SCL SCL
D Q D Q HDR
Restart
isHDR
SDA R SCL R
1 D Q D Q D Q D Q HDR
Stop
4451 Figure 95 Combined HDR Restart and Exit Pattern Detector (Schematic)
4452 This Detector design builds on the HDR Exit Pattern Detector. After exactly two SDA falling edges are seen,
4453 followed by a rising edge, the HDR Restart Pattern Detector checks for the rising edge of SCL. It does not
4454 matter whether SDA also falls at the same time; the rising SCL is the key. This works because even if SDA
4455 were falling (and therefore triggering the next flop in the HDR Exit Pattern Detector), the upper-left flop will
4456 still hold 1 because it has not yet seen a rising edge on SDA.
4457 An example RTL implementation of the Figure 95 schematic is shown in Listing 2.
4458 Listing 2 Example RTL Code for Combined HDR Pattern Detector: Exit and Reset
4459 wire scl_rst_n;
4460 wire restart_rst_n;
4461 wire SDA_clk_n; // ~SDA as clock
4462 reg[3:0] stp_cnt; // HDR STOP counter (shift chain)
4463 reg poss_restart; // possible restart
4464 reg is_restart;
4465
4466 assign scl_rst_n = ~iSCL & iIsInHDR; // SCL=1 resets
4467 assign restart_rst_n = ~iRestartDone & iIsInHDR;
4468
4469 // next uses glitch free XOR for SDA clock. Only inverts
4470 // SDA as clock if not in scan. Could add a clock mux
4471 // so uses one common clock in scan.
4472 SAFE_CLK_XOR sda_neg_clk(iSDA, ~scan_mode, SDA_clk_n);
4473
4474 // counter for 3 and 4 rising SDA when SCL is High
4475 // (else SCL resets). Whole thing held in reset if
4476 // not in HDR Mode
4477 always @ (posedge SDA_clk_n or negedge scl_rst_n)
4478 if (~scl_rst_n)
4479 stp_cnt <= 4'd0; // SCL High or not HDR
4480 else
4481 stp_cnt <= {stp_cnt[2:0], 1'b1}; // shift chain counter
4482
4483 assign oHDR_STOP = stp_cnt[3];// detects Exit (STOP)
4484
4485 // Possible Restart means exactly 2 falling edges
4486 // of SDA and then rising edge of SDA. Actual
4487 // Restart is from SCL then rising
4488 always @ (posedge iSDA or negedge restart_rst_n)
4489 if (~restart_rst_n)
4490 poss_restart <= 1'b0; // Restart ACK or not HDR
4491 else if (stp_cnt[1] & ~stp_cnt[2]) // after 2nd fall only
4492 poss_restart <= 1'b1; // SDA rise after 2 falls
4493 else
4494 poss_restart <= 1'b0; // else not possible restart
4495
4496 always @ (posedge SCL or negedge restart_rst_n)
4497 if (~restart_rst_n)
4498 is_restart <= 1'b0; // Restart ACK or not HDR
4499 else if (poss_restart)
4500 is_restart <= 1'b1; // SCL rises after SDA does
4501 else
4502 is_restart <= 1'b0; // else not restart
4525 Table 61 CCCs Permitted in HDR Modes, with Notes and Limitations
CCC Type Command
Notes and Limitations
Broadcast Direct Name
X X ENEC May not generally be useful in HDR Modes, as the Controller would need to exit
DISEC HDR and return to SDR Mode for the Target to be able to raise any of the request
types that are affected by these CCCs; see Section 5.2.1.2.4.
X – DEFTGTS Not recommended for use in HDR Modes; generally only used for Secondary
Controllers, to announce lists of known Targets, following changes to Target
Dynamic Addresses or Hot-Join events, neither of which are permitted within HDR
Modes
– X GETMWL No limitations
GETMRL
X X SETXTIME No limitations
– X GETXTIME No limitations
– X SETGRPA Target support for Group Addresses may vary; Target support for receiving HDR
CCCs directed to Group Addresses may vary; see Section 5.2.1.2.4.
X – DEFGRPA Generally only used for Secondary Controllers, to announce lists of Targets
assigned to a known Group Address after prior use of SETGRPA and RSTGRPA
CCCs
X X MLANE Broadcast or Direct SET versions of this CCC are generally not recommended for
use in HDR Modes; Targets that support Direct GET versions of this CCC shall
respond according to the HDR Mode framing for the active HDR Mode, instead of
the “test mode” which returns the same data on any Additional Data Lanes (as
defined in SDR Mode, see Figure 86); see Section 5.2.1.2.4. and
Section 5.2.1.2.5.
– X GETBCR Not recommended for use in HDR Modes; usually only used once per Target,
GETDCR during Bus Initialization
– X GETSTATUS No limitations
– X GETMXDS No limitations
– X GETCAPS No limitations
– X D2DXFER This CCC is not included in I3C Basic (see Table 16)
4526 Table 62 summarizes which CCCs are not permitted in any HDR Mode, with the reason for each CCC.
4527 Table 62 CCCs Not Permitted in HDR Modes
CCC Type Command
Reason
Broadcast Direct Name
X X RSTDAA Target Dynamic Address changes are a fundamental configuration change, which
should be done in SDR Mode only.
X – ENTTM Test Mode can only be performed in SDR Mode. Test Mode is generally only used
for manufacturing or Device test.
X – ENTHDR0 HDR Modes can only be entered from SDR Mode. There is no provision for switching
through directly to a different HDR Mode, it is necessary to exit to SDR Mode first.
ENTHDR7
X – SETAASA Dynamic Address Assignment can be done in SDR Mode only. In addition,
SETAASA (if supported) is typically used only once per Bus, during Bus Initialization
which always takes place in SDR Mode.
– X SETDASA Dynamic Address Assignment can be done in SDR Mode only. In addition,
SETDASA (if supported) is typically used only once per Target, during Bus
Initialization which always takes place in SDR Mode.
– X SETNEWDA Target Dynamic Address changes are a fundamental configuration change, which
should be done in SDR Mode only.
– X GETPID Usually only associated with the ENTDAA CCC, or when a Secondary Controller that
was not present during Bus Initialization becomes Active Controller (pursuant to a
GETACCCR CCC) and requests information about a Target Device.
4567 For Direct CCCs, the Controller shall send the HDR-x CCC Header Block of type ‘Indicator’, containing the
4568 Command Code and optional Defining Byte. The Controller shall then send the HDR Restart Pattern, and
4569 then start a new Segment by sending another HDR-x CCC Header Block, but of Selector type: it includes a
4570 Target Address and indicates whether the Direct CCC Segment is a Write Segment vs. a Read Segment.
4571 • For a Direct Write or Direct SET CCC with data, the Controller generally sends one or more
4572 HDR-x CCC Data Blocks if the selected CCC’s defined format so indicates. However, if the
4573 CCC’s defined format includes no data to be sent to the Target (i.e., if a zero-byte ‘Write’ to the
4574 Target for a given Command Code and optional Defining Byte is sufficient to instruct the Target to
4575 take some action), then the Controller would send the minimum number of HDR-x CCC Data
4576 Blocks for the HDR Mode’s framing. In some cases, this might be zero Data Blocks, if the HDR
4577 Mode permits.
4578 • If the Direct Write or Direct SET CCC requires a Sub-Command Byte, then the Controller
4579 shall send this Sub-Command Byte as the first byte in the Write Segment’s data message,
4580 which is the first HDR-x CCC Data Block.
4581 • For a Direct Read or Direct GET CCC, the Controller shall allow the addressed Target to control
4582 the Bus, and the Target may send one or more HDR-x CCC Data Blocks if the selected CCC’s
4583 defined format so indicates. After the end of the Segment, the Controller shall resume control.
4584 For either Broadcast or Direct CCCs, the Controller and the Targets shall observe all HDR Mode specific
4585 framing requirements:
4586 • For zero-byte CCCs or very short CCCs, if a minimum number of HDR-x CCC Data Blocks must
4587 be sent for the HDR Mode’s framing, then the sender shall provide dummy byte values of 0x00 in
4588 these Data Blocks, and the receiver shall correctly ignore these values, per the specific CCC
4589 definition.
4590 • If the length of a CCC’s data message is not evenly aligned to the size of the HDR-x CCC Data
4591 Block, then the sender shall pad the end of the data message with dummy byte values of 0x00, and
4592 the receiver shall correctly ignore any dummy byte values, per the specific CCC definition.
4593 To end either a Broadcast CCC or a Direct CCC, the Controller shall use any HDR-x CCC End Procedure
4594 that is valid for that HDR Mode.
4595 As part of the data message that is either sent by the Controller (i.e., as part of a Broadcast CCC or a Write
4596 Segment for a Direct CCC), or sent by a Target (i.e., as part of a Read Segment for a Direct CCC), the sender
4597 shall denote the end of the data message by including an appropriately-constructed HDR-x CCC Termination
4598 Marker, in a format specific for the particular HDR Mode and transaction type. The Controller shall also
4599 include a Termination Marker at the end of the Selector type HDR-x CCC Header Block that begins the
4600 framing for a Direct CCC, before starting any Read or Write Segments. In both cases, this Termination Marker
4601 is required to allow the receiver to properly understand the end of the header block or data message and take
4602 the appropriate action to fit within the signaling for that HDR Mode.
4603 Because a Termination Marker can also serve as the transition before the next common CCC Flow Element,
4604 it may include signaling acknowledging the preceding Flow Element, or signaling that includes Bus
4605 Turnaround or other forms of Handoff between the Controller and an addressed Target.
4606 Depending on the specific HDR Mode and transaction type, this Termination Marker will take one of three
4607 possible forms:
4608 1. CRC Block
4609 This Block includes valid CRC (checksum) data for the preceding HDR-x CCC Data Block(s) or
4610 HDR-x CCC Header Block. The receiver shall use the CRC data to verify that the data received
4611 from the sender is valid.
4612 • For HDR-DDR Mode: The CRC Block is the HDR-DDR CRC Word (see Section 5.2.2.1,
4613 Table 66).
4614 • For HDR-BT Mode: The CRC Block is the HDR-BT CRC Block (see Section 5.2.4.3.3).
4615 2. Turnaround or Handoff Pattern
4616 This form of Termination Marker is a specific pattern indicating Bus Turnaround or Handoff back
4617 to the Controller, if so indicated by the direction of transfer.
4618 3. No Termination Marker
4619 Under particular conditions, no Termination Marker per se will be sent.
4620 After this optional Termination Marker, the Controller shall reassert its control of the Bus (if necessary) and
4621 then send (or complete) the HDR Restart Pattern, or else continue on to any valid HDR-x CCC End Procedure
4622 that is appropriate for that framing.
4623 Because the Termination Marker may take different forms, or may not exist on the I3C Bus at all depending
4624 on the particular HDR Mode or type of transaction, it is indicated generically in the following flow diagrams,
4625 using the label ‘TM’.
4626 At several points in the CCC flows it might be necessary for the Target to acknowledge receipt of a given
4627 Flow Element. In the following flow diagrams, such an acknowledgement may also serve as a Termination
4628 Marker; the label ‘ACK’ indicates such cases.
4629 Note:
4630 The exact location of an acknowledgement may vary, depending on the particular HDR Mode and the
4631 flow control method used to indicate acknowledgement.
4632 The framing for Direct CCCs also allows for multiple Target Addresses to be addressed, in a manner similar
4633 to the SDR Direct CCC framing model which addresses multiple Target Addresses as combinations of Read
4634 Segments (for Direct Read or Direct GET CCCs) and/or Write Segments (for Direct Write or Direct SET
4635 CCCs). The Controller may use this framing to address one or more Target Addresses by using multiple
4636 Segments, separated by the HDR Restart Pattern. When used in this manner the HDR Restart Pattern acts not
4637 as the end of the CCC (as it does with other, HDR traffic), but as the end of one Segment addressed to the
4638 indicated Target Address.
4639 Note:
4640 In this framing the HDR Restart Pattern serves as an equivalent of SDR Mode’s Repeated START in
4641 Direct CCC framing (see Section 5.1.9.2.2).
4642 Target Devices shall store the Command Code and its optional Defining Byte (as the Controller sent in the
4643 Indicator type HDR-x CCC Header Block) and act on them as individually addressed in this framing. The
4644 Command Code and optional Defining Byte values shall be stored for later use, if a Target matches its Target
4645 Address in a subsequent Selector type HDR-x CCC Header Block, until the end of the current modality is
4646 indicated via any HDR-x CCC End Procedure valid for the particular HDR Mode.
4647 The generic Broadcast CCC flow for the framings described above is shown in Figure 96; the generic Direct
4648 CCC flow for the framings described above is shown in Figure 97.
S, Enter HDR or
(refer to specific HDR Mode coding) (refer to specific HDR Mode coding) ACK
HDR RESTART
Selectable END of
Optional Data END of this CCC
CCC Procedure
HDR-x CCC
(refer to specific HDR Mode coding) TM
END PROCEDURE
S, Enter HDR or TM +
(refer to specific HDR Mode coding) (refer to specific HDR Mode coding)
HDR RESTART ACK
HDR
(refer to specific HDR Mode coding) ACK (refer to specific HDR Mode coding) TM
RESTART
HDR-x CCC Header Block (Selector) HDR-x CCC Data Block TM #N VERSIONS
Read segment
(Direct GET)
Selectable END of
READ from Target Address Repeat N times, for all Data
CCC Procedure
4653 The ending of the CCC modality shall be indicated by any HDR-x CCC End Procedure valid for the particular
4654 HDR Mode. The HDR Restart Pattern alone shall not indicate the end of the CCC flow, as it would end a
4655 normal HDR read/write command flow. All Target Devices that support CCCs in the particular HDR Mode
4656 shall detect the beginning of the CCC and interpret the HDR Restart Pattern appropriately for the CCC
4657 framing until they receive an HDR-x CCC End Procedure valid for that HDR Mode. Each HDR Mode may
4658 define several HDR-x CCC End Procedures, depending on the HDR Mode’s use cases and Frame formats.
4659 Upon receiving a valid HDR-x CCC End Procedure, the Target shall either end the CCC modality and expect
4660 normal HDR traffic, or else immediately re-enter the CCC modality (depending on the type of procedure) by
4661 capturing a new Command Code and optional Defining Byte. Typically, a valid HDR-x CCC End Procedure
4662 starts with a common Flow Element, such as an Indicator type HDR-x CCC Header Block (or equivalent) to
4663 start a new CCC, or an HDR-x Header Block to end the CCC Frame. Such a Block shall be addressed to the
4664 Broadcast Address (7’h7E) and shall also indicate whether the modality is ended vs. re-entered for a new
4665 CCC. In this manner the Controller can use normal HDR traffic, Broadcast CCCs, and Direct CCCs in a
4666 continuous flow within a given HDR Mode, arranged in any sequential order, without needing to exit the
4667 HDR Mode to separate these commands or traffic flows.
4668 Note:
4669 A valid HDR-x CCC End Procedure for a particular HDR Mode that indicates the end of the CCC
4670 modality might use the dummy command code 0x1F (see Table 16) instead of a valid CCC, if the
4671 framing for that HDR Mode requires the Controller to use an additional Flow Element that would
4672 otherwise contain the CCC in order to comply with valid transfers in that HDR Mode. This dummy
4673 command code 0x1F is defined for this specific purpose. When using the dummy command code
4674 0x1F, a dummy Defining Byte value 0x00 should also be used, if the additional Flow Element also has
4675 a field that would otherwise contain a valid Defining Byte.
4676 The following HDR-x CCC End Procedures are recommended, but this is not an exhaustive list of End
4677 Procedures for any given HDR Mode:
4678 • HDR Restart Pattern followed by Indicator type HDR-x CCC Header Block (or equivalent),
4679 indicating that the CCC modality is still active, but providing a new CCC and optional Defining
4680 Byte. Flow then proceeds as a new Broadcast or Direct CCC (see Figure 96 and Figure 97).
4681 • HDR Restart Pattern followed by HDR-x Header Block (or equivalent) indicating that the CCC
4682 modality is ended or no longer in ‘continuation’, followed by an optional Termination Marker to
4683 indicate the end of a transfer, followed by another HDR Restart Pattern (see Figure 101). Flow
4684 then proceeds as standard HDR read/write transactions.
4685 • Any End Procedure that indicates that the CCC modality is ended must be distinct from the
4686 previous End Procedure, in order that all Target Devices may clearly recognize it and interpret
4687 subsequent HDR transactions as standard HDR read/write transactions. Typically, this
4688 requires its first Flow Element (i.e., the HDR-x Header Block) to be clearly recognized as
4689 neither an Indicator nor a Selector.
4690 • An optional variant of the above, which ends with the HDR Exit Pattern instead of the HDR
4691 Restart Pattern. HDR Mode is then exited, and the Bus returns to SDR Mode.
4692 • HDR Exit Pattern
4693 The recommended HDR-x CCC End Procedures are shown in Figure 98.
PRECEDING WRITE TM
PRECEDING READ TM
WRITE to Broadcast Address (7'h7E) New CCC <Bcast or Direct + Opt Def Byte>
HDR
(refer to specific HDR Mode coding) (refer to specific HDR Mode coding)
RESTART
HDR EXIT
4696 In the figures above, the labels HDR-x CCC Header Block, HDR-x CCC Data Block, and Termination
4697 Marker (if supported) represent generic, higher-level elements of the flow for sending CCCs in all of the
4698 HDR Modes. In actual practice the specific sizes of the Blocks, their bitfield formats, and data encodings on
4699 the Bus vary depending on the particular HDR Mode being used. Table 63 shows, for each HDR Mode that
4700 supports CCCs, where to find the CCC coding details for each Flow Element when using that HDR Mode.
4816 that only connect to one Lane. To ensure maximum compatibility, a Controller should generally use 1-Lane
4817 compatible ML Frame formats for the common CCC Flow Elements, so that all Target Devices can properly
4818 receive and understand the CCC flows. This includes all HDR-x CCC Header Blocks, and any HDR-x CCC
4819 Data Blocks that are part of Broadcast CCC flows.
4820 For such a Bus, if a Controller has previously configured some Target Devices to use an ML Frame format
4821 that uses additional data Lanes or different formatting, then the Controller must use a “compatibility mode”
4822 ML Frame format that uses the 1-Lane compatible Frame formatting to transmit all common CCC Flow
4823 Elements, and such Target Devices shall use the 1-Lane compatible Frame formatting to receive the common
4824 CCC Flow Elements. However, different formatting that uses additional data Lanes shall be used for per-
4825 Target transactions involving such Target Devices (if previously configured to do so) for the HDR-x CCC
4826 Data Blocks within the Read Segments or Write Segments of Direct CCC flows.
4827 Alternately, a Controller may configure all Target Devices to use an “alternate mode” Coding that uses
4828 additional data Lanes or different formatting, in order to increase the performance or efficiency of HDR CCC
4829 flows. Such an “alternate mode” Coding might intentionally be incompatible with the “compatibility mode”
4830 Coding for this HDR Mode, but it should not be used unless all Target Devices support it. The Controller
4831 must ensure that all Target Devices are configured to use a mutually interoperable “alternate mode” Coding,
4832 and the rules for the “alternate mode” Coding shall apply.
4833 The specifics of Multi-Lane support for each HDR Mode are listed in the Framing details (see Table 63).
4834 Each section describing a specific HDR Mode lists the Flow Elements that may utilize Multi-Lane Frame
4835 formatting, while maintaining compatibility with all other Target Devices that might not be configured to use
4836 ML Frame formats. The ML Frame formats that are mutually interoperable are also defined in this
4837 specification.
4838 Since the Controller has the responsibility for configuring Multi-Lane for the Bus and all compatible Target
4839 Devices as well as initiating the CCC flow, it shall conform to these requirements, and shall ensure that all
4840 configuration is successfully completed. Likewise, the Controller must ensure that any core CCC Flow
4841 Elements that must be received and understood by all Target Devices supporting that HDR Mode are sent in
4842 an appropriate ML Frame format, as defined in the ML Frame formats that have been configured for all Target
4843 Devices, and that all Target Devices are configured to be mutually interoperable with respect to these core
4844 CCC Flow Elements. Likewise, all Target Devices shall also correctly receive and understand the Indicator
4845 and Selector blocks of the CCC flow in that ML Frame format, even if they have been otherwise configured
4846 to use an ML Frame format that uses additional Lanes or a different ML Frame format for standard (i.e., non-
4847 CCC) HDR transactions.
4848 Use of the MLANE CCC within an HDR Mode should be managed carefully, since the Direct SET forms of
4849 this CCC provide the unique ability to change a Target Device’s ML Frame format, and that directly impacts
4850 a Target’s ability to receive and understand an HDR-x CCC Data Block sent by a Controller, and also impacts
4851 a Target’s ability to respond on the data Lanes in a format that the Controller expects it to utilize for a given
4852 ML Frame format. As such, any misunderstanding or mismatch of expectations between a Controller and a
4853 Target may result in communication errors, which would require the Controller to catch any resulting errors
4854 and initiate a recovery procedure to restore communications.
4855 In some situations, this may require temporarily resetting a Target’s ML Frame format using the MLANE
4856 CCC (see Section 5.1.9.3.30) with Defining Byte value 0x7F (see Table 56). The forthcoming Application
4857 Notes for I3C v1.1.1 [MIPI07] is expected to include a more detailed recovery procedure which might require
4858 exiting HDR Mode if the Target fails to respond to this CCC with Defining Byte value 0x7F while in HDR
4859 Mode. To avoid these issues, it is strongly recommended to not use the Direct SET forms of this CCC within
4860 any HDR Mode, unless the Controller is able to ensure that all possible communication errors can be reliably
4861 detected and resolved.
4905 Note:
4906 The Target shall use the ML configuration (i.e., the currently configured ML Frame format) for its
4907 Dynamic Address in order to properly receive all common CCC Flow Elements as defined in
4908 Section 5.2.1.2.1). This includes any HDR-x transfers that are addressed to the Broadcast Address,
4909 which generally include the Indicator type HDR-x CCC Header Block as well as various HDR-x CCC
4910 End Procedures that are defined for that HDR Mode. Such common CCC Flow Elements must be
4911 sent by the Controller in a form that all Target Devices supporting that HDR Mode are configured to
4912 understand and properly receive, in a mutually interoperable manner; and each such Target Device
4913 shall respond according to such configuration, according to the current ML Frame format for that HDR
4914 Mode.
4915 The requirements in this section are a specific application of other normative requirements in this
4916 Specification (e.g., Section 5.1.4.4, Section 5.1.9.3.30, and Section 5.3.1.1.1). Such other sections
4917 also include other requirements, restrictions, and recommendations for Target Devices, as well as the
4918 Active Controller of the Bus. As the requirements in this section are intended for a specific use case
4919 of HDR transfers as applied to CCC flows in HDR Modes, readers are warned not to interpret this
4920 section as contradictory to any such requirements or restrictions in such other sections that govern all
4921 Multi-Lane configuration and all HDR transfers (including HDR transfers sent to Group Addresses).
SDA T-Bit
SCL C7 C8 C9
4956 Figure 99 Entering HDR Mode After ENTHDRx CCC (Dedicated Edge Clock)
4957 Note:
4958 In Figure 99, the I3C Bus enters the HDR Mode after the T-Bit, since the ENTHDRx Broadcast CCCs
4959 do not support Defining Bytes.
SDA
4973 Figure 100 Next HDR Mode Transfer After HDR Restart Pattern (Dedicated Edge Clock)
PAR1
PAR0
PRE1
PRE0
C.7 C.6 C.5 C.4 C.3 C.2 C.1 C.0 A.7 A.6 A.5 A.4 A.3 A.2 A.1 R
SDA
PR1 PR0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PA1 PA0
SCL
PAR1
PAR0
PRE1
PRE0
D0.7 D0.6 D0.5 D0.4 D0.3 D0.2 D0.1 D0.0 D1.7 D1.6 D1.5 D1.4 D1.3 D1.2 D1.1 D1.0
SDA
PR1 PR0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 PA1 PA0
SCL
PRE0
4991 Preamble bit interpretation depends on the context, as shown in Table 64. The context controls the roles of
4992 Controller and Target, such that for Data, the Target or Controller drives the second Preamble bit after the
4993 other I3C Device has Parked High. The Preamble value of 2’b00 is reserved for special use, as indicated
4994 when such use is defined.
4995 Table 64 HDR-DDR Preamble Values
Preamble Value and Interpretation
Context
2’b00 2’b01 2’b10 2’b11
After Enter HDR Command Word follows – –
Target ACK, Target NACK,
After Read CMD –
Data follows Aborted
Controller Aborts, Data follows.
Reserved Target yields.
After Read DATA CRC Word follows
for special Controller drives Controller does not
use cases second 0. drive second bit.
Target ACK, Target NACK,
After Write CMD –
Data follows Aborted
Target requests END
After Write DATA CRC Word follows Data follows
Controller complies
4996 HDR-DDR Mode defines four Word Types (see Figure 101):
4997 • Command Word:
4998 • The Preamble before a Command Word shall have the value 2’b01.
4999 • The length of a Command Word shall be 18 bits (16 value bits, 2 parity bits).
5000 HDR-DDR Mode Command Codes allow up to 128 Write or Read Commands,
5001 respectively (see Section 5.2.2.2).
5002 • Data Word:
5003 • The Preamble before a Data Word shall contain the value 2’b10 or 2’b11 (see Table 64).
5004 • The length of a normal Data Word shall be 18 bits (16 value bits as two bytes, 2 parity bits).
5005 • CRC Word:
5006 • The Preamble before a CRC Word shall have the value 2’b01.
5007 • The length of a CRC Word shall be 10 clocked bits (4 bit 4’hC token, 5 bits of CRC-5
5008 checksum, 1 bit of 1’b1 setup to prepare the Bus for the following HDR Exit Pattern or HDR
5009 Restart Pattern).
5010 • The value of the upper nibble (first 4 bits after the Preamble) of a CRC Word shall be 4’hC.
5011 • There is no parity checking for a CRC Word.
5012 • Following the falling edge of the last SCL pulse, the SDA shall be kept High (i.e., Open Drain
5013 class Pull-Up from Controller, while Target is in High-Z), for a time at least equal to tDIG_H.
5014 • Following transmission of a CRC Word, an I3C Device shall set up SCL and SDA to allow for
5015 an HDR Restart Pattern or HDR Exit Pattern.
5016 The CRC-5 algorithm is specified in Section 5.2.2.5.
5017 • Reserved Word (For special use only):
5018 • The Preamble before a Reserved Word (i.e., not a CRC Word) shall have the value 2’b01.
5019 • The length of a Reserved Word shall be 18 bits (4-bit token 4’hD / 4’hE / 4’hF, 12 reserved
5020 bits, and 2 parity bits).
5021 Note:
5022 HDR-DDR Mode also allows for special use cases to be defined in the future, via Preamble value
5023 2’b00.
SDR Mode
STOP .. START
2’b01 2’b01
READ WRITE
CMD Word CMD Word
2’b11
(Target NACK)
2’b11 2’b10
2’b10
(Target NACK)
5024
5025 Figure 102 HDR-DDR Preamble Bits State Diagram
5054 The two parity bits are formed from the payload bits, using an XOR function:
5055 • PA1 = Parity of the odd index Payload bits:
5056 D[15] ^ D[13] ^ D[11] ^ D[9] ^ D[7] ^ D[5] ^ D[3] ^ D[1]
5057 • PA0 = Parity of the even index Payload bits and 1:
5059 Table 66 summarizes the format of all four HDR-DDR Word Types.
5060 Table 66 HDR-DDR Word Formats
Preamble Payload Parity
Word Type Notes
2 bits 16 bits 1b 1b
15:8 First Data Byte (8 bits) One or more Data Words shall
2’b10 follow Command, unless
Data PA1 PA0 NACKed. Only CRC may follow
2’b11 7:0 Second Data Byte (8 bits)
Data.
15:12 4’hC (token value) (4 bits)
11:7 CRC-5 checksum (5 bits)
CRC value ends at bit 6,
6 1’b1 setup bit, followed by followed by either HDR Restart
CRC 2’b01 High level for a time of at Not Used Pattern or HDR Exit Pattern.
least tDIG_H, starting from the See signal diagrams in
falling edge of the last SCL Figure 104 and Figure 105.
clock pulse
5:0 Reserved (6 bits), No clocks
15:12 4’hD to 4’hF (4 bits)
Reserved 2’b01 PA1 PA0 Reserved for future use
11:0 Reserved (12 bits)
– 2’b00 Reserved for special use cases
5061 HDR-DDR Mode is entered in the standard way, using the Enter HDR CCC (see Section 5.1.9.3.8). After the
5062 Enter HDR CCC and its ninth bit (the T-Bit), the SCL falling edge begins the HDR Mode. The first HDR-
5063 DDR bit starts on the next SCL rising edge; that is, the Controller drives SDA when SCL is Low, and the
5064 Target samples SDA on the SCL rising edge. This allows the entry to HDR-DDR Mode, as shown in Figure
5065 106.
5066 Once in HDR-DDR Mode the Controller issues a Command Word to start every transfer (unless NACKed).
5067 In HDR-DDR Mode, Commands shall be issued only by a Controller. Data Words may be issued by a
5068 Controller or by a Target, depending on the particular Command (Write or Read). At least one Data Word
5069 shall be issued, unless the Target does not accept (ACK) the Command per Section 5.2.2.3.
5070 Figure 103 illustrates a typical HDR-DDR Mode Frame with two HDR Commands and their associated data:
5071 • I3C START or Repeated START
5072 • I3C CCC to Enter HDR-DDR Mode
5073 • After entering HDR-DDR Mode, there is one HDR-DDR Command Word, followed by one or
5074 more HDR-DDR Data Words, and then an HDR-DDR CRC Word
5075 • Then an HDR Restart Pattern
5076 • Then another HDR-DDR Command Word, HDR-DDR Data Word, and HDR-DDR CRC Word
5077 • Finally, HDR Mode is ended via the HDR Exit Pattern followed by I3C STOP
5078 Note:
5079 An HDR-DDR CRC Word might also be emitted after an abort, per Section 5.2.2.3.
SDR HDR
I3C Reserved byte Enter HDR-DDR HDR-DDR HDR DDR Data HDR DDR HDR Restart
S or Sr ACK T
(7'h7E) (R/W=0) CCC (ENTHDR0) Command (1 or more words) CRC Pattern
5082 Following the HDR-DDR CRC Word, the Controller provides either the HDR Restart Pattern or the HDR
5083 Exit Pattern.
5084 On a WRITE transaction, the Controller controls the whole transfer; as a result, the transition from the CRC
5085 Word to either the HDR Restart Pattern or the HDR Exit Pattern is done with only the Controller driving the
5086 SDA, while the Target’s SDA IO is on High-Z (see Figure 104).
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 CRC_CLK1 CRC_CLK2 CRC_CLK3 CRC_CLK4 CRC_CLK5 CRC_CLK6
0.3 X VDD
NOTE:
Vertical lines are tDIG_H apart = Active Drive by Controller or Target
= High-Z by Controller
5088 Figure 104 HDR-DDR CRC and HDR Restart Pattern or HDR Exit Pattern in Write Transaction
5089 On a Read transaction, the Target drives the CRC and the Controller takes over generation of the HDR Restart
5090 Pattern or HDR Exit Pattern. See Figure 105 for the signal diagram for this SDA handoff.
5091 This procedure has the following steps:
5092 1. The Target actively transfers the data, while the Controller is in High-Z.
5093 2. The Target actively drives the CRC Word, including pulling the setup bit (bit[6]) High.
5094 3. After a time of tSCO elapses after the falling edge of CRC_CLK6, the Target releases SDA on
5095 High-Z (Figure 105, point 3)
5096 4. The Controller keeps its SDA output on High-Z until the start of rising edge of CRC_CLK6, when
5097 it enables the Open Drain class Pull-Up (Figure 105, point 1). The SDA line remains driven by the
5098 Target.
5099 5. The Controller starts driving SDA High when it starts the falling edge of CRC_CLK6 (point 2 in
5100 the diagram). Since the Target was driving the setup bit (bit[6]) High, the two Devices are now
5101 driving in parallel.
5102 6. After a time of at least tDIG_H elapses after the falling edge of CRC_CLK6, the Controller may start
5103 the first falling edge of the SDA, commencing either the HDR Restart Pattern or the HDR Exit
5104 Patterns (Figure 105, point 4).
5105 7. The result of this procedure is a safe handoff of the SDA line from the Target to the Controller.
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
2 4
0.7 X VDD
CR_SDA
0.3 X VDD
≥ tDIG_H
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 CRC_CLK1 CRC_CLK2 CRC_CLK3 CRC_CLK4 CRC_CLK5 CRC_CLK6
0.3 X VDD
tSCO tDIG_H
1
NOTE:
Vertical lines are tDIG_H apart if
not stated otherwise = Active Drive by Controller or Target
= High-Z by Controller
5107 Figure 105 HDR-DDR CRC and HDR Restart Pattern or HDR Exit Pattern in Read Transaction
5112 Regarding bits 15:8 together, the possible Command Code spaces for Read Commands and Write Commands
5113 in HDR-DDR Mode are illustrated in Table 68.
5114 Table 68 Read and Write Command Spaces for HDR-DDR Mode
Command
Command Functions
Codes
0x00 – 0x7F Available for any use for writes
5115 Signal diagrams for starting the HDR-DDR Command Codes are shown in Figure 106 and Figure 107.
5116 Figure 106 shows the HDR-DDR Command Code after ENTHDR0, and Figure 107 shows the HDR-DDR
5117 Command Code after HDR Restart Pattern.
HDR-DDR Command Word
SDA
ENTHDR0 = 0x20 T=0
SCL C8 C9
SDA
5125 Figure 107 HDR-DDR Command Code After HDR Restart Pattern
Selectable END of
Optional Data END of Data
CCC Procedure
END of this CCC
HDR-DDR Data Word HDR-DDR CRC Word
[15:8] First Data Byte [7:0] Second Data Byte CRC for all Data HDR-DDR CCC
END PROCEDURE
HDR-DDR CCC Indicator Word HDR-DDR CCC Command Word CRC Word
WRITE, Broadcast Address (7'h7E) Direct CCC, Optional Defining Byte END of Indicator
HDR-DDR CCC Selector Word HDR-DDR CCC Data Word CRC Word
Write segment
(Direct SET)
WRITE to Target or Group Address Repeat N times, for all Data END of Data
HDR-DDR CCC Selector Word HDR-DDR CCC Data Word CRC Word THREE VERSIONS
Read segment
Selectable END of
(Direct GET)
READ from Target Address Repeat N times, for all Data END of Data
CCC Procedure
From Controller to Target From Target to Controller Multi-Lane Data/CRC not permitted (in I3C Basic)
5140
5141 Figure 109 HDR-DDR Direct CCC Format
5230 • This also applies to the Command Word when used appropriately for other purposes in CCC
5231 flows, such as CCC End Procedures.
5232 If the Controller does not receive acknowledgement from at least one Target, then it shall use any valid
5233 HDR-DDR CCC End Procedure. Additionally, it may initiate an error recovery procedure, which might
5234 include exiting HDR-DDR Mode and attempting to re-send the CCC in SDR Mode.
END of Data
Preceding CCC Data
or Indicator
WRITE, Broadcast Address (7'h7E) End of CCC: Broadcast 0x1F (dummy) End of CCC
END of modality
HDR-DDR Command Word HDR-DDR Data Word HDR-DDR CRC Word
HDR [15] 1'b0 (Write) [7:1] Broadcast Address [15:8] Dummy command code [7:0] Reserved CRC for CCC End HDR RESTART
ACK
RESTART [14:8] Reserved [0] Parity Adj. (P0 = 1'b1) 8'h1F, ends CCC modality (8'h00) Procedure or HDR EXIT
HDR EXIT
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 C2
0.3 X VDD
tSCO
1 2 3 4 5 6
= High-Z by Target
5371
5372 Figure 111 Target Accepts DDR WRITE Command from Controller
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1
0.3 X VDD
tSCO
1 2 3 4
= High-Z by Target
5392
5393 Figure 112 Target Does Not Respond to DDR WRITE Command from Controller
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 C2
0.3 X VDD
tSCO
1 2 3 4 5
= High-Z by Target
5421
5422 Figure 113 Target Accepts DDR READ Command from Controller
0.7 X VDD
SDA
0.3 X VDD
DDR READ
PAR1 PAR0 PRE1 PRE0
Cmnd [15:0]
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1
0.3 X VDD
tSCO
1 2 3 4
= High-Z by Target
5442
5443 Figure 114 Target Does Not Respond to DDR READ Command from Controller
5479 ENDXFER’s Broadcast or Direct sub-command 0xF7 shall be used during Data Transfer Protocol
5480 configuration. The sub-command byte 0xF7 is followed by one additional data byte (see Table 69) containing
5481 the parameters for the HDR-DDR Data Transfer Early Termination procedure.
5482 Table 69 ENDXFER CCC Additional Data Byte for Sub-Command 0xF7 (HDR-DDR Protocol)
Bits Description Values
[7:6] CRC Word Indicator 2’b11: No CRC Word follows Early
Termination request
2’b01: CRC Word follows Early
Termination request
Other: Reserved for future definition
by MIPI Alliance
[5] Enable WRITE Early Termination Request 1’b0: Enable
1’b1: Disable
[4] Enable ACK/NACK Capability for WRITE 1’b0: Enable
Command 1’b1: Disable
[3:0] Reserved for future use. –
5483 The Controller starts the set-up procedure by sending the ENDXFER CCC with sub-command 0xF7 and the
5484 additional data byte, indicating the desired set of parameters. If the Controller uses the Direct version of
5485 ENDXFER, then the RnW bit shall be 1’b0 (WRITE) for the directly addressed Devices.
5486 Then the Controller sends the Direct ENDXFER CCC with sub-command 0xF7. It addresses each distinct
5487 recipient of the previous ENDXFER with the RnW bit set to 1’b1 (READ). Note that a READ command
5488 cannot be sent to a Group Address. Each addressed Device shall respond with its active additional data byte;
5489 if the value is identical to what was sent, then the Controller receives confirmation that the set-up is correct.
5490 If the value is different, then the Controller can repeat the ENDXFER CCC with the 0xF7 sub-command,
5491 using either the Broadcast version or the Direct version, with RnW set to 1’b0 (WRITE) for the directly
5492 addressed Devices.
5493 If the Controller determines that the set-up was successful, then it shall then send the ENDXFER CCC with
5494 sub-command 0xAA. If the Direct version of ENDXFER is used, then RnW is set to 1’b0 (WRITE) for the
5495 directly addressed Devices and the data is set to 0xAA (i.e., the sub-command value is reused for the data
5496 byte value, to facilitate error detection).
5497 The Controller then checks for correct receipt of the command by using the Direct ENDXFER CCC with
5498 sub-command 0xAA, and with RnW set to 1’b1 (READ), for each directly addressed Device (not for a Group
5499 Address). Each addressed Device shall respond with a data byte containing the additional data byte pertaining
5500 to ENDXFER sub-command 0xF7 that is currently active in its system. If this value is correct, then the
5501 Controller shall begin communications using the agreed-upon Data Transfer Early Termination procedure. If
5502 the value is not correct, then the Controller shall either abort the Data Transfer Early Termination procedure,
5503 or else repeat the set-up process.
5504 The Controller may start a new set-up at any time during the configuration process, or during the running
5505 stage, by sending an ENDXFER CCC with sub-command 0xF7 and a new additional data byte. The new set-
5506 up overwrites the old set-up.
0.7 X VDD
SDA
0.3 X VDD
DDR READ
PAR1 PAR0 PRE1 PRE0
Cmnd [15:0]
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1
0.3 X VDD
tSCO
1 2 3 4
NOTE:
The Target SDA change starts after the tSCO, as shown by = Active Drive by Controller or Target
the vertical timing lines
The Controller drives SDA with a suitable delay, so as to = Open-Drain class Pull-Up by Controller
achieve the set-up timing
= High-Z by Controller
= High-Z by Target
5546
5547 Figure 115 Controller Ends DDR Read and Provides Either HDR Restart Pattern or HDR
5548 Exit Pattern
5596 At this point, the Read data transfer from the Target to the Controller has entered the CRC-based Ending
5597 Procedure.
5598 Note:
5599 Up until dot 7, the steps are identical to Figure 115. The numbered blue dots (steps 1–7) are the
5600 same as ending the Read Transfer without the CRC Word, and the numbered red dots (steps 8–15)
5601 show the additional steps for ending the Read Transfer with the CRC Word.
Beginning of CRC
1'b1 1'b1 1'b0 1'b0
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 CLK_CRC1 CLK_CRC2 CLK_CRC3
0.3 X VDD
tSCO
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
7
NOTE: = Active Drive by Controller or Target
The Target SDA change starts after the tSCO, as shown by
the vertical timing lines = Open-Drain class Pull-Up by Controller
Controller aborts the DDR READ from Target = High-Z by Controller
and Target provides the CRC
5602 = High-Z by Target
5603 Figure 116 Controller Ends DDR Read and Target Provides CRC
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 C2
0.3 X VDD
tSCO
1 2 3 4 5 6 7
= High-Z by Controller
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1
0.3 X VDD
tSCO
1 2 3 4 5 6 7
NOTE:
The Target SDA change starts after the tSCO, as shown by = Active Drive by Controller or Target
the vertical timing lines
= Open-Drain class Pull-Up by Controller
The Controller drives SDA with a suitable delay, so as to
achieve the set-up timing
= High-Z by Controller
= High-Z by Target
5667
5668 Figure 118 Target Requests DDR Write Termination and Controller Provides HDR Restart
5669 Pattern or HDR Exit Pattern
Beginning of CRC
1'b1 1'b1 1'b0 1'b0
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 CLK_CRC1 CLK_CRC2 CLK_CRC3
0.3 X VDD
tSCO
1 2 3 4 5 6 7
6 7 8 9 10 11 12
NOTE:
The Target SDA change starts after the tSCO, as shown by = Active Drive by Controller or Target
the vertical timing lines
The Controller drives SDA with a suitable delay, so as to = Open-Drain class Pull-Up by Controller
achieve the set-up timing
= High-Z by Controller
= High-Z by Target
5707
5708 Figure 119 Target Requests DDR Write Termination and Controller Provides CRC
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
T_SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
T_SCL
0.3 X VDD
0.7 X VDD
CR_SCL
0.3 X VDD
0.7 X VDD
SCL C10 C1 C2
0.3 X VDD
tSCO
1 2 3 4 5 6 7
= High-Z by Target
5733
5734 Figure 120 Target Continues the DDR Write From Controller
5876 The wire form of HDR-BT is a DDR style, meaning that the 1, 2, or 4 SDA Lanes change on each clock edge
5877 and are read on the following edge, using a Setup time model (vs. Hold):
5878 • For the Controller on Write, which Drives the clock and data, this means the SDA(s) change(s)
5879 only after the SCL has completely transitioned (as with normal I3C).
5880 • For the Target on Read, when only driving the SDA(s) but not SCL, the SDA(s) change(s) only
5881 after the SCL change has been received/detected.
5882 • For the Target on Read, when the Target is driving both clock and data, this means the SDA(s)
5883 change(s) only after the SCL has completely transitioned.
5884 Signal diagrams for starting HDR-BT Mode transfers are shown in Figure 121 and Figure 122. Figure 121
5885 shows the HDR-BT Header Block (see Section 5.2.4.3.1) after ENTHDR3, and Figure 122 shows the
5886 HDR-BT Header Block after the HDR Restart Pattern.
ADDR [0]
ADDR [x] […] […]
(RnW)
SCL C7 C8 C9 C1 C2
Second BT edge
First BT edge
SDA
ADDR [0]
ADDR [x] […] […]
(RnW)
SCL Edge
Validates Restart
SCL C1 C2
Second BT edge
Set Up SCL First BT edge
If Needed
LOW SCL <= SDA change, prepare for P1
Controller drives Push-Pull SCL falling edge <= end of SCL pulse
5889
5890 Figure 122 HDR-BT Header Block After HDR Restart Pattern
5891 Note:
5892 Both Figure 121 and Figure 122 are derived from the edge-triggering examples shown in
5893 Section 5.2.1.3. In both cases, the Controller positions SDA[0] (i.e., SDA) after the falling SCL edge,
5894 and before the SCL rising edge labeled “C1”. This bit shall be read by the addressed Target (or
5895 Group) as Bit[0] of the Target Address, which is the “RnW” bit for the transfer (per Section 5.2.4.3).
5896 The HDR-BT Header Block is always sent according to the Lane configuration of the currently
5897 configured HDR-BT Data Transfer Coding for Multi-Lane (see Section 5.3.2.4.1) which is a global
5898 setting for the I3C Bus, using the defined Bit Packing for Data Bytes and Transition Bytes.
5899 Figure 123 illustrates a typical HDR-BT Mode Frame with two HDR-BT transfers and associated data:
5900 • I3C START or Repeated START
5901 • I3C CCC to Enter HDR-BT Mode
5902 • After entering HDR-BT Mode, there is one HDR-BT transfer. It starts with an HDR-BT Header
5903 Block, followed by one or more HDR-BT Data Blocks, and then an HDR-BT CRC Block.
5904 • Then an HDR Restart Pattern, followed by another HDR-BT transfer having a similar flow.
5905 • Finally, HDR-BT Mode is ended via the HDR Exit Pattern followed by I3C STOP.
SDR
I3C Reserved byte Enter HDR-BT
S or Sr ACK T
(7'h7E) (R/W=0) CCC (ENTHDR3)
HDR
HDR-BT Header HDR-BT Data HDR-BT HDR Restart
(with Command) (1 or more Blocks) CRC Block Pattern
5.2.4.1 SDA Lane Bit Packing: Data Bytes (Commands, Data, CRC)
5911 On the SDA[x] Lanes, HDR-BT always packs bytes of Data in the same way, based on number of Lanes as
5912 shown in Table 70 through Table 72.
5913 Note that Transition control packing is different, per Section 5.2.4.2.
5914 Note:
5915 Unlike SDR Mode, the bits are transmitted starting with LSb and progressing to MSb.
5934 Table 74 Transition Byte Bit Packing: Dual Lane with Bit2 Swizzle
5935 Table 75 Transition Byte Bit Packing: Quad Lane with Bit4 Swizzle
5937 Where:
5938 • The Header indicates the Target (or Group) and the Direction for the transfer, as well as 4 bytes
5939 optionally associated with command/index/offset and/or expected length.
5940 This follows the normal I2C and I3C protocol of the first byte(s) on Write being the
5941 index/command, and Write preceding Read containing the index/command.
5942 Note:
5943 The actual interpretation is a contract between Controller and Target.
5944 • Data is 0 or more 32-byte Data Blocks. The processed length of the last block may be ragged.
5945 Data Blocks use 33 bytes for each 32 bytes of real data, with one byte used for transition and
5946 control.
5947 • CRC shall be either a CRC-16 or a CRC-32 verification at the end of the Message, occupying 6
5948 bytes. The selection between CRC-16 and CRC-32 shall be made by the Controller, and shall be
5949 indicated in the Header.
5951 Where:
5952 • Address shall be either:
5953 • The 7-bit I3C Dynamic Address of the Target to be addressed for this transfer, in Bits[7:1],
5954 with Bit[0] = 0 for a Write, or = 1 for a Read; or
5955 • A valid 7-bit Group Address (if assigned and supported) in Bits[7:1], with Bit[0] set to 0 (as
5956 this case is always a Write); or
5957 • The I3C Broadcast Address (i.e., 7’h7E), which indicates framing for CCC transmission in
5958 HDR-BT Mode (per Section 5.2.4.4).
5959 • Cmd0 to Cmd3 may be used as the indicator to the Target (or Group) as to the meaning/context of
5960 the data:
5961 • If Address is a Dynamic Address or Group Address (i.e., is not 7’h7E), then this transfer is a
5962 generic Write or Read transfer.
5963 For a generic Write or Read transfer, fields Cmd0 through Cmd3 would typically be used
5964 as with standard I3C SDR protocols, for command/index/offset and length (actual or
5965 maximum), but the exact meaning is a contract between the Controller and the Target (or
5966 all Targets in an assigned Group).
5967 • If Address is 7’h7E (as defined above), then per Section 5.2.4.4 this is a CCC.
5968 • If this is the first HDR-BT Header Block with Address 7’h7E, then Cmd0 shall be the CCC
5969 Code, and the Controller starts the CCC modality.
5970 • Subsequent HDR-BT Header Blocks shall comprise CCC flows, until the Controller exits
5971 the CCC modality by using a valid HDR-BT CCC End Procedure per Section 5.2.4.4.7.
5972 Note:
5973 Per Table 16, only some CCCs may be used in HDR-BT Mode.
5974 • Control is a byte and shall be formatted thus:
5975 • Bit[0] = 0 for a Write, or = 1 for a Read. It shall match Address Bit[0].
5976 • Bit[1] = 0 if CRC-16 is used, or = 1 if CRC-32 is used.
5977 • The Controller shall not select CRC-32 if the addressed Target (or Group) does not support
5978 CRC-32.
5979 • The Target shall not accept a Message indicating CRC-32 if it does not support CRC-32.
5980 (If Address indicates a Group Address, then all Targets assigned to that Group Address
5981 must support CRC-32.)
5982 • Bit[2]:
5983 • For a Read, Bit[2] = 0 if the Controller transmits SCL, or = 1 if the Target transmits SCL.
5984 The Controller shall not select “Target transmits SCL” unless the Target supports
5985 it. The Target shall not accept a Message indicating that it supplies SCL if it does
5986 not actually support driving SCL.
5987 • For a Write, Bit[2] is Reserved and shall be set to 1’b0.
5988 • Bit[3] = 0 for a normal Message, or = 1 for a continuation of a Direct CCC (GET or SET).
5989 • Bits[5:4] are Reserved and shall be set to 2’b00.
5990 • Bits[7:6] = Parity 0 and Parity 1 on the whole Header (up through this Control byte), using the
5991 even and odd positioned bits respectively. This follows a model similar to HDR-DDR (see
5992 Section 5.2.2.1), using an XOR function:
5993 Bit[6] = Parity of the even index bits, from Header Bytes 0 through 5, and 1:
5994 Address[0] ^ Address[2] ^ Address[4] ^ Address[6] ^
5995 Cmd0[0] ^ Cmd0[2] ^ Cmd0[4] ^ Cmd0[6] ^
5996 Cmd1[0] ^ Cmd1[2] ^ Cmd1[4] ^ Cmd1[6] ^
5997 Cmd2[0] ^ Cmd2[2] ^ Cmd2[4] ^ Cmd2[6] ^
5998 Cmd3[0] ^ Cmd3[2] ^ Cmd3[4] ^ Cmd3[6] ^
5999 Control[0] ^ Control[2] ^ Control[4] ^ 1
6000 Bit[7] = Parity of the odd index bits, from Header Bytes 0 through 5:
6001 Address[1] ^ Address[3] ^ Address[5] ^ Address[7] ^
6002 Cmd0[1] ^ Cmd0[3] ^ Cmd0[5] ^ Cmd0[7] ^
6003 Cmd1[1] ^ Cmd1[3] ^ Cmd1[5] ^ Cmd1[7] ^
6004 Cmd2[1] ^ Cmd2[3] ^ Cmd2[5] ^ Cmd2[7] ^
6005 Cmd3[1] ^ Cmd3[3] ^ Cmd3[5] ^ Cmd3[7] ^
6006 Control[1] ^ Control[3] ^ Control[5]
6007 Note:
6008 The Controller shall compute the Parity for all other bits in the Header Block, including any
6009 reserved fields; but not for any fields in the following Transition byte, which would not yet
6010 have been sent on the SDA Lane(s) by the time the Control byte was sent.
6011 • Transition occupies one byte, and shall use the SDA[0] Line for the first 2 half-clocks, and shall
6012 follow the I3C “Park1,High-Z” approach for Bus transition and acceptance (see Section 5.2.4.2).
6013 • Bits[1:0]:
6014 • Bit[0] as SDA[0]’s first half-clock shall be Parked High by the Controller
6015 • Bit[1] as SDA[0]’s second half-clock shall be High-Z by Controller; the Target (or all
6016 Targets in the Group) shall either drive it Low in order to accept the Write or Read, or else
6017 leave it undriven to not accept (see Section 5.2.4.7).
6018 Note:
6019 If there is a Read request, and if the Target sources the Clock, then the Controller shall
6020 also release the clock during the second half-clock period if the Target is accepting (i.e.,
6021 if SDA[0] is driven to zero), so that the Target drives the next Edge.
6022 The SCL handoff follows the convention that if the Target is accepting, then it shall
6023 drive/hold the SCL line High (i.e., the same as the Controller) during this half-clock, so
6024 that they overlap.
6025 If the Target does not drive the clock within tBT_HO (i.e., the HDR-BT handoff period)
6026 after accepting, then the Controller shall regain control.
6027 • Bit[2]:
6028 • For a Read:
6029 • Bit[2] = 0 indicates that the Target is permitted to use the Data Block Delay
6030 mechanism if it needs extra time to prepare data to return for the Read transfer. See
6031 Section 5.2.4.3.4 for more details.
6032 The Controller may not use Bit[2] = 0 if it already allowed or previously
6033 configured another Target to terminate a long transfer (per
6034 Section 5.2.4.3.4).
6035 • Bit[2] = 1 indicates that the Target may not use Data Block Delay for this read
6036 transfer.
6037 • For a Write, Bit[2] is Reserved and shall be set to 1’b0
6038 • Bits[7:3] are Reserved and shall be set to 5’d0
Transition_Control Data 0 to 31
6040 Where:
6041 • Transition_Control occupies one byte, and shall use the SDA[0] line for the first two half-clocks,
6042 and follows the I3C “Park1,High-Z” approach for termination by the receiver (see
6043 Section 5.2.4.2).
6044 • Bits[1:0]:
6045 • Bit[0] as SDA[0]’s first half-clock shall be Parked High by the transmitter of the data (i.e., by
6046 the Controller for a Write, or by the Target for a Read).
6047 • Bit[1] as SDA[0]’s second half-clock shall be High-Z’ed by the transmitter of the data (i.e., by
6048 the Controller for a Write, or by the Target for a Read). The receiver may drive SDA[0] Low to
6049 terminate the transmission, otherwise the receiver leaves it undriven to allow the data to
6050 continue normally.
6051 Note:
6052 If terminated, then the transmitter will emit a CRC Block as the next byte (see
6053 Section 5.2.4.7).
6054 • Bit[2] = 0 if not the Last Data Block, or = 1 if the Last Data Block before the CRC Block.
6055 • Bit[3] = Odd Parity of this Transition_Control byte bits [2] to [7]. This is not parity of the data.
6056 The data validity is handled by the CRC at the end (i.e., in the CRC Block; see Section 5.2.4.3.3).
6057 Note:
6058 If the Transition_Control parity does not match, or if the “Park1” is not 1, then there is a
6059 framing error. The High-Z may be 0 if the other side has terminated or if a separate
6060 Target was permitted to terminate and has done so. See Section 5.2.4.3.4 for details.
6061 If this is the Last Data Block before the CRC Block, then:
6062 • Bits[7:4] = Byte-pairs in Data Block minus 1 (i.e., 0xF if all 32, or 0x0 for 2 bytes)
6063 If this is not the Last Data Block, then:
6064 • Bits[7:5] are Reserved and shall be set to 3’d0
6065 • Bit[4]:
6066 • For a Read:
6067 • Bit[4] = 0 indicates that the Target (as transmitter) is sending a valid Data Block.
6068 • Bit[4] = 1 indicates that the Target (as transmitter) is using the Data Block Delay
6069 mechanism, to delay sending the next Data Block in this transfer. The Target
6070 may only use the Data Block Delay mechanism if the Controller indicated that
6071 the Target was permitted to do so (i.e., if it sent the Transition byte with Bit[2] =
6072 0 in the Header Block for this Read transfer; see Section 5.2.4.3.4 for more
6073 details).
6074 • For a Write: Bit[4] shall be set to 0.
6075 • Data shall be transmitted from Byte 0 to Byte 31
6076 Note:
6077 For the Last Data Block, the receiver shall ignore padding Bytes past the ragged length. These extra
6078 bytes should be set to 8’d0, but may contain any value.
6079 Note:
6080 It is recommended for the Last Data Block length to match the receiver’s natural data width, such as
6081 32 bits or 64 bits to match internal memory or buses. Further, if the data is encrypted, then the
6082 encryption algorithm’s blocking size should be considered (e.g., 128-bit for AES).
6084 Where:
6085 • Control is a byte that indicates that this CRC Block is not another Data Block, since Bit[0] is 0
6086 (Low) instead of 1 (i.e., Parked High).
6087 The CRC Block should be expected, since either the previous Data Block indicated it was the Last
6088 Data Block, or else the transfer was terminated (i.e., High-Z driven Low by the receiver).
6089 The Control byte also verifies the CRC type previously selected in the Header Block, and whether
6090 the previous Data Block was a Last Data Block, or was Terminated.
6091 Therefore, the Control byte shall contain:
6092 • Bits[2:0] = 3’b0 always.
6093 • Bit[3] = Odd Parity of this Control byte’s Bits[7:2]
6094 Note:
6095 If the parity does not match, or if Bit[0] is not = 0, or if Bit[1] is not = 0, then there is a framing
6096 error.
6097 • Bit[4] = 0 always
6098 • Bit[5] = Same value as the Header Block’s Control byte, Bit[1]: 1’b0 for CRC-16, or 1’b1 for
6099 CRC-32.
6100 Note:
6101 If this value does not match the value from the Header bit, then there is an error.
6102 • Bit[6] = 0 if the transaction ended normally, or = 1 if the previous Data Block was terminated
6103 (i.e., if its High-Z was driven to 0 by the receiver).
6104 Note:
6105 If this bit does not agree with what the receiver believes actually happened, then there is an
6106 error. That is, if the receiver did not see the last Data Block terminated (either by itself, or by
6107 a separate Device), and the transmitter says it was terminated, then there is an error.
6108 Likewise, if the receiver did not see the last Data Block marked as Last, but the transmitter
6109 says it ended normally, then there is an error.
6110 • Bit[7] = Reserved and shall be set to 1’b0.
6111 • Bytes CRC0 to CRC3 shall contain the value of the specified CRC algorithm, as computed by the
6112 transmitter: either CRC-16, or CRC-32 (if supported).
6113 The transmitter shall calculate the checksum based on the valid contents of all previous Data
6114 Blocks that were sent before this CRC Block, using the following requirements:
6115 • For each Data Block except the Last Data Block, this includes the entire 33-byte contents of
6116 the Data Block (i.e., the value in the Transition_Control byte, as well as all 32 Data bytes).
6117 • For the Last Data Block, this includes the Transition_Control byte, as well as the number of
6118 valid Data bytes in the Last Data Block (i.e., as indicated by the number of byte-pairs, sent in
6119 Bits[7:4] of the Transition_Control byte). However, any padding bytes in the Last Data Block
6120 shall be ignored.
6121 • In either case, all bits in the Transition_Control byte shall always be included, even if the
6122 receiver terminates the transfer during the Transition_Control byte (i.e., by driving SDA[0] to
6123 Low).
6124 • For terminated transfers, the actual values driven on the SDA[0] Lane shall be used, and
6125 the transmitter shall include only the Transition_Control byte. Note that the transmitter
6126 will start emitting a CRC Block as the next byte after the Transition_Control byte, if the
6127 receiver terminates the transfer (see Section 5.2.4.3.2).
6128 In this case, for the purposes of checksum calculation, the transmitter shall not
6129 include any subsequent data bytes that it intended to send, but would have been
6130 skipped due to a terminated transfer.
6131 The following structured protocol elements shall not be included in the checksum calculation:
6132 • The Header Block shall be ignored.
6133 • If this is a Read transfer, and if the Target (as transmitter) was permitted to use the Data Byte
6134 Delay mechanism (see Section 5.2.4.3.4), then the transmitter shall ignore any Delay bytes
6135 that it might send in place of valid Data Blocks. Only valid Data Blocks shall be used in the
6136 calculation of the checksum.
6137 • The Control byte in the CRC Block shall be ignored.
6138 The receiver shall also calculate the checksum based on the same requirements, as it receives each
6139 Data Block during the transfer.
6140 If Bit[1] in the Header Block’s Control byte is 1’b0, then the transmitter shall use CRC-16:
6141 For CRC-16, the generator polynomial is:
6142 X16 + X15 + X2 + 1
6143 Note:
6144 For shift register implementations, this polynomial is expressed as 0x8005 in big-endian
6145 notation, or 0xA001 in little-endian notation.
6146 • The initial value is all 1s (i.e., 0xFFFF).
6147 • The natural bit order of data in HDR-BT Mode is little endian, so Bytes 1 and 2 (fields
6148 CRC0 and CRC1) shall contain the calculated checksum:
6149 • Byte 1 (CRC0) shall contain bits[7:0] of the checksum
6150 • Byte 2 (CRC1) shall contain bits[15:8] of the checksum
6151 • Bytes 3 and 4 (fields CRC2 and CRC3) shall contain all 0s.
6152 If Bit[1] in the Header Block’s Control byte is 1’b1, then the transmitter shall use CRC-32:
6153 For CRC-32, the generator polynomial is:
6154 X32 + X26 + X23 + X22 + X16 + X12 + X11 + X10 + X8 + X7 + X5 + X4 + X2 + X + 1
6155 Note:
6156 For shift register implementations, this polynomial is expressed as 0x04C11DB7 in
6157 big-endian notation, or 0xEDB88320 in little-endian notation.
6158 • The initial value is all 1s (i.e., 0xFFFFFFFF).
6159 • The natural bit order of data in HDR-BT Mode is little-endian, so Bytes 1 through 4 (fields
6160 CRC0 through CRC3) shall contain the calculated checksum, as follows:
6161 • Byte 1 (CRC0) shall contain bits[7:0] of the checksum
6162 • Byte 2 (CRC1) shall contain bits[15:8] of the checksum
6163 • Byte 3 (CRC2) shall contain bits[23:16] of the checksum
6164 • Byte 4 (CRC3) shall contain bits[31:24] of the checksum
6165 Example CRC Checksum Calculations
6166 Table 76 presents example CRC checksum calculations as a reference. All values are presented
6167 using big-endian notation, and the CRC-16 and CRC-32 values are based on the initial value of all
6168 1s. For each example it is assumed that the CRC checksum is calculated from a data message
6169 having a single byte.
6170 Table 76 Example CRC Checksum Calculations
Data Byte CRC-16 CRC-32
0x00 0x40BF 0x2DFD1072
0x91 0xEC7E 0xAAF5B3A0
0xF7 0xC6FE 0x0E2477CD
6171 Note:
6172 In the examples above, the computed checksum after the single data byte could also be viewed
6173 as the state after processing the first byte of a longer message. The example for data byte 0xF7 is
6174 relevant, as this matches the expected value of the Transition_Control byte for a Last Data Block
6175 that contains 32 valid data bytes (see Section 5.2.4.3.2).
6212 For HDR-BT Read transfers, the Target shall release SDA[0] after the second half-clock (i.e.,
6213 Bit[1]). Subsequent actions shall depend on the bit packing scheme, per Section 5.2.4.2, as
6214 follows:
6215 • If the Target was configured to use a bit packing scheme with multiple clock cycles (i.e.,
6216 Single Lane or Dual Lane): If the Controller (as receiver) does not verify the transfer and
6217 leaves SDA[0] undriven for the second half-clock, then it shall pull SDA[0] Low after Bit[1]
6218 (i.e., the following half-clock), unless it loses framing or there is an error.
6219 • If the Target was configured to use a bit packing scheme with a single clock cycle (i.e., Quad
6220 Lane): If the Controller (as receiver) does not verify the transfer and leaves SDA[0] undriven
6221 for the second half-clock, then SDA[0] shall remain High through the end of the
6222 Transition_Verify byte. After this, the CRC Block ends and the Controller typically drives
6223 either the HDR Restart Pattern or the HDR Exit Pattern.
6224 For HDR-BT Read transfers that use additional Data Lanes, the Target shall drive these Data Lanes
6225 (e.g., SDA[1:3]) to Low for the first half-clock, and then High-Z these Lanes for the second half-
6226 clock (i.e., along with the High-Z of SDA[0]). If the Target was providing SCL clock, then this
6227 coincides with the handoff of SCL and SDA[0] to the Controller (as receiver). Unless the
6228 Controller encounters a framing issue and must use an error recovery procedure (i.e., without
6229 verifying the Read transfer), the Controller shall take ownership of these additional Data Lanes for
6230 the second half-clock, and shall drive them Low at the appropriate time to either verify or not
6231 verify the transfer.
6232 For HDR-BT Write transfers, the Controller (as transmitter) shall drive SDA[0] to Low as required
6233 by the configured bit packing scheme, after providing the receiver (i.e., the addressed Target or
6234 Group) an opportunity to verify the transfer for the second half-clock. After this opportunity, the
6235 Controller shall control and drive SDA[0] as required by the bit packing scheme to ensure that
6236 Bits[4:2] are always 3’d0:
6237 • If the receiver was configured to use a bit packing scheme with multiple clock cycles (i.e.,
6238 Single Lane or Dual Lane): If the receiver does not verify the transfer and leaves SDA[0]
6239 undriven (i.e., High) for the second half-clock, then the Controller shall pull SDA[0] Low
6240 after Bit[1] (i.e., the following half-clock); and subsequently shall either hold SDA[0] Low
6241 through the end of the Transition_Verify byte, or optionally (i.e., by prior agreement and
6242 configuration) High-Z or drive to High SDA[0] as needed (i.e., for any such reserved
6243 Bits[7:5] that might be used) per the bit packing scheme. Following the last clock cycle, the
6244 Controller shall pull SDA[0] High before it drives either the HDR Restart Pattern or the HDR
6245 Exit Pattern.
6246 • If the receiver was configured to use a bit packing scheme with a single clock cycle (i.e.,
6247 Quad Lane): If the receiver does not verify the transfer and leaves SDA[0] undriven (i.e.,
6248 High) for the second half-clock, then SDA[0] shall remain High through the end of the
6249 Transition_Verify byte. After this, the CRC Block ends and the Controller shall drive either
6250 the HDR Restart Pattern or the HDR Exit Pattern.
6251 For HDR-BT Write transfers that use additional Data Lanes, the Controller shall drive these Data
6252 Lanes (e.g., SDA[1:3]) to Low (i.e., 0 values) for the first half-clock. Subsequently, the Controller
6253 shall either hold these Data Lanes to Low for the remaining clock cycles of the Transition_Verify
6254 byte; or optionally (i.e., by prior agreement and configuration) High-Z or drive to High any
6255 relevant Data Lanes as needed (i.e., for any such reserved Bits[7:5] that might be used) for the
6256 receiver’s bit packing scheme.
6257 Note:
6258 The HDR-BT CRC Block diagrams in Section 5.2.4.6 show the reserved Bits[7:5] as 3’d0.
6306 The Target may use the Data Block Delay mechanism repeatedly throughout the HDR-BT Read transfer,
6307 before the first Data Block or any subsequent Data Block, so long as Bit[2] of Transition_Control is 0 (i.e.,
6308 not a Last Data Block).
6309 The Data Block Delay mechanism should not be used when the Controller has activated any other Targets
6310 wishing to have the right to terminate the transaction, as they may not be able to track this mechanism
6311 properly. That is, when the Controller is Reading from Target A, but has also activated Target B in order to
6312 be able to terminate the transaction, then it should indicate that Data Block Delay is not permitted.
6313 If the Controller controls the SCL for a Read transfer, and if the Target is not permitted to use the Data Block
6314 Delay mechanism but still cannot provide Data Blocks to safely maintain the HDR-BT Read transfer (i.e.,
6315 due to internal data readiness), then the Controller might need to slow the SCL (i.e., reduce the data rate) to
6316 better match the Target’s capability. This either should be arranged by private contract between the Controller
6317 and Target, or should be discovered from the Target before the Controller starts the HDR-BT Read transfer.
6318 Note:
6319 The I3C Basic Specification does not define a mechanism for discovering a Target’s capability to
6320 provide Read data using HDR-BT, or whether it can sustain HDR-BT Read transfers at a given
6321 minimum transfer rate. It is assumed that this mechanism could be a private contract between the
6322 Controller and the Target, or could be discovered and controlled by other configuration methods.
6323 Alternatively, if the Target is unable to provide the next Data Block that contains a full 32 bytes of data, then
6324 it may emit a Last Data Block and end the transaction early.
6325 Note:
6326 The I3C Basic Specification does not define a mechanism for the Target (as transmitter) to explicitly
6327 inform the Controller (as receiver) that a Last Data Block was unexpected, in cases where the Target
6328 was unable to provide a Data Block that contained a full 32 bytes of data. This may happen if the
6329 Target was unable to provide a full 32 bytes of data at a sustained rate due to extended delay
6330 conditions (i.e., a prolonged stall from other application logic). The Target may encounter this
6331 situation, even when using the Data Block Delay mechanism, if it had already sent the maximum
6332 number of Delay bytes before the next Data Block. The Target may also encounter this situation if it
6333 was not permitted to use the Data Block Delay mechanism. In either case, the Controller must handle
6334 such a situation where the full data message for a Read transfer is shorter than expected, based on
6335 the specific I3C content protocol or a private contract between Controller and Target.
5.2.4.3.5 Performance
6336 The Bus efficiency can be seen in Table 77 using 12.5 MHz; all numbers can be scaled to Freq:
24 Mbps / 48 Mbps /
10 KByte Message “/” 10K / (10K+12) * 32 / 33 * freq
96.86 Mbps
Note:
1. The equation for Messages (vs. just data blocks) factors in the header and CRC as overhead.
However, to keep it simple, the expression is incorrect by 12*33/32 or 0.375*freq, so about 1 KHz
worst case.
6338 Worst case and average delay when terminating a Message early at 12.5 MHz:
6339 • Single Lane: Worst Case: 10.5 µs, Average: 5.28 µs. Plus 1.92 µs for CRC
6340 • Dual Lane: Worst Case: 5.28 µs, Average: 2.64 µs. Plus 960 ns for CRC
6341 • Quad Lane: Worst Case: 2.64 µs, Average 1.32 µs. Plus 480 ns for CRC
6342 Note:
6343 • Parity is only lightly used in this protocol. It is mainly used to catch framing errors. The positive
6344 Verification at the end (after the CRC) ensures that the transmission was correct in terms of bits
6345 and framing.
6346 • The Verify model allows the I3C Controller’s Host system to operate a TCP/IP style windowing
6347 mechanism to avoid the processor having to check too often. This means that the Host can
6348 queue up blocks of, e.g., 1 K to 10 K bytes, and then pipeline back the verify successes/failures,
6349 allowing the Host to resubmit any that failed, freeing up ones that succeeded.
Selectable END of
add’l Optional Data
CCC Procedure
HDR-BT CCC Selector Block (Target) HDR-BT CCC Data Block CRC Block
Write segment
(Direct SET)
WRITE to Target Indicator, Target Address Repeat N times, for all Data
HDR-BT CCC Selector Block (Target) HDR-BT CCC Data Block CRC Block THREE VERSIONS
Read segment
Selectable END of
(Direct GET)
READ from Source Indicator, Target Address Repeat N times, for all Data
CCC Procedure
From Controller to Target From Target to Controller Multi-Lane data permitted (per Target config)
6355
6356 Figure 125 Begin Direct CCC in HDR-BT
Option 2: End HDR-BT CCC Followed by HDR-BT Generic Transaction (+ Optional HDR Exit)
6493 This End Procedure indicates the end of CCCs in HDR-BT Mode, and either a return to standard HDR-BT
6494 transactions, or a subsequent exit from HDR-BT Mode.
6495 This End Procedure begins with an HDR Restart Pattern, followed by an HDR-BT Header Block which ends
6496 the CCC flow, but is neither an Indicator nor a Selector. This is followed by an HDR-BT CRC Block
6497 containing a checksum of the payload from the preceding Header Block. Since the preceding Header Block
6498 is neither an Indicator nor a Selector, no CCC or optional Defining Byte is included.
6499 After this, the HDR Restart Pattern signals the end of CCC modality, and that the next HDR-BT Header
6500 Block must be treated as a standard HDR-BT transaction (not as a CCC flow). Alternatively, the HDR Exit
6501 Pattern signals the end of HDR-BT Mode and a subsequent return to SDR Mode.
6502 In either case, the HDR-BT Header Block is distinguished from an HDR-BT CCC Indicator Block because
6503 it indicates a ‘Read’ command from the Broadcast Address (7’h7E), which would otherwise be an invalid
6504 combination for HDR-BT transactions. Target Devices shall interpret this condition followed by the CRC
6505 Block as the Termination Marker ending CCC modality, since this condition is distinct from the start of a
6506 new Broadcast CCC or Direct CCC (per CCC End Procedure Option 1, above).
6507 The flow steps are:
6508 1. Controller sends HDR Restart Pattern.
6509 2. Controller sends HDR-BT Header Block, using the following values:
6510 • The Address field (byte 0) shall contain the Broadcast Address (7’h7E).
6511 • The Control field (byte 5) shall be set to indicate the end of the CCC modality:
6512 • Bit[0] contains 1’b1 to indicate a Read.
6513 • Bit[3] contains 1’b0 to indicate that Direct CCC framing is not continued from a prior
6514 Selector Block (if applicable).
6515 • Other bitfields shall be set accordingly.
6516 • The bit packing format of this Block shall be appropriate for the current Coding’s common
6517 CCC flow elements (see Section 5.3.2.4.1).
6518 3. Targets do not acknowledge receipt of the HDR-BT Header Block.
6519 4. Controller sends the HDR-BT CRC Block.
6520 • The bit packing format of this Block shall be appropriate for the current Coding’s common
6521 CCC flow elements (see Section 5.3.2.4.1).
6522 • Targets detect this distinct pattern (i.e., Read from 7’h7E with no Data Block) and end CCC
6523 modality.
6524 5. Controller sends either HDR Restart Pattern, or HDR Exit Pattern.
6525 • If HDR Exit Pattern, then Controller exits HDR-BT Mode and returns the Bus to SDR Mode.
END of modality
HDR-BT Header Block HDR-BT CRC Block
HDR Byte 0: Broadcast Address Bytes 2-4: reserved Control Transition Control Byte, CRC Transition HDR RESTART
RESTART Byte 1: reserved (RD, 1'b1) (No ACK) for Header Verify or HDR EXIT
HDR EXIT
5.2.4.5 Options
6533 Targets that support HDR-BT shall support CRC-16.
6534 Targets that support HDR-BT may optionally also support CRC-32. When the GETCAPS Format 1 CCC is
6535 sent (see Section 5.1.9.3.19), a Target that supports CRC-32 in HDR-BT Mode shall return a value of 1’b1
6536 in bit 5 of the GETCAP3 byte (the third returned data byte). A Controller that sees the value 1’b1 in that bit
6537 will know that the Target is capable of supporting CRC-32 in HDR-BT Mode.
6538 Targets that support HDR-BT shall support SCL from the Controller on Read. They may also optionally
6539 support emitting their own SCL on Read.
6540 Note:
6541 The I3C Basic Specification does not define a mechanism for discovering a Target’s capability to
6542 control SCL for Read transfers. The Controller may select whether the Target should control SCL or
6543 not control SCL, using Bit[2] of the Control byte in the Header Block. Per Section 5.2.4.3.1, a Target
6544 that does not actually support driving SCL for Read transfers shall not accept (i.e., must provide
6545 NACK for) the Read transfer request, if it receives such a Header Block with Bit[2] set to 1 in the
6546 Control byte. In this case, the Controller should retry the same Read transfer with Bit[2] set to 0, to
6547 indicate that the Controller will control SCL for the Read transfer. If the Read transfer request’s
6548 Header Block was otherwise valid, then the Target should accept (i.e., should provide ACK for) this
6549 Read transfer.
6550 Targets may choose to support the Data Block Delay mechanism for Read transfers. This mechanism allows
6551 the Target to delay sending a Data Block (when permitted by the Controller, as indicated in the Header Block)
6552 if it does not have enough data bytes to fill the Data Block (see Section 5.2.4.3.4).
6553 Note:
6554 The I3C Basic Specification does not define a mechanism for discovering whether the Target
6555 supports the Data Block Delay mechanism. If the Target does not support the Data Block Delay
6556 mechanism, then it shall ignore the value of Bit[2] in the Control byte of the Header Block, when the
6557 Header Block indicates that this is a Read transfer. In such a case, the Target must either return full
6558 Data Blocks, except for the Last Data Block; or mitigate the situation, depending on whether it
6559 controls SCL for this Read transfer.
6560 A) If the Target controls SCL for this Read transfer, then it must either reduce the data rate or end
6561 the transfer early, if it is unable to sustain the transfer of data bytes.
6562 B) If the Target does not control SCL for this Read transfer, or if it does not have that capability, then
6563 it must end the transfer early, if it is unable to sustain the transfer of data bytes.
6564 If the Target does support the Data Block Delay mechanism, and if it was permitted to use this
6565 mechanism for a Read transfer, then the Target may use either of these methods above, that might
6566 be valid or permitted, and for which it has the capability; alternately, it may also use Delay bytes, per
6567 Section 5.2.4.3.4.
5.2.4.6 Diagrams
HEADER BLOCK
ADDRESS COMMAND 0 COMMAND 1 ...
ADDR
ADDR ADDR ADDR ADDR ADDR ADDR ADDR Cmd0 Cmd0 Cmd0 Cmd0 Cmd0 Cmd0 Cmd0 Cmd0 Cmd1 Cmd1 Cmd1 Cmd1 Cmd1 Cmd1 Cmd1 Cmd1
SDA[0] [0]
[1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7]
(RnW)
Cmd2 Cmd2 Cmd2 Cmd2 Cmd2 Cmd2 Cmd2 Cmd2 Cmd3 Cmd3 Cmd3 Cmd3 Cmd3 Cmd3 Cmd3 Cmd3 CTRL CTRL CTRL CTRL CTRL CTRL CTRL CTRL
SDA[0]
[0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7]
SCL C13 C14 C15 C16 C17 C18 C19 C20 C21 C22 C23 C24
TRANSITION
TRANSITION (Data Block)
CONTROL
6568
6569 Figure 127 Header Block for Single Lane
SDA[1] ADDR ADDR ADDR ADDR Cmd0 Cmd0 Cmd0 Cmd0 Cmd1 Cmd1 Cmd1 Cmd1 Cmd2 Cmd2 Cmd2 Cmd2 Cmd3 Cmd3 Cmd3 Cmd3 CTRL CTRL CTRL CTRL TRANS TRANS TRANS TRANS
[1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [2] [3] [5] [7]
ADDR
SDA[0] ADDR ADDR ADDR Cmd0 Cmd0 Cmd0 Cmd0 Cmd1 Cmd1 Cmd1 Cmd1 Cmd2 Cmd2 Cmd2 Cmd2 Cmd3 Cmd3 Cmd3 Cmd3 CTRL CTRL CTRL CTRL TRANS TRANS
[0] Park 1 High-Z
[2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [4] [6]
(RnW)
SDA[3] ADDR ADDR Cmd0 Cmd0 Cmd1 Cmd1 Cmd2 Cmd2 Cmd3 Cmd3 CTRL CTRL TRANS TRANS
[3] [7] [3] [7] [3] [7] [3] [7] [3] [7] [3] [7] [3] [7]
ADDR
SDA[0] ADDR Cmd0 Cmd0 Cmd1 Cmd1 Cmd2 Cmd2 Cmd3 Cmd3 CTRL CTRL
[0] Park 1 High-Z
[4] [0] [4] [0] [4] [0] [4] [0] [4] [0] [4]
(RnW)
SCL C1 C2 C3 C4 C5 C6 C7 C8
6570
6571 Figure 128 Header Block for Dual Lane and Quad Lane
DATA BLOCK
TRANSITION
CONTROL DATA 0 DATA 1 ...
T_CTRL T_CTRL T_CTRL T_CTRL T_CTRL T_CTRL Data0 Data0 Data0 Data0 Data0 Data0 Data0 Data0 Data1 Data1 Data1 Data1
SDA[0] Park 1 High-Z
[2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3]
SCL C1 C2 C3 C4 C5 C6 C7 C8 C9 C10
Data30 Data30 Data30 Data30 Data31 Data31 Data31 Data31 Data31 Data31 Data31 Data31
SDA[0] In Transition_Control byte, transmitter High-Zs SDA[0] for second
[4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7]
half-clock of C1. If receiver drives SDA[0] to Low (shown in orange),
this terminates the transmission after the Transition_Control byte.
SCL C127 C128 C129 C130 C131 C132 C1
Transmitter then emits a CRC Block as the next byte (after
Transition_Control).
If Data Block Delay is permitted: Target as transmitter may drive
Transition_Control Bit[4] High (shown in blue) to indicate delayed
data. Target may repeat for maximum of tBT_DBD Delay bytes. (Does
not apply for Last Data Block before CRC Block.)
6572
6573 Figure 129 Data Block for Single Lane
DATA BLOCK …
TRANSITION
CONTROL DATA 0 DATA 1 DATA 30 DATA 31
T_CTRL T_CTRL T_CTRL T_CTRL Data0 Data0 Data0 Data0 Data1 Data1 Data1 Data1 Data30 Data30 Data30 Data30 Data31 Data31 Data31 Data31
SDA[1]
[2] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7]
SDA[0] T_CTRL T_CTRL Data0 Data0 Data0 Data0 Data1 Data1 Data1 Data1 Data30 Data30 Data30 Data30 Data31 Data31 Data31 Data31
Park 1 High-Z
[4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6]
DATA BLOCK …
TRANSITION
CONTROL DATA 0 DATA 1 DATA 30 DATA 31
SDA[3] T_CTRL T_CTRL Data0 Data0 Data1 Data1 Data30 Data30 Data31 Data31 In Transition_Control byte, transmitter High-Zs SDA[0] for
[3] [7] [3] [7] [3] [7] [3] [7] [3] [7] second half-clock of C1. If receiver drives SDA[0] to Low
(shown in orange), this terminates the transmission after
T_CTRL T_CTRL Data0 Data0 Data1 Data1 Data30 Data30 Data31 Data31 the Transition_Control byte. Transmitter then emits a CRC
SDA[2]
[2] [6] [2] [6] [2] [6] [2] [6] [2] [6] Block as the next byte (after Transition_Control).
If Data Block Delay is permitted: Target as transmitter
SDA[1]
T_CTRL T_CTRL Data0 Data0 Data1 Data1 Data30 Data30 Data31 Data31 may drive Transition_Control Bit[4] High (shown in blue)
[4] [5] [1] [5] [1] [5] [1] [5] [1] [5]
to indicate delayed data. Target may repeat for maximum
of tBT_DBD Delay bytes. (Does not apply for Last Data Block
SDA[0] Park 1 High-Z
Data0 Data0 Data1 Data1 Data30 Data30 Data31 Data31 before CRC Block.)
[0] [4] [0] [4] [0] [4] [0] [4]
CRC BLOCK
CONTROL CRC 0 CRC 1 ...
CTRL CTRL CTRL CTRL CTRL CTRL CTRL CTRL CRC0 CRC0 CRC0 CRC0 CRC0 CRC0 CRC0 CRC0 CRC1 CRC1 CRC1 CRC1 CRC1 CRC1 CRC1 CRC1
SDA[0]
[0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7] [0] [1] [2] [3] [4] [5] [6] [7]
CRC BLOCK
SDA[1]
CTRL CTRL CTRL CTRL CRC0 CRC0 CRC0 CRC0 CRC1 CRC1 CRC1 CRC1 CRC2 CRC2 CRC2 CRC2 CRC3 CRC3 CRC3 CRC3 TRANS TRANS TRANS TRANS For Read transfers:
[1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [1] [3] [5] [7] [2] [3] [5] [7]
If Target drives SCL,
handoff occurs with
High−Z of SDA[0], then
CTRL CTRL CTRL CTRL CRC0 CRC0 CRC0 CRC0 CRC1 CRC1 CRC1 CRC1 CRC2 CRC2 CRC2 CRC2 CRC3 CRC3 CRC3 CRC3 TRANS TRANS Controller drives SCL
SDA[0] Park 1 High-Z
[0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [0] [2] [4] [6] [4] [6]
falling edge (C11)
Continue directly to
HDR Exit Pattern or
SCL C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 C12 HDR Restart Pattern
6578
6579 Figure 132 CRC Block for Dual Lane
CRC BLOCK
TRANSITION_
CONTROL CRC 0 CRC 1 CRC 2 CRC 3 VERIFY
CTRL CTRL CRC0 CRC0 CRC1 CRC1 CRC2 CRC2 CRC3 CRC3 TRANS TRANS
SDA[3]
[3] [7] [3] [7] [3] [7] [3] [7] [3] [7] [3] [7]
CTRL CTRL CRC0 CRC0 CRC1 CRC1 CRC2 CRC2 CRC3 CRC3 TRANS TRANS
SDA[2]
[2] [6] [2] [6] [2] [6] [2] [6] [2] [6] [2] [6]
SDA[1]
CTRL CTRL CRC0 CRC0 CRC1 CRC1 CRC2 CRC2 CRC3 CRC3 TRANS TRANS For Read transfers:
[1] [5] [1] [5] [1] [5] [1] [5] [1] [5] [4] [5]
If Target drives SCL,
handoff occurs with
High−Z of SDA[0], then
CTRL CTRL CRC0 CRC0 CRC1 CRC1 CRC2 CRC2 CRC3 CRC3 Controller drives SCL
SDA[0] Park 1 High-Z
[0] [4] [0] [4] [0] [4] [0] [4] [0] [4]
falling edge (C6)
Continue directly to
HDR Exit Pattern or
SCL C1 C2 C3 C4 C5 C6 HDR Restart Pattern
6580
6581 Figure 133 CRC Block for Quad Lane
6582
HDR
HDR-BT Header HDR Restart Pattern
(with Command) T or HDR Exit Pattern
Target does not accept Write Controller must either retry, send another
transfer in Transition byte HDR-BT transfer, or exit HDR-BT Mode
HDR
HDR-BT Header T HDR-BT Data HDR-BT T HDR Restart
(with Command) T (1 or more Blocks) C CRC Block Pattern
C V
HDR
HDR-BT Header T HDR-BT Data T HDR-BT T HDR Restart Pattern
(with Command) T (1 or more Blocks) C CRC Block or HDR Exit Pattern
C C V
HDR
HDR-BT Header T HDR-BT Data HDR-BT T HDR Restart
(with Command) T (1 or more Blocks) C CRC Block Pattern
C V
LEGEND
6592 The Target can also use the same Transition byte, Transition_Control byte, and Transition_Verify byte to
6593 accept or reject a Read transfer, or to provide flow control at defined points during the Read transfer. If the
6594 Data Block Delay mechanism is permitted (per Section 5.2.4.3.4), then the Target may also use this
6595 mechanism to delay sending Data Blocks while it prepares data to send to the Controller.
6596 Figure 135 shows several examples of Read transfer flow control:
6597 • A Target that does not accept the Read transfer;
6598 • A Target that accepts the Read transfer and sends all Data Blocks (i.e., without any delay or
6599 termination);
6600 • A Target that handles the Controller terminating the Read transfer, and subsequently provides the
6601 CRC Block after the last Data Block that it sent; and
6602 • A Target that uses the Data Block Delay mechanism before sending the first Data Block.
HDR
HDR-BT Header HDR Restart Pattern
(with Command) T or HDR Exit Pattern
Target does not accept Read Controller must either retry, send another
transfer in Transition byte HDR-BT transfer, or exit HDR-BT Mode
HDR
HDR-BT Header T HDR-BT Data HDR-BT T HDR Restart
(with Command) T (1 or more Blocks) C CRC Block Pattern
C V
HDR
HDR-BT Header T HDR-BT Data T HDR-BT T HDR Restart Pattern
(with Command) T (1 or more Blocks) C CRC Block or HDR Exit Pattern
C C V
HDR
HDR-BT Header T HDR-BT Data HDR-BT T HDR Restart
(with Command) T D! D! D! D! (1 or more Blocks) C CRC Block Pattern
C V
LEGEND
6695 transfer capability is indeed connected to the appropriate number of additional data lanes (per Figure
6696 86), before configuring such a Target Device to use a ML Frame format requiring such data lanes.
6697 Special additional configuration requirements apply for ML-capable Devices that support Group
6698 Addressing (see Section 5.3.1.1.1), ML-capable Devices that present Virtual Targets with multiple
6699 Dynamic Addresses (see Section 5.3.1.1.2), and ML-capable Devices that do both of the above.
6700 Once received by the Target, the ML configuration for the Target’s Dynamic Address shall remain in effect
6701 until a later MLANE CCC is correctly received, or until a RESET sequence that includes ML configuration
6702 is performed by the Controller.
6703 The default Lane configuration for ML-capable Devices shall be SINGLE Lane (3’b000). As a result, the
6704 default value of the MLANE Data Byte is 0x00.
6705 Table 78 ML Lane Configurations
Number of Wires Supported
Lane Multi- Data Total
Additional Description
Configuration Lane? Wires Wires SCL SDA[0] SDA[1] SDA[2] SDA[3]
Data Wires
Ordinary
0 SINGLE N 1 2 – – –
2-Wire I3C
1 DUAL Multi-Lane Y 2 3 – –
3 QUAD Data Transfer Y 4 5
2,
Reserved for future definition by MIPI Alliance
4 through 7
Variant 2’b01
6754 Note:
6755 This is the only supported variant for I3C Basic.
6756 If an ML-capable Target that supports Group Address capabilities also supports separate ML configurations
6757 (i.e., variant 2’b01), then it shall maintain a configuration for each currently assigned Group Address, once
6758 assigned by the Controller using the SETGRPA CCC (see Section 5.1.9.3.27). A Target’s initial ML
6759 configuration for a newly-assigned Group Address shall be set to the common ML configuration (i.e., ML
6760 Frame format) for the I3C Mode and the configuration of the Device, per Section 5.3.1.1:
6761 • For HDR-BT Mode, the initial common ML configuration shall be SINGLE-lane with the default
6762 Data Transfer Coding. This is equivalent to Data Byte 0x00, as used with the MLANE Direct SET
6763 CCC Sub-Command to set the ML Configuration for that I3C Mode, when sent to the Group
6764 Address (per Section 5.1.9.3.30).
6765 • However, the common ML configuration may subsequently be changed if the Controller
6766 configures the Device to use an ML Frame format that is based on any alternate Data Transfer
6767 Coding (per Section 5.3.2.4):
6768 • For Group Address assignments that were present before configuring such a Device to use an
6769 alternate Data Transfer Coding, the Device shall change the ML configuration to use the new
6770 common ML Frame format for this alternate Data Transfer Coding. In some cases, this might
6771 result in an ML configuration for an assigned Group Address changing to reflect the common
6772 ML Frame format, which may include a different number of additional data lanes than what
6773 was originally configured for that Group Address.
6774 • For Group Address assignments that were configured with the SETGRPA CCC after such a
6775 Device was configured to use an alternate Data Transfer Coding, the Device shall use the new
6776 common ML configuration for this alternate Data Transfer Coding.
6777 • In both cases, the data returned in response to the MLANE Direct GET CCC with the Sub-
6778 Command for Get Group Report (i.e., Defining Byte 0x9C) shall always reflect the correct
6779 status of each Group Address assignment.
6780 • Additional requirements may apply for ML-capable Devices that also present multiple Virtual
6781 Targets (per Section 5.3.1.1.2).
6782 The Controller may subsequently configure all such Targets that support separate ML configurations and are
6783 assigned to this Group Address to use a different ML Frame format for write transactions directed to the
6784 Group, by sending the MLANE Direct SET CCC to the Group Address. The Controller shall only use the
6785 Group Address with the MLANE CCC, if and only if all such Targets (i.e., members assigned to that Group
6786 Address) support separate ML configurations, and only if all such Targets support the indicated ML Frame
6787 format. It is the responsibility of the Controller to make this determination before assigning ML-capable
6788 Targets to a Group Address, and before sending the MLANE Direct SET CCC to a Group Address with a
6789 particular Data Byte value with the intent to configure the Group (i.e., to set the ML Frame format for all
6790 Targets that are members assigned to that Group Address).
6791 The Controller should determine whether an ML-capable Target does support separate ML configurations by
6792 using the MLANE Direct GET CCC (see Section 5.1.9.3.30) with the Sub-Command for Group ML
6793 Capabilities (i.e., Defining Byte 0x9B). A Target that supports separate ML configurations shall indicate this
6794 support (see Table 56) as well as the number of Group Addresses to which it is currently assigned. To verify
6795 that an ML configuration change sent to the Group Address was successfully applied, the Controller should
6796 use the MLANE Direct GET CCC with the Sub-Command for Get Group ML Report (i.e., Defining Byte
6797 0x9C) for each Target assigned to that Group (i.e., by sending the MLANE Direct GET CCC with Defining
6798 Byte 0x9C to each Target’s Dynamic Address) to read its current ML configurations for all currently assigned
6799 Group Addresses.
6800 The Controller may also reset all current ML configurations for a Target (including any configured Group
6801 Address configurations) by sending the MLANE CCC with the Sub-Command for Reset ML (i.e., Defining
6802 Byte 0x7F). This shall reset all such Targets assigned to the Group Address to a known common ML Frame
6803 format.
6804 If a Target supports multiple current ML configurations for all its assigned Group Addresses, then each ML
6805 configuration may be set to any of the supported ML Frame formats, as returned by the MLANE Direct GET
6806 CCC with the Sub-Command for Get ML Capabilities (i.e., Defining Byte 0xFF), as long as they are all
6807 configured to be mutually interoperable within the same I3C Mode.
6808 Note:
6809 Special restrictions apply for certain ML Frame formats that are not interoperable with the current ML
6810 Frame format that is configured for the Dynamic Address to which the Group Address is assigned.
6811 Such restrictions apply for I3C Modes (such as HDR-BT) that define alternate Data Transfer Codings
6812 that are not interoperable with the default Data Transfer Coding. In no case shall a Device allow any
6813 assigned Group Address to be configured to use an ML Frame format that is based on a Data
6814 Transfer Coding that is not interoperable with the Data Transfer Coding of the Dynamic Address’s
6815 currently configured ML Frame format.
6816 The Controller may use the MLANE CCC to configure the current ML Frame format for transfers addressed
6817 to the Group Address (i.e., by sending the MLANE Direct SET CCC to the Group Address) to set this
6818 configuration, which will not change the current ML configuration for the Target’s Dynamic Address of any
6819 such Target within that Group. Such a Target will keep track of its multiple current configurations for its
6820 assigned Addresses, and will use the Address received for each transaction to match and select the correct
6821 ML configuration based on the Address.
6822 Note:
6823 The variant is a global option that applies to the Target Device, for all I3C Modes in which Multi-Lane
6824 transfers are supported. For I3C Basic, HDR-BT Mode is the only I3C Mode that supports Multi-Lane
6825 transfers (see Section 5.3.2).
6826 Per Section 5.1.9.3.30, such an ML-capable Target shall also support the MLANE CCC as a
6827 Broadcast SET CCC in addition to a Direct SET CCC addressed to an assigned Group Address, for
6828 supported I3C Modes. In such a case, the MLANE Broadcast SET CCC shall change the ML
6829 configuration for all currently assigned Group Addresses as well as the assigned Dynamic Address,
6830 and shall also set (or reset) the common ML configuration for newly-assigned Group Addresses.
Variant 2’b00
6831 Support for this variant is not included in I3C Basic. To gain access to this capability, please contact MIPI
6832 Alliance.
6877 If the Controller uses the MLANE Direct SET CCC with Defining Byte 0x7F, then the Sub-Command for
6878 Reset ML shall only apply to the addressed Virtual Target (i.e., the Dynamic Address to which it was sent),
6879 and shall not affect any other Virtual Targets within the same Device. In all cases, the Sub-Command for
6880 Reset ML as a Direct SET CCC shall not cause the Device to cause (or attempt to apply) an inconsistent set
6881 of ML configurations that might have a mix of Data Transfer Codings for different Virtual Targets that are
6882 not interoperable; for such special cases, the defined behavior of a Sub-Command for Reset ML as a Direct
6883 SET CCC shall be specifically defined in the appropriate sub-sections of Section 5.3.2 that might define
6884 alternate Data Transfer Codings for a particular I3C Mode (as above). If not so defined, then the Sub-
6885 Command for Reset ML as a Direct SET CCC shall have the effect of returning one Virtual Target’s Dynamic
6886 Address to the default Data Transfer Coding with the default Lane Configuration.
6887 If the Controller uses the MLANE Broadcast CCC with the Sub-Command for Reset ML (i.e., Defining Byte
6888 0x7F), then this action shall apply to all Virtual Targets (i.e., all assigned Dynamic Addresses within the
6889 Device) and return them all to the default Data Transfer Coding with the default Lane Configuration.
6929 Note:
6930 In addition to the above, the full I3C Specification includes definitions for more ML Frame formats:
6931 SDR Based ML Frame Formats:
6932 SDR-ML DUAL Coding
6933 SDR-ML QUAD Coding
6934 HDR-DDR Based ML Frame Formats:
6935 HDR-DDR-ML DUAL Coding
6936 HDR-DDR-ML QUAD Coding
6937 HDR-TSP Based ML Frame Formats:
6938 HDR-TSP-ML DUAL Coding
6939 HDR-TSP-ML QUAD Coding
6940 To gain access to these capabilities, please contact MIPI Alliance.
6972 Figure 136 illustrates a common ML Frame for HDR-BT, using Coding 0. This Coding supports HDR-BT Target Devices that use any number of additional
6973 data Lanes (including no additional data Lanes).
OPTIONAL DATA EXCHANGE
SDA[3]
SDA[2]
Repeat for All Data
SDA[3]
HDR
SDA[0] ADR HDR-BT Header CTL XT
Restart
SDA[3]
HDR Exit
SDA[0] ADR HDR-BT Header CTL XT CTL HDR-BT Data Block CTL HDR-BT CRC Block XT P
Pattern
LEGEND
ACK = Acknowledge (SDA Low)
SCL and Data ADR Address NACK = Not Acknowledge (NACK)
S = START Condition
Sr = Repeated START Condition
From Target to Controller CTL Control P = STOP Condition
T = Transition Bit Alternative to ACK/NACK
6976 Figure 137 illustrates a common ML Frame for HDR-BT, using Coding 3. When using this Coding, no 1-Lane HDR-BT Target Devices are supported.
SDA[1]
HDR-BT Header HDR-BT Data Block HDR-BT CRC Block
ADR CTL XT CTL CTL XT
I3C Reserved byte Enter HDR-BT (DUAL Lane) (DUAL Lane format) (DUAL Lane format) HDR
SDA[0] S or Sr ACK T
(7'h7E) (RnW=0) CCC (ENTHDR3) Restart
SDA[3]
(Add’l lanes idle)
SDA[2]
HDR-BT Data Block HDR-BT CRC Block
CTL CTL XT
(QUAD Lane format) (QUAD Lane format)
SDA[1]
HDR-BT Header
ADR CTL XT
(DUAL Lane) HDR Exit
SDA[0] P
Pattern
LEGEND
ACK = Acknowledge (SDA Low)
SCL and Data ADR Address NACK = Not Acknowledge (NACK)
S = START Condition
Sr = Repeated START Condition
From Target to Controller CTL Control P = STOP Condition
T = Transition Bit Alternative to ACK/NACK
6979 Figure 138 illustrates a common ML Frame for HDR-BT, using Coding 7. When using this Coding, no 1-Lane or 2-Lane ML HDR-BT Target Devices are
6980 supported.
SDA[3]
SDA[2]
HDR-BT Header HDR-BT Data Block HDR-BT CRC Block
ADR CTL XT CTL CTL XT
(QUAD Lane) (QUAD Lane format) (QUAD Lane format)
SDA[1]
LEGEND
ACK = Acknowledge (SDA Low)
SCL and Data ADR Address NACK = Not Acknowledge (NACK)
S = START Condition
Sr = Repeated START Condition
From Target to Controller CTL Control P = STOP Condition
T = Transition Bit Alternative to ACK/NACK
6987 All supported ML Frame formats shown in Table 79 shall indicate which of these Data Transfer Codings they support, which in a mixed ML-configuration
6988 Bus determines their level of interoperability with other ML Frame formats.
6989 As noted in Section 5.3.2.4, configuring the I3C Bus (i.e., all HDR-BT capable Targets) to use an “Alternate
6990 Mode” Data Transfer Coding requires all such Targets to be configured to use the “Alternate Mode” Coding.
6991 This configuration may be done individually for each Target, by sending the MLANE Direct SET CCC with
6992 Defining Byte 0x23 for each HDR-BT capable Target; or it may be done simultaneously for all Targets, by
6993 sending the MLANE Broadcast CCC with Defining Byte 0x23.
6994 However, the Controller shall not attempt to configure any ML-capable HDR-BT Targets to use any
6995 “Alternate Mode” Coding, unless it first ensures that all other HDR-BT Targets are capable of interoperating
6996 with this Coding and may be configured to use a mutually interoperable ML Frame format that is based on
6997 the same Coding.
6998 When a Target that supports any HDR-BT “Alternate Mode” Codings first receives either an MLANE Direct
6999 SET CCC with Defining Byte 0x23 sent to an assigned Dynamic Address, or an MLANE Broadcast CCC
7000 with Defining Byte 0x23 that is sent to the I3C Bus; and either CCC has a message with a Data Byte that
7001 selects an ML Frame format based on such an “Alternate Mode” Coding which is not interoperable with
7002 Coding 0, this shall change the HDR-BT configuration for the Device, and affect how the Device and its
7003 Peripheral logic must interpret HDR-BT Header Blocks for all subsequent HDR-BT transfers. For HDR-BT
7004 Mode, this configuration is defined as a ‘sticky’ state, and shall also determine how subsequent MLANE
7005 CCCs are either accepted or rejected.
7006 • Such a change shall become ‘sticky’ if accepted, and shall affect the Peripheral logic that receives
7007 HDR-BT transfers within the Device:
7008 • If the Device receives the MLANE Direct SET CCC with Defining Byte 0x23, then such a
7009 change shall only be accepted if the Device was previously configured to use Coding 0 (i.e.,
7010 not in the ‘sticky’ state).
7011 • If the Device receives the MLANE Broadcast CCC with Defining Byte 0x23, then such a change
7012 shall always be accepted.
7013 • While in a ‘sticky’ state, the Device shall not accept a configuration change via the MLANE
7014 Direct SET CCC with Defining Byte 0x23 to use any other ML Frame formats that are not
7015 interoperable with that “Alternate Mode” Coding.
7016 • However, the Device shall continue to accept configuration changes via the MLANE Broadcast
7017 CCC with Defining Byte 0x23 to use any other ML Frame formats that are valid and supported.
7018 For such MLANE Broadcast CCCs, ‘sticky’ state checking is bypassed.
7019 For HDR-BT Targets that support multiple assigned Addresses, HDR-BT defines several sets of conditions
7020 as valid actions (per Section 5.3.1.1) that apply to the use of the MLANE CCC with “Alternate Mode”
7021 Codings:
7022 • Entering the ‘sticky’ state (i.e., switching from Coding 0 to any “Alternate Mode” Coding) affects
7023 all assigned Addresses within the Device (i.e., the shared Peripheral logic that receives HDR-BT
7024 transfers and matches assigned Addresses within HDR-BT Header Blocks). The Device shall not
7025 accept any subsequent MLANE Direct SET CCCs that would attempt to re-configure one assigned
7026 Address to use a Data Transfer Coding that is incompatible (i.e., not interoperable) with the first
7027 “Alternate Mode” Coding that was used to put the Device into the ‘sticky’ state.
7028 • If the Device supports separate ML configurations for Group Addresses (per Section 5.3.1.1.1),
7029 then:
7030 • On entering the ‘sticky’ state, the Device shall change the ML configuration for all currently
7031 assigned Group Addresses to the common ML Frame format for that “Alternate Mode”
7032 Coding, per Table 79. The Device shall also apply this same common ML Frame format as the
7033 initial ML configuration for any subsequently assigned Group Addresses.
7034 • Such a configuration change shall also limit the available ML Frame formats that the Device
7035 might accept upon subsequent use of the MLANE Direct SET CCC with Defining Byte 0x23.
7036 This shall prevent any assigned Group Address from being re-configured to use a Coding that
7037 is not interoperable with the Dynamic Address (or one of the Dynamic Addresses, if multiple
7038 Dynamic Addresses are supported).
7039 • Per Section 5.3.1.1.1, an MLANE Direct SET CCC sent to an assigned Group Address shall
7040 not cause the Device to enter or leave the ‘sticky’ state, nor shall the Device change the ML
7041 configuration for any assigned Dynamic Address as a result. The Device shall only accept an
7042 MLANE Direct SET CCC with an ML Frame format sent to an assigned Group Address if
7043 that ML Frame format is compatible (i.e., interoperable) with the current ML configuration of
7044 the associated Dynamic Address.
7045 • If the Device supports multiple assigned Dynamic Addresses (i.e., a composite Device that
7046 presents multiple Virtual Targets, per Section 5.3.1.1.2), then:
7047 • The first such MLANE Direct SET CCC sent to any assigned Dynamic Address with an ML
7048 Frame format based on an “Alternate Mode” Coding shall also change the ML configuration
7049 for the Device’s other assigned Dynamic Addresses, to use the common ML Frame format for
7050 that “Alternate Mode” Coding.
7051 In this case, the Controller may (and should) send subsequent MLANE Direct SET CCCs
7052 to the Device’s other assigned Dynamic Addresses, with compatible ML Frame formats
7053 (or the same ML Frame format).
7054 • Similarly, the MLANE Broadcast CCC shall cause a simultaneous ML configuration change
7055 to all assigned Dynamic Addresses, as though the Device had received (and accepted) a series
7056 of MLANE Direct SET CCCs that were sent to each of its assigned Dynamic Addresses.
7057 • Note that the provided ML Frame format (i.e., the Data Byte after the Defining Byte) for each
7058 MLANE SET CCC (either Direct or Broadcast) must be valid and supported for the Device, if
7059 such configuration changes are to take effect, per Section 5.1.9.3.30.
7060 • Subsequent MLANE Direct SET CCCs sent to any assigned Dynamic Address shall only be
7061 accepted if the provided ML Frame format is compatible with that same “Alternate Mode”
7062 Coding (i.e., uses the same Coding, or one that is expressly defined to be interoperable). This
7063 shall prevent any assigned Dynamic Address from being subsequently re-configured to use a
7064 Coding that is not interoperable with other Dynamic Addresses.
7065 • If the Device supports both Group Addresses and multiple Dynamic Addresses (i.e., the union of
7066 both), then both sets of conditions listed above shall apply.
7067 Once the Controller has configured the I3C Bus and all known HDR-BT capable Target Devices to use an
7068 “Alternate Mode” Coding, it must avoid such situations that might arise, in cases where a new Target Device
7069 might join or re-join the Bus (i.e., a Hot-Join Request, or a return from a deep sleep state with loss of
7070 configuration) and the Controller has not yet determined whether the Target Device supports HDR-BT Mode
7071 (and, if so, whether it also supports and can be configured to use an interoperable Coding). For some
7072 situations, the Controller must immediately stop all HDR-BT transfers if it detects an unknown Target Device,
7073 until it can fully determine such a Target Device’s capabilities and current configuration.
7074 An HDR-BT Target that has been configured to use Coding 0 with additional data Lanes (i.e., DUAL or
7075 QUAD transfers in Coding 0) may be switched back to 1-Lane compatibility mode (in Coding 0) via the
7076 MLANE CCC, using Defining Byte 0x23 and Data Byte 0x00, via Broadcast CCC or Direct CCC. This result
7077 can also be achieved by sending the MLANE CCC with the Sub-Command for Reset ML (i.e., Defining Byte
7078 0x7F) in its Broadcast CCC or Direct SET CCC formats. However, an HDR-BT Target that has been
7079 configured to use an “Alternate Mode” Coding may only be configured back to 1-Lane compatibility mode
7080 (i.e., back to Coding 0 and leaving the ‘sticky’ state) by sending the MLANE Broadcast CCC (i.e., not a
7081 Direct SET CCC) with Defining Byte 0x23 and Data Byte 0x00, or by sending the MLANE Broadcast CCC
7082 with the Sub-Command for Reset ML.
7083 Note:
7084 When an HDR-BT Target that has been configured to use an “Alternate Mode” Coding leaves the
7085 ‘sticky’ state or accepts a new ML Frame format based on an “Alternate Mode” Coding (i.e., by
7086 receiving the MLANE Broadcast CCC with either sub-command, as defined above), the ML
7087 configurations for all assigned Addresses shall be simultaneously configured back to either 1-Lane
7088 compatibility mode (i.e., with the Sub-Command for Reset ML), or to the new ML Frame format (i.e.,
7089 with Defining Byte 0x23).
7090 Figure 139 illustrates the valid state transitions for HDR-BT Targets that support any “Alternate Mode”
7091 Codings, when used with the MLANE SET CCC with Defining Byte 0x23.
0x3B
Coding 7 (QUAD)
0x19 0x1B
Coding 3 (DUAL) (QUAD)
Default ML
configuration
LEGEND
Entering the ‘sticky’ state via MLANE Valid configuration within same Coding
SET CCC with Defining Byte 0x23 (i.e., ‘sticky’ state for Alternate Mode)
7092
7093 Figure 139 Valid State Transitions for HDR-BT Data Transfer Codings
7094 Note:
7095 In Figure 139, the solid lines show the valid state transitions for entering the ‘sticky’ state from Coding
7096 0, via the MLANE Direct SET CCC or the MLANE Broadcast CCC. The dashed lines show the valid
7097 state transitions within a currently configured Coding, via the MLANE Direct SET CCC with Defining
7098 Byte 0x23. Such state transitions apply to Devices that support a single Address (i.e., only a Dynamic
7099 Address) as well as Devices that support multiple Addresses (i.e., any combination of Virtual Targets
7100 with multiple Dynamic Addresses, or currently assigned Group Addresses). The circles with double
7101 lines show the common ML configurations for each Coding, which shall be used for each newly
7102 assigned Group Address (if supported). This diagram does not show the valid state transitions for
7103 leaving the ‘sticky’ state or changing to a different ‘Alternate Mode’ Coding via the MLANE Broadcast
7104 CCC, although such valid state transitions are always possible via the MLANE Broadcast CCC with
7105 Defining Byte 0x23.
7106 In a Bus that mixes 1-Lane Target Devices (or ML-capable Target Devices in their default 1-Lane
7107 configuration) with 2-Lane ML and/or 4-Lane ML Target Devices that are all configured for Coding 0, any
7108 Target Devices that are configured for SINGLE Lane Coding 0 shall ignore any HDR-BT Data Blocks and
7109 HDR-BT CRC Blocks that are part of a transaction (either generic, or Direct CCC flow) addressed to another
7110 Target Device that is configured for DUAL Lane Coding 0 or QUAD Lane Coding 0. Because these DUAL
7111 Lane or QUAD Lane formatted Blocks might not have the same format and length that a Target Device in its
7112 default configuration can understand, such a Target Device may instead ignore these HDR-BT Blocks and
7113 wait for the HDR Restart Pattern, after which it will be able to receive and understand a subsequent HDR-
7114 BT Header Block and correctly parse its Address field.
7115 CCC transactions in HDR-BT that use Multi-Lane shall conform to the special requirements of the CCC
7116 framing and modality for HDR-BT (see Section 5.2.4.4), as a specific instantiation of the generic CCC
7117 framing and modality for all HDR Modes (see Section 5.2.1.2). Such HDR-BT-capable Targets shall monitor
7118 the Bus for HDR-BT transactions that are either HDR-BT generic write/read transfers, or common CCC flow
7119 elements, according to the currently configured Data Transfer Coding of the Device:
7120 • If such a Target only has a single Dynamic Address: Then the ML configuration (i.e., currently
7121 configured ML Frame format) for the Target’s Dynamic Address shall apply to match either the
7122 assigned Dynamic Address or the Broadcast Address (i.e., 7’h7E) for common CCC flow
7123 elements, according to the Data Transfer Coding for this ML configuration.
7124 • If such a Target has multiple Dynamic Addresses (i.e., a composite Device that presents Virtual
7125 Targets, per Section 5.3.1.1.2): Then the ML configuration (i.e., currently configured ML Frame
7126 format) for all such Dynamic Addresses must be interoperable, so that the Target can match the
7127 Broadcast Address (i.e., 7’h7E) with the specified ML Frame formatting of the Data Transfer
7128 Coding, for common CCC flow elements (per Table 79).
Coding 0
7129 The default ML Frame format for HDR-BT Devices is Coding 0 (Compatible Mode) which requires no
7130 additional data Lanes.
7131 Coding 0 is intended for Buses with HDR-BT Targets of mixed support for Multi-Lane’s additional data
7132 Lanes. It is interoperable with all 1-Lane, 2-Lane ML, and 4-Lane ML HDR-BT Targets that support
7133 Coding 0.
7134 In Coding 0:
7135 • All HDR-BT Header Blocks shall be transmitted using SDA[0] (i.e., 1-Lane mode) in order to
7136 ensure that all Targets that support HDR-BT are always able to receive and understand the format
7137 of the Header Block. This includes the specific variants of the Header Block used for the common
7138 CCC flow elements in the HDR-BT CCC flows. The bit packing shall follow the formats shown in
7139 Table 70 for Data Bytes and Table 73 for the Transition Byte.
7140 • For generic HDR-BT transactions (i.e., not part of the HDR-BT CCC flows), all subsequent
7141 HDR-BT Data Blocks and the HDR-BT CRC Block shall be transmitted in a bit packing format
7142 appropriate for the Target’s currently configured ML Frame format (see Table 79). If the Target is
7143 not ML-capable, or has not been configured to use a ML Frame format that uses additional data
7144 Lanes, then this bit packing format shall be the standard 1-Lane HDR-BT format (i.e., SDA[0]
7145 only).
7146 • For all HDR-BT CCC flows, all common CCC flow elements shall be transmitted using SDA[0]
7147 (i.e., 1-Lane mode), so that all HDR-BT Targets can participate in the CCC flows regardless of
7148 their currently configured ML Frame format or the number of additional data Lanes they support.
7149 In this manner, all ML Frame formats that support Coding 0 are mutually interoperable for the
7150 common CCC flow elements.
7151 • Following the HDR-BT CCC Selector Block in a Direct CCC flow, all subsequent HDR-BT Data
7152 Blocks and the HDR-BT CRC Block that are addressed to a Target currently configured for
7153 Coding 0 shall be transmitted in a bit packing format appropriate for the Target’s currently
7154 configured ML Frame format (see Table 79).
Coding 3
7155 An optional Coding for HDR-BT Devices is Coding 3 (“Alternate Mode”), which requires at least one
7156 additional data Lane.
7157 Coding 3 is intended for Buses with HDR-BT Targets that support at least one additional data Lane for Multi-
7158 Lane. It is interoperable with all other “Alternate Mode” Codings marked as Coding 3 in Table 78, and
7159 expressly not interoperable with any 1-Lane HDR-BT Targets, or any 2-Lane ML HDR-BT Targets that do
7160 not support Coding 3. When addressing HDR-BT Targets that support three additional data Lanes, it provides
7161 additional transfer speed for these per-Target transactions, while still allowing interoperability with any other
7162 HDR-BT Targets that only support one additional data Lane and have been configured for Coding 3.
7163 In Coding 3:
7164 • All HDR-BT Header Blocks shall be transmitted using SDA[0] and SDA[1], using the DUAL
7165 Lane bit packing formats shown in Table 71 for Data Bytes and Table 74 for the Transition Byte.
7166 See Figure 128 for the HDR-BT Header Block format, Figure 130 for the HDR-BT Data Block
7167 format, and Figure 133 for the HDR-BT CRC Block format.
7168 • For generic HDR-BT transactions (i.e., not part of the HDR-BT CCC flows), all subsequent
7169 HDR-BT Data Blocks and the HDR-BT CRC Block shall be transmitted in a bit packing format
7170 appropriate for the Target’s currently configured ML Frame format, using either DUAL Lane or
7171 QUAD Lane formats (see Table 79).
7172 • For all HDR-BT CCC flows, all common CCC flow elements shall be transmitted using SDA[0]
7173 and SDA[1], using the same DUAL Lane bit packing formats. All HDR-BT Targets that are
7174 currently configured for Coding 3 can participate in the CCC flows regardless of the number of
7175 additional Lanes (i.e., Lanes beyond SDA[1]) that they are configured to use. In this manner, all
7176 ML Frame formats that support Coding 3 are mutually interoperable, for the common CCC flow
7177 elements.
7178 • Following the HDR-BT CCC Selector Block in a Direct CCC flow, all subsequent HDR-BT Data
7179 Blocks and the HDR-BT CRC Block addressed to a Target currently configured for Coding 3 shall
7180 be transmitted in a bit packing format appropriate for the Target’s currently configured ML Frame
7181 format, using either DUAL Lane or QUAD Lane formats (see Table 79).
7182 This “Alternate Mode” is not compatible with other ML-capable HDR-BT Targets not configured to use an
7183 “Alternate Mode” Coding marked as Coding 3, or other HDR-BT Targets that are not ML-capable. Such
7184 Targets will not correctly receive and understand any HDR-BT Header Blocks transmitted in this bit packing
7185 format, and as a result they will not participate in any HDR-BT transactions, and could even cause
7186 communication errors.
7187 Note:
7188 In Coding 3, the Controller shall not use the SINGLE Lane formats for any HDR-BT structured
7189 protocol elements, such as the HDR-BT Header Block, Data Block or CRC Block.
7190 Once an HDR-BT capable Target that supports Coding 3 has been configured to use an ML Frame
7191 format that uses Coding 3 or any other “Alternate Mode” Coding that is interoperable, the entire
7192 Device enters a ‘sticky’ state and shall not accept any configuration changes via the MLANE CCC
7193 that might use any other Coding not interoperable with Coding 3, except for certain MLANE sub-
7194 commands sent as a Broadcast CCC. If the MLANE Direct SET CCC is used, then such a Device
7195 may only enter the ‘sticky’ state from Coding 0.
7196 A Controller shall not enable any ML-capable HDR-BT Targets to use any “Alternate Mode” Coding marked
7197 as Coding 3, unless it first ensures that all other HDR-BT Targets are capable of interoperating with Coding
7198 3. A Controller shall not initiate any HDR-BT transactions using DUAL Lane or QUAD Lane bit packing
7199 formats for all HDR-BT Blocks, unless it has previously configured all HDR-BT Targets on the Bus to use
7200 an “Alternate Mode” Coding marked as Coding 3. Once a Controller has configured all HDR-BT Targets on
7201 the Bus to use Coding 3, it must drive all HDR-BT transactions using the correct bit packing format for each
7202 HDR-BT Block, according to the conditions above.
Coding 7
7203 An optional Coding for HDR-BT Devices is Coding 7 (“Alternate Mode”), which requires three additional
7204 data Lanes.
7205 Coding 7 is intended for Buses with HDR-BT Targets that support three additional data Lanes for Multi-
7206 Lane. It is not interoperable with any other Codings in Table 79, and is expressly not interoperable with any
7207 1-Lane or 2-Lane ML HDR-BT Targets, nor with any 4-Lane ML HDR-BT Targets that do not support Coding
7208 7.
7209 In Coding 7:
7210 • All HDR-BT Blocks shall be transmitted using SDA[0], SDA[1], SDA[2], and SDA[3], using the
7211 QUAD Lane bit packing formats shown in Table 72 for Data Bytes and Table 75 for the Transition
7212 Byte. See Figure 128 for the HDR-BT Header Block format, Figure 130 for the HDR-BT Data
7213 Block format, and Figure 133 for the HDR-BT CRC Block format.
7214 • For generic HDR-BT transactions and for all HDR-BT CCC flows, all HDR-BT Data Blocks and
7215 HDR-BT CRC Blocks shall also be transmitted in the same QUAD Lane bit packing format.
7216 This “Alternate Mode” is not compatible with other ML-capable HDR-BT Targets that are not configured to
7217 use an “Alternate Mode” Coding marked as Coding 7, or other HDR-BT Targets that are not ML-capable.
7218 Such Targets will not correctly receive and understand any HDR-BT Header Blocks transmitted in this bit
7219 packing format, and as a result they will not participate in any HDR-BT transactions, and could even cause
7220 communication errors.
7221 Note:
7222 In Coding 7, the Controller shall not use the SINGLE Lane or DUAL Lane formats for any HDR-BT
7223 structured protocol elements, such as the HDR-BT Header Block, Data Block or CRC Block.
7224 Once an HDR-BT capable Target that supports Coding 7 has been configured to use an ML Frame
7225 format that uses Coding 7 or any other “Alternate Mode” Coding that is interoperable, the entire
7226 Device enters a ‘sticky’ state and shall not accept any configuration changes via the MLANE CCC
7227 that might use any other Coding not interoperable with Coding 7, except for certain MLANE sub-
7228 commands sent as a Broadcast CCC. If the MLANE Direct SET CCC is used, then such a Device
7229 may only enter the ‘sticky’ state from Coding 0.
7230 A Controller shall not enable any ML-capable HDR-BT Targets to use any “Alternate Mode” Coding marked
7231 as Coding 7, unless it first ensures that all other HDR-BT Targets are capable of interoperating with Coding
7232 7. A Controller shall not initiate any HDR-BT transactions using QUAD Lane bit packing formats for all
7233 HDR-BT Blocks, unless it has previously configured all HDR-BT Targets on the Bus to use an “Alternate
7234 Mode” Coding marked as Coding 7. Once a Controller has configured all HDR-BT Targets on the Bus to use
7235 Coding 7, it must drive all HDR-BT transactions using QUAD Lane bit packing formats for all HDR-BT
7236 Blocks.
7327 Table 82 I3C I/O Stage Characteristics Common to Push-Pull Mode and Open Drain Mode
Parameter Symbol Conditions Min Typ Max Unit Notes
1.10 1.20 1.30
Operating Voltage VDD – 1.65 1.80 1.95 V 1
2.97 3.30 3.63
Low-Level Input Voltage VIL – -0.1 * VDD – 0.3 * VDD V 8
High-Level Input Voltage VIH – 0.7 * VDD – 1.1 * VDD V 8
Schmitt Trigger Inputs Hysteresis Vhys – 0.1 * VDD – – V –
For VDD < 1.4V: IOL = 2 mA – – 0.18 V 2
Output Low Level VOL
For VDD ≥ 1.4V: IOL = 3 mA – – 0.27 V 2
Input Current -100 mV < Vi < VDD + 100 mV for ≥ 1.8V nominal -10 – 10 µA 2
Ii
(per Input-Only I/O Pin) -100 mV < Vi < VDD + 100 mV for < 1.8V nominal -5 – 5 µA 2
Note:
1) This I3C Basic Specification considered only 1.2V, 1.8V, and 3.3V, with associated tolerances, for typical cases requiring peak speeds using reduced capacitance loading.
Other voltage ranges are not prohibited; for example, see Table 83. Any I3C Bus implementation shall ensure the correct operation of the Devices resident on the Bus,
notably the inter-compatibility of their voltage ranges.
2) Negative sign for currents indicates that the Device is sinking current in this condition; see note 9.
3) The current of the Pull-Up must balance the time to pull SDA High against the capacitance of the line, with the current that a Target Device must sink in order to hold SDA at
VOL. Unless all Target Devices are known to have sufficiently strong drive (i.e., to pull SDA below VOL in time), the Pull-Up should be sized between the minimum and
maximum values.
V(t1) = 0.3 ∗ VDD = VDD (1 − e−t1 / RC); then t1 = 0.3566749 ∗ RC
V(t2) = 0.7 ∗ VDD = VDD (1 − e−t2 / RC); then t2 = 1.2039729 ∗ RC
T = t2 − t1 = 0.8473 ∗ RC
4) Pull-Up for Open Drain shall be switched off during I3C Push-Pull operation. May be implemented as: A Pull-Up internally; A current source internally; or an external Pull-Up
resistor driven by a pin.
5) For Devices that support both 1.8V and 3.3V, the larger capacitance may be used.
6) Open Drain never occurs on SCL
7) A weak Pull-Up or High-Keeper is separately sized, whether passive or active; this needs to be applied for both Controller handoff (see Section 5.1.7.2) and “Park1,High-Z”
uses in HDR-BT Mode (see Section 5.2.4.2).
8)The VIL min and VIH max allow for normal undershoot and overshoot on a Bus. Voltages that are lower than VIL min and higher than VIH max will be handled by protection
circuits (i.e., ESD protection) as with any GPIO or standard pad Peripheral. The board designer should be made aware of any deviations outside VIL min and VIH max.
9) A Device shall be able to continuously sink the indicated current (indicated as a negative number) in this condition. For most pad types, the drive strength must be rated at
twice the indicated current, since the rated drive strength is normally the peak current when the voltage difference is at its maximum. For VOL, this is SDA at VDD; for VOH, this
is SDA at ground.
7328 Table 83 I3C Low Voltage / High Capacitive Load I/O Stage Characteristics for Push-Pull Mode and Open Drain Mode
Parameter Symbol Conditions Min Typ Max Unit Notes
Operating Voltage VDD – 0.95 1.0 1.25 V –
Low-Level Input Voltage VIL – -0.3 – 0.3 V –
High-Level Input Voltage VIH – 0.7 – 1.25 V 1
Schmitt Trigger Inputs Hysteresis Vhys – 0.1 * VDD – 0.4 * VDD V –
Output Low Level VOL IOL = 4 mA – – 0.3 V 2
Input Current 2
Ii -100 mV < Vi < VDD -5 – 5 µA
(per Input-Only I/O Pin)
Capacitance –
Ci – – – 5 pF
(per I/O Pin)
Capacitance Mismatch Between –
ΔC – – – 1.5 pF
Pins
Push-Pull Only
Output High Level VOH IOH = -3 mA 0.75 – – V 2
Legacy Mode with Pull-Up See Errata 01, Item 21
tr = Max rise time (100 ns)
𝑉𝑉𝐷𝐷𝐷𝐷 − 𝑉𝑉𝑂𝑂𝑂𝑂 𝑡𝑡𝑟𝑟 3, 4,
Pull-Up for Open Drain Rp Cb = Bus Capacitance (100 pf) Ω
4 𝑚𝑚𝑚𝑚 0.8473 ∗ 𝐶𝐶𝐶𝐶 6, 7, 8
VDD = 1V
Note:
1) VDD with respect to Typical VDD
2) Negative sign for currents indicates current direction.
3) V(t1) = 0.3 * VDD = VDD (1 − e− t1 / RC); then t1 = 0.3566749 * RC
V(t2) = 0.7 * VDD = VDD (1 − e− t2 / RC); then t2 = 1.2039729 * RC
T = t2 − t1 = 0.8473 * RC
4) For higher capacitance Buses, Pull-Up for Open Drain should be switched off during I3C Push-Pull operation. This may be implemented as: A Pull-Up
internally; a current source internally; an external Pull-Up resistor driven by a pin; or any combination of the above. The effective resistance comprising the
Open Drain Pull-Up and High-Keeper Pull-Up shall be sized sufficiently to allow the Target to pull SDA Low within tDIG_L for adjusted clock speeds, and to
allow SDA to rise within trDA, per Section 5.1.3.1.
6) Open-Drain never occurs on SCL
7) A weak pull-up needs to be applied as well for Controller handoff
8) Rp Min should be decided based on the VIL specification
7329 I3C supports Legacy I2C Targets. An important feature of an I2C Target is the 50 ns Spike Filter on the SDA
7330 and SCL pads. If a Spike Filter is implemented on all I2C Devices present on the I3C Bus, then the I3C Bus
7331 may operate at maximum rated clock frequency. If any I2C Device does not have a Spike Filter, then the I3C
7332 Bus speed is determined by the slowest Legacy I2C Device without a Spike Filter. Other requirements of an
7333 I2C Legacy Target are listed in Table 84.
7334 Table 84 Legacy I2C Device Requirements When Operating on I3C
Feature Required Desirable Not Used Not Allowed Notes
Fm Speed X – – – –
Fm+ Speed – X – – –
HS and UFm – – X – 2
Static I2C Address X – – – –
50 ns Spike Filter – X – – 1
Clock Stretching
– – – X –
by Target
I2C Extended
– – X – 2
Address (10 bit)
I3C Reserved
– – – X –
Address
Note:
1) Lack of Spike Filter will severely degrade Bus performance and eliminate certain I3C Bus features
2) “Not Used” means that the I3C Controller will not make use of the I2C feature, however if the Target
supports the feature, then it will not interfere with I3C Bus operation.
7340 Table 85 I3C Timing Requirements When Communicating With I2C Legacy Devices
Legacy Mode Legacy Mode
Timing 400kHz / Fm 1MHz / Fm+
Parameter Symbol Units Notes
Diagram
Min Max Min Max
SCL Clock Frequency fSCL – 0 0.4 0 1.0 MHz –
Setup Time for a Repeated START tSU_STA Figure 140 600 – 260 – ns –
Hold Time for a (Repeated) START tHD_STA Figure 140 600 – 260 – ns –
Figure 140 –
tLOW 1300 – 500 – ns
SCL Clock Low Period Figure 141
tDIG_L Figure 141 tLOW + trCL – tLOW + trCL – ns –
Figure 140 –
tHIGH 600 – 260 – ns
SCL Clock High Period Figure 141
tDIG_H Figure 141 tHIGH - trCL – tHIGH + trCL – ns –
Data Setup Time tSU_DAT Figure 140 100 – 50 – ns –
Data Hold Time tHD_DAT Figure 140 – – – – ns –
SCL Signal Rise Time trCL Figure 140 20 300 – 120 ns –
SCL Signal Fall Time tfCL Figure 140 20 * (VDD / 5.5V) 300 20 * (VDD / 5.5V) 120 ns –
trDA Figure 140 –
SDA Signal Rise Time 20 300 – 120 ns
trDA_OD Figure 144
SDA Signal Fall Time tfDA Figure 140 20 * (VDD / 5.5V) 300 20 * (VDD / 5.5V) 120 ns –
Setup Time for STOP tSU_STO Figure 140 600 – 260 – ns –
Bus Free Time Between a STOP and a –
tBUF – 1.3 – 0.5 – µs
START
Pulse Width of Spikes that the –
tSPIKE Figure 156 0 50 0 50 ns
Spike Filter Must Suppress
7341 During an I3C communication the drive on the SDA pin shall have the ability to dynamically switch between
7342 Push-Pull and Open Drain.
7343 Table 86 I3C Open Drain Timing Parameters
Note:
1) tLOW_OD Min was specified to be enough time for a pull-up resistor to pull the SDA line High in a typical system.
2) The Controller may use a shorter Low period if it knows that this is safe, i.e., that SDA is already above VIH
3) Based on tSPIKE, rise and fall times, and interconnect
4) This maximum High period may be exceeded when the signals can be safely seen by Legacy I2C Devices,
and/or in consideration of the interconnect (e.g., a short Bus)
5) On a Legacy Bus where I2C Devices need to see Start, the tCAS Min value is further constrained
(see Section 5.1.3.3)
6) Targets that do not support the optional ENTASx CCCs (see Section 5.1.9.3.2) shall use the tCAS Max value
shown for ENTAS3
7) On a Mixed Bus with Fm Legacy I2C Devices, tAVAL is 300ns shorter than the Fm Bus Free Condition time (tBUF)
8) This timing can be disregarded when external passive High-Keepers are applied on both SCL and SDA lines.
9) The Controller uses this timing to send the first Broadcast Address after Bus initialization, in order to disable the
I2C Spike Filter for applicable I3C Target Devices (see Section 5.1.2.2.2).
7344 Table 87 I3C Push-Pull Timing Parameters for SDR, ML, HDR-DDR, and HDR-BT Modes
Parameter Symbol Timing Diagram Min Typ Max Units Notes
SCL Clock Frequency fSCL – 0.01 12.5 12.9 MHz 1
tLOW Figure 140 24 – – ns –
SCL Clock Low Period
tDIG_L Figure 141 32 – – ns 2, 4
SCL Clock High Period tHIGH_MIXED Figure 141 24 – – ns –
(for Mixed Bus) tDIG_H_MIXED Figure 141 32 – 45 ns 2, 3
tHIGH Figure 140 24 – – ns –
SCL Clock High Period
Figure 141
(for Pure Bus) tDIG_H 32 – – ns 2
Figure 140
Clock in to Data Out for Target tSCO Figure 147 – – 12 ns 7, 8
150e06 * 1 / fSCL
SCL Clock Rise Time tCR Figure 141 – – ns 5
(capped at 60)
150e06 * 1 / fSCL
SCL Clock Fall Time tCF Figure 141 – – ns 5
(capped at 60)
Controller tHD_PP Figure 146 tCR + 3 and tCF + 3 – – – 4, 6
SDA Signal Data Hold
in Push-Pull Mode
tHD_PP Figure 148 Figure 149
Target 0 – – – 6
Figure 150 Figure 151
SDA Signal Data Setup in Push-Pull Mode tSU_PP Figure 146 Figure 147 3 – N/A ns –
Clock After Repeated START (Sr) Condition tCASr Figure 153 tCASmin / 2 – N/A ns 9
Clock Before Repeated START (Sr) Condition tCBSr Figure 153 tCASmin / 2 – N/A ns –
Capacitive Load per Bus Line (SDA/SCL) Cb – – – 50 pF –
HDR-BT SCL Clock Frequency tBT_FREQ – 0.1 12.5 12.9 MHz –
HDR-BT Controller to Target Hand Off Delay tBT_HO – – – 10 µS –
HDR-BT Delay Bytes during Read
tBT_DBD – – – 1024 Bytes 10
(for Data-Block Delay mechanism)
Note:
1) FSCL = 1 / (tDIG_L + tDIG_H)
2) tDIG_L and tDIG_H are the clock Low and High periods as seen at the receiver end of the I3C Bus using VIL and VIH (see Figure 140). The tDIG_L, tDIG_H, and tDIG_MIXED minimum values of
32 ns are provided to allow an extreme 40/60 duty cycle at typical clock frequency of 12.5 MHz.
3) When communicating with an I3C Device on a Mixed Bus, the tDIG_H_MIXED period must be constrained to make sure that I2C Devices do not interpret I3C signaling as valid I2C signaling.
The tHIGH, tLOW, and tHIGH_MIXED minimum values of 24 ns are provided as a safe corner case, in order to allow enough time for processing under extreme conditions.
4) As both edges are used, the hold time needs to be satisfied for the respective edges; i.e., tCF + 3 for falling edge clocks, and tCR + 3 for rising edge clocks.
5) The clock maximum rise/fall time is capped at 60 ns. For lower frequency rise and fall, the maximum value is limited at 60 ns, and is not dependent upon the clock frequency.
6) tHD_PP is a Hold time parameter for Push-Pull Mode that has a different value for Controller mode vs. Target mode. Push-Pull Mode includes both SDR Mode and DDR Mode. In SDR
Mode the Hold time parameter is referred to as tHD_SDR, and in DDR Mode it is referred to as tHD_DDR
7) Devices with more than 12 ns of tSCO delay shall set the limitation bit in the BCR, and shall support the GETMXDS CCC to allow the Controller to read this value and adjust computations
accordingly. For purposes of system design and test conformance, this parameter should be considered together with pad delay, Bus capacitance, propagation delay, and clock
triggering points.
8) Pad delay based on 90 Ω / 4 mA driver and 50 pF load. Note that Controller may be a Target in a Multi-Controller system, and thus shall also adhere to this requirement
9) Targets with speed limitations inform the Controller via the Bus Characteristics Register that the minimum may not be acceptable. As a result, if the given SCL HIGH period is 50 ns or
greater, then the Controller needs to accommodate for Legacy I2C Devices that might see it.
10) This parameter represents the maximum number of Delay bytes that a Target may use during HDR-BT Read transfers, at each opportunity where the Target is unable to transmit or
chooses to delay transmitting a complete Data Block. This is fundamentally different from Stalling the clock. See Section 5.2.4.3.4.
Note:
It is not expected (and it would be unrealistic to expect) that all corner conditions will be present concurrently (i.e., that maximum frequency, worst duty cycle, slower edge, etc., would all
occur at the same time).
7345 The timing diagram in Figure 140 depicts I3C Legacy Mode for I2C Devices. The timing parameters
7346 referenced in this timing diagram appear in Table 85.
Sr Sr P
tfDA trDA tHD_DAT
0.7 X V DD
SDA
0.3 X V DD
tSU_STA
tHD_STA
tSU_DAT tSU_STO
tfCL trCL
0.7 X V DD
SCL
0.3 X V DD
= Open Drain With Open Drain Class Pull-Up = High Speed Active Push-Pull Drive
7347
7348 Figure 140 I3C Legacy Mode Timing
0.7xVDD
0.3xVDD
7349
7350 Figure 141 tDIG_H and tDIG_L
7351 The start of a typical I3C communication in SDR Mode is shown in Figure 142. The initial communication
7352 looks very similar to I2C, with additional commands that follow as described in Section 4. The key difference
7353 is that higher clock speed is supported, up to 12.5 MHz. The higher clock speed allows Legacy I2C Devices
7354 with 50 ns Spike Filters to ignore the communications. The Controller can then run in SDR Mode for I3C
7355 Devices using full 12.5 MHz timing, though it will have to slow down in order to communicate with Legacy
7356 I2C Devices. Figure 142 shows the beginning of a transaction, where the Target acknowledges its Address.
7357 Figure 143 shows the possible continuation of an I3C SDR communication, in the case where the Target
7358 does not acknowledge its Address. The Controller may either STOP the communication, or else continue with
7359 a Repeated START.
SDR Transfer
0.7 X VDD
SDA A6 A5 A0 RnW ACK D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C2 C7 C8 C9 C1 C2 C8 C9
0.3 X VDD
= Open-Drain Pull-Up class Transition from SCL clocks are shown identical for OD and PP
Open-Drain to even though they differ substantially
= High Speed Active Push-Pull Drive Push-Pull
0.7 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
Timing Open-Drain
Open-Drain Push-Pull Push-Pull
parameters used or Push-Pull
tSCO* tSU_OD tSCO* tSU_PP
NOTE:
Open-Drain: Controller releases SDA after a suitable delay from SCL edges = Active Drive by Controller or Target
Push-Pull: Controller drives SDA after a suitable delay from SCL edges = Open-Drain Pull-Up class by Controller
= High-Z by Target
STOP
0.7 X VDD
SDA A6 A5 A0 RnW NACK 0.3 X VDD
Repeated START
0.7 X VDD
SCL C9 0.3 X VDD
0.7 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
Open-Drain
Timing
Open-Drain or Push-Pull
parameters used tSU_PP
Push-Pull*
NOTE:
Open-Drain: Controller releases SDA after
a suitable delay from SCL edges = Active Drive by Controller or Target = Controller drives Push-Pull HIGH,
prepares for Repeated START
Push-Pull: Controller drives SDA after = Open-Drain Pull-Up class by Controller
= Controller drives Push-Pull LOW,
a suitable delay from SCL edges
prepares for STOP
= High-Z by Target
*C9: High phase may be Push-Pull timing
if address optimization is used
7362
7363 Figure 143 I3C Write Address NACK
7364 Figure 144 shows the timing parameters for an I3C START (not Repeated START), and Figure 145 shows
7365 the timing parameters for an I3C STOP.
0.7 X VDD
SDA
0.3 X VDD
trDA_OD
0.7 X VDD
SCL
0.3 X VDD
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
SCL
0.3 X VDD
tCR tCBP
7368
7369 Figure 145 I3C STOP Timing
7370 Figure 146 and Figure 147 illustrate the timing parameters that are unique to the Controller Device and to
7371 the Target Device, as specified in Table 87. The primary difference between the two is that a Controller
7372 always transmits the clock (SCL), whereas the Target is receiver-only on the SCL pin.
0.7 X VDD
SDA
0.3 X VDD
tHD_PP tSU_PP
0.7 X VDD
SCL
0.3 X VDD
7373
tCF tCR
7374 Figure 146 I3C Controller Out Timing
0.7 X V DD
SDA
0.3 X V DD
tSCO tSU_PP
0.7 X V DD
SCL
0.3 X V DD
tCF tCR
7375
7376 Figure 147 I3C SDR Target Out Timing
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
SCL
0.3 X VDD
tSU_PP tHD_PP
7377
7378 Figure 148 Controller SDR Timing
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
SCL
0.3 X VDD
STOP (P)
0.7 X VDD
SDA D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C8 C9
0.3 X VDD
STOP (P)
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
SCL C9
0.3 X VDD
tSCO tSCO
Target terminates the Read transfer by pulling = Active Drive by Controller or Target = High-Z by Controller
SDA Low in 9th bit and allowing Controller Device
to generate either STOP or RESTART = Open-Drain class Pull-Up by Controller = High-Z by Target
7381
7382 Figure 150 T-Bit When Target Ends Read and Controller Generates STOP
Repeated
START (Sr)
0.7 X VDD
SDA D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C8 C9
0.3 X VDD
Repeated
START (Sr)
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
SCL C9
0.3 X VDD
tSCO tSCO
Target terminates the Read transfer by pulling SDA = Active Drive by Controller or Target = High-Z by Controller
Low in 9th bit and allowing Controller Device to
generate either STOP or RESTART = Open-Drain class Pull-Up by Controller = High-Z by Target
7383
7384 Figure 151 T-Bit When Target Ends Read and Controller Generates Repeated START
0.7 X VDD
SDA D7 D6 D0 T D7
0.3 X VDD
0.7 X VDD
SCL C1 C8 C9 C1
0.3 X VDD
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
C9
SCL
0.3 X VDD
7386 Figure 152 T-Bit When Target and Controller Agree to Continue Read Message
Repeated
START (Sr) STOP (P)
0.7 X VDD
SDA D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C8 C9
0.3 X VDD
Repeated
START (Sr) STOP (P)
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
SCL C9
0.3 X VDD
tSCO tSCO
tCBSr tCASr
Note:
Sr immediately followed by P is illegal for I2C = Active Drive by Controller or Target = High-Z by Controller
devices, however many devices are not
adversely affected by it. = Open-Drain class Pull-Up by Controller = High-Z by Target
7387 The condition is not illegal for I3C devices
7388 Figure 153 T-Bit When Controller Ends Read with Repeated START and STOP
Repeated
START (Sr)
0.7 X VDD
SDA D7 D6 D0 T
0.3 X VDD
0.7 X VDD
SCL C1 C8 C9 C1
0.3 X VDD
Repeated
START (Sr)
0.7 X VDD
SDA
0.3 X VDD
0.7 X VDD
CR_SDA
0.3 X VDD
0.7 X VDD
TGT_SDA
0.3 X VDD
0.7 X VDD
tSCO tSCO
tCBSr tCASr
7390 Figure 154 T-Bit When Controller Ends Read via Repeated START and Further Transfer
STOP START
0.7 X VDD
SDA A6 A5
0.3 X VDD
0.7 X VDD
0.7 X VDD
CCR_SDA
0.3 X VDD
0.7 X VDD
0.7 X VDD
0.7 X VDD
SCL C1 C2
0.3 X VDD
tNEWCRLock
Timing
tCRHPOverlap
parameters OD or PP Open-Drain OD or PP
Open-Drain
used tSU_STO tSCO tCAS
7393 Figure 156 illustrates the I3C timing parameters related to the Spike Filter present on Legacy I2C Devices.
7394 This Spike Filter suppresses pulses shorter than 50 ns.
7395 I3C Mixed Bus clocking rates are chosen to prevent Legacy I2C Devices from seeing I3C Bus
7396 communications, by keeping at least the SCL High periods under 50 ns. To a Legacy I2C Device, SCL will
7397 simply appear to remain Low, i.e., no clock pulses will be received. In other words, I3C Bus communication
7398 uses SCL High periods of less than 50 ns, which are invisible to Legacy I2C Devices. (Low periods are also
7399 generally less than 50 ns, though longer in some cases.)
7400 Figure 156 details how when the slower Open Drain timing (tDIG_H) is used both I3C Devices (bottom trace)
7401 and Legacy I2C Devices (middle trace) can see its longer periods, and therefore both can see the Bus traffic.
7402 But when I3C’s faster Push-Pull timing (tDIG_H_MIXED) is used, the shorter periods will only reach the I3C
7403 Devices and not the Legacy I2C Devices, so only I3C Devices can participate in the Bus. I3C Push-Pull
7404 timing is specified in Table 87.
0.7 X V DD
Input to
SDA/SCL Pins
0.3 X V DD
0.7 X V DD
I3C SDA/SCL Pins
Without Spike Filter
0.3 X V DD
7407 Table 88 through Table 90 detail how timing and drive strength are adjusted during transmission of an I3C
7408 Message.
7409 Table 88 Timing and Drive for Start of New Frame: No Contention on A6
S Header Data P
Addr[6] N Data +
START Addr[5:0] RnW ACK STOP
(Arbitrated) T-Bit
Open Open
SDA Mode Push-Pull Push-Pull Open Drain Push-Pull Push-Pull
Drain Drain
Clocks 1 1 6 1 1 9*N 1
Note:
No contention on Addr[6], so the Controller may optionally use Push-Pull for Addr[5:0] and RnW, per
Section 5.1.2.2.2.
7410 Table 89 Timing and Drive for Start of New Frame: With Contention on A6
S Header Data P
Addr[6] Addr[5:0] RnW N Data +
START ACK STOP
(Arbitrated) (Arbitrated) (Arbitrated) T-Bit
Open Open Open Open Open
SDA Mode Push-Pull Push-Pull
Drain Drain Drain Drain Drain
Clocks 1 1 6 1 1 9*N 1
Note:
Contention on Addr[6], so Arbitration continues through Addr[5:0] and RnW.
7411 Table 90 Timing and Drive for Continuation of Frame Using Repeated START
Header /
S Sr Header Data P
Data…
N Data +
START … START Addr/RnW ACK STOP
T-Bit
Open Open
SDA Mode … Push-Pull Push-Pull Push-Pull Push-Pull
Drain Drain
Clocks 1 … 1 8 1 9*N 1
Note:
There may be any number of Repeated STARTs before the STOP.
LEGEND
Transition Bit
(Parity Bit for CCC Write Data)
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
I3C Target
Address (RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr or P
... Previous
transfer
Sr
I3C Target
Address (RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr or P
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
... Previous
transfer
Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
LEGEND
ACK = Acknowledge (SDA Low)
From Controller to Target ACK ACK with Handoff NACK = Not Acknowledge (NACK)
S = START Condition
Sr = Repeated START Condition
P = STOP Condition
From Target to Controller ACK ACK without Handoff T = Transition Bit alternative to ACK/NACK
7414
7415 Figure 158 I3C Private Write and Read Transfers with 7’h7E Address
S
I3C Target Address
(RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr ...
I3C Private Write Transfer (from START) without 7'h7E Address
... Previous
Write
Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
I3C Private Read Transfer (from Repeated START) after Private Write
S
I3C Target Address
(RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
A.3 Legacy I2C Write and Read Transfers on the I3C Bus
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
Legacy I2C Target
Address (RnW=0)
ACK Write Data-1 ACK ... Write Data-N
ACK/
NACK
Sr or P
... Previous
transfer
Sr
Legacy I2C Target
Address (RnW=0)
ACK Write Data-1 ACK ... Write Data-N
ACK/
NACK
Sr or P
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
Legacy I2C Target
Address (RnW=1)
ACK Read Data-1 ACK ... Read Data-N NACK Sr or P
... Previous
transfer
Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 ACK ... Read Data-N NACK Sr or P
LEGEND
ACK = Acknowledge (SDA Low)
ACK (from Target) NACK = Not Acknowledge (NACK)
From Controller to Target ACK
(Accept Write Data) S = START Condition
Sr = Repeated START Condition
ACK (from Controller) P = STOP Condition
From Target to Controller ACK
(Continue Read Data)
7418
7419 Figure 160 Legacy I2C Write and Read Transfers in I3C Bus with 7’h7E Address
S
Legacy I2C Target
Address (RnW=0)
ACK Write Data-1 ACK ... Write Data-N
ACK/
NACK
Sr ...
Legacy I2C Write Transfer (from START) without 7'h7E Address
... Previous
Write
Sr
Legacy I2C Target
Address (RnW=1)
ACK Read Data-1 ACK ... Read Data-N NACK Sr or P
S
Legacy I2C Target
Address (RnW=1)
ACK Read Data-1 ACK ... Read Data-N NACK Sr or P
7420
7421 Figure 161 Legacy I2C Write and Read Transfers in I3C Bus without 7’h7E Address
SDR
I3C Reserved Byte I3C Modal Broadcast CCC
S or Sr ACK T
(7'h7E) (RnW=0) (ENTHDR0 – ENTHDR7)
HDR
HDR Command HDR Data HDR HDR Restart
or Header (1 or more words/blocks) CRC* Pattern
Transition Bit
(End-of-Data for CCC Read Data)
Type TE0(1)
I3C Target (Sr ..7'h7E)
Sr ACK Read Data T
Address (RnW=1) or P
(1) The probability of error detection is quite low.
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
I3C Target
Address (RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr or P
... Previous
transfer
Sr
I3C Target
Address (RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr or P
S
I3C Reserved Byte
(7'h7E) (RnW=0)
ACK Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
Type TE0(1)
... Previous
transfer
Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
LEGEND
(1) The probability of error detection is quite low.
From Controller to Target
Transition Bit
(End-of-Data for Read Data)
7428
7429 Figure 165 Error Type Origins: I3C Private Write & Read Transfers with 7’h7E Address
S
I3C Target Address
(RnW=0)
ACK Write Data-1 T ... Write Data-N T Sr ...
I3C Private Write Transfer (from START) without 7'h7E Address
Type TE0(1)
... Previous
Write
Sr
I3C Target
Address (RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
I3C Private Read Transfer (from Repeated START) after Private Write
Type TE0(1)
S
I3C Target Address
(RnW=1)
ACK Read Data-1 T ... Read Data-N T Sr or P
LEGEND
(1) The probability of error detection is quite low.
From Controller to Target
ACK = Acknowledge (SDA Low)
NACK = Not Acknowledge (NACK)
S = START Condition
From Target to Controller Sr = Repeated START Condition
P = STOP Condition
T = Transition Bit alternative to ACK/NACK
Transition Bit
(Parity Bit for Write Data)
Transition Bit
(End-of-Data for Read Data)
7430
7431 Figure 166 Error Type Origins: I3C Private Write & Read Transfers without 7’h7E Address
Type TE4
I3C Reserved Byte
Sr NACK P
(7'h7E) (RnW=1)
LEGEND
Exit procedure
ACK/NACK
From Controller to Target ACK
(with Handoff)
Hot-Join
Request SDA arbitration
happens
Idle Controller
(Bus Free) Role
I2C Legacy Request
mode I3C transmission
IBI (Target mode
Interrupt)
start DAA Request
After no data
CCC Directed
I3C BCAST
CCC
CCC
Tx/Rx Data
Pvt Msg
Tx/Rx Data
Pvt Msg
Repeated
Start
Bcast
Repeated release
Start bus
release bus
to START or
STOP
Idle (Bus Free)
7437
7438 Figure 168 I3C Primary Controller FSM
7439 Figure 169 through Figure 173 represent I3C features including In-Band Interrupts, Secondary Controller,
7440 Dynamic Address Assignment, and Hot-Join.
START
Issue Repeated
bus cmd START, follow
detected == I3C traffic modes
Start
Addr==
Target Addr
[7:1]
RnW == 1
Disable all
Targets?
Is BCR bit[2]
set to 1'b1?
Disable Target
Interrupts?
Broadcast
Addr (7'h7E)
w/ RnW=0
from START
I3C
BCAST
7E/W
Broadcast
I3C CCC
BCAST SETAASA
Direct CCC 7E/W*
SETDASA
to Target
I3C Repeated
BCAST Broadcast START
7E/W* CCC
ENTDAA
from
1 Hot-Join
Target Target ACK
Request
Static Read 48
Addr, W Sr, 7E/R bit Prov
(NACK ID (NACK
#1) #1)
BCR
Read
(NACK
Repeated #1)
Dynamic START
Dyn Addr
Addr [7:1], [7:1],
DCR
Parity
Parity 0 (NACK #1) Read
(NACK
#1)
Error
Handling
STOP
7443
7444 Figure 170 Dynamic Address Assignment FSM
START
bus cmd
detected ==
Start
Hot-Join
Address ==
7'h02
Target typically
attempts again
RnW == 0
Hot-Join rejected
ACK NACK (for now)
STOP Repeated
START Repeated
START
STOP
May perform
other valid
START Bus activity
(etc.) I3C BCAST
7E/W I3C BCAST
7E/W
May also send Private
Write/Read, CCC, or end
SDR Frame with STOP
ENTDAA BCAST
CCC DISEC CCC
w/ DISHJ
(Disable Hot
Join)
Note: Not all
follow DAA
possible paths
Flow
are shown. 1
7445
7446 Figure 171 Hot-Join FSM
START
bus cmd
detected ==
Start
Addr ==
Secondary
Controller Dyn
Addr [7:1]
RnW == 0
Active Controller
Request
prepares to pass
Denied
Controller Role
7447
7448 Figure 172 Controller Role Request FSM
Secondary Controller
Active Controller
(as Target)
Controller
Prepare for
Role Target Role
Handoff
Request
Controller
Role Handoff
Respond to Procedure
GETACCCR
Assumed
Handoff
successful
Cancel
or retry
Monitor New
Cancel Active
or retry Become Controller
Active (release SCL)
Controller
Bus Idle
(100 µs)
Controller
Role
Asserted
Test New
Active
Controller
(pull SDA Low)
Respond
to SDA Low
(pull SCL Low)
Reclaim
Controller
End
Role
CE3
(pull SCL Low)
Error
Target Role
is Active
7451 The FSM in Figure 174 represents the Controller states when in HDR-DDR transmission Mode, including
7452 Entry, Restart, and Exit sequence for HDR-DDR Mode.
I3C BCAST
7E/W
bcast CCC
I3C BCAST
ENTHDRx
Preamble =
01
CMD word
WrCmdPrea
mble1
CmdPreamb
more le1 RX data
tx data word
TX data WrDataPrea
word mble1
RdDataPrea
HDR Restart
mble1
label
WrDataPrea
mble0 RdDataPrea
Tx CRC Tx CRC mble0
word word
HDR Exit
to I3C stop
7453
7454 Figure 174 HDR-DDR Mode FSM
Idle
START
cmd to 10-bit
Target addr
{11110,Addr
cmd to 7-bit RnW = 0
[9:8]}
Target addr
Addr
Phase 2
Sr
Target Addr
[7:1]
RnW = 0
RnW = 1 RnW = 0
WrData[7:0]
RnW = 1
Rcv
to stop RdData[7:0]
Rcv end txns
RdData[7:0]
Rd ACK
Rd NACK Rd ACK
last byte
STOP
7456
7457 Figure 175 I2C Legacy Controller FSM
2B + Read 4A Note:
Slight dip on SDA indicates weak Pull-Up. Controller
may choose to terminate Read and take over.
Hex Binary
0x4A = 0b01001010 T
SDA
SCL
Hex Binary
Sr 7'h2B = 0b0101011 R ACK
SDA
SCL
Hex Binary
7'h7E = 0b1111110 W ACK
SDA
Target driving SDA line
SCL
7478
7479 Figure 176 Example Communication Using I3C SDR Mode with Private Read
Directed 2B + Read
CCC_GETPID
SDA
SCL
Hex Binary
0x8D = 0b10001101 T
SDA
SCL
SDA
Target driving SDA line
7494 SCL
7495 Figure 177 Example Communication Using I3C SDR Mode with Direct CCC
Broadcast 00 2B
CCC_SETMRL
Hex Binary T
0x00 = 0b00000000 1
(this segment not shown)
Hex Binary
0x2B = 0b00101011 T Sr
SDA
SCL
0x0A = 0b00001010 T
SDA
SCL
7'h7E W ACK
SDA
Target driving SDA line
SCL
7506
7507 Figure 178 Example Communication Using I3C SDR Mode with Broadcast CCC
Hex Binary
2 bit preamble + 0x852B + 2 parity bits = 0b01 1000010100101011 01
SDA
SCL
0x20 T
SDA
SCL
7'h7E W ACK
SDA
Target driving SDA line
SCL
7523
7524 Figure 179 Example Communication Using HDR-DDR Protocol
SDA
SCL
Address + RnW Cmd0 byte Cmd1-Cmd3 bytes, etc.
0x23 T
SDA
Set up SDA for first
SCL HDR-BT Header Block
with ADDR[0] (RnW)
7'h7E W ACK
SDA
Target driving SDA line
SCL
7552
7553 Figure 180 Example Communication Using HDR-BT Protocol
7601 defensive based on a patent infringement claim or suit by another party will not be deemed to have
7602 initiated litigation.
7603 c. Circumvention or transfer. Licensor agrees that it has not transferred and will not transfer any
7604 patent having Necessary Claims solely for the purpose of circumventing the obligations described
7605 in this Agreement. In addition, Licensor agrees that any transfers by Licensor to a third party of a
7606 patent having relevant Necessary Claims, whether or not recognized as Necessary Claims at the
7607 time of transfer, shall be subject to (i) the terms and conditions of this Agreement, and (ii) the
7608 agreement that the third party shall grant licenses under said Necessary Claims to Implementers
7609 pursuant to the terms of this Agreement in like manner and to the same extent as the third party
7610 would be required to do if it had executed this Agreement. A transfer of ownership in a business
7611 entity which owns or has the right to license a patent having Necessary Claims shall be considered
7612 a transfer of such patent.
7613 4. Termination of obligation to license future versions. Each Licensor may terminate its
7614 participation in this Agreement at any time by providing written notice to the MIPI Managing Director;
7615 termination will be effective 30 days after such notice is actually received, subject to the survival points
7616 below. Promptly upon receipt of such notice, the MIPI Managing Director will alert the MIPI Board and will
7617 use reasonable efforts to notify all Licensors of such termination. After termination, the agreement to grant a
7618 license as provided in Section 3 shall survive in full force and effect only: (a) for versions of the MIPI I3C
7619 Basic Specification which the Board had approved before the effective date of termination; (b) for Necessary
7620 Claims relating to any version of the MIPI I3C Basic Specification approved after the effective date of
7621 termination that are used in a substantially similar manner and to a substantially similar extent with a
7622 substantially similar result as the Necessary Claims that were used in a prior version for which the Licensor
7623 is obligated to grant licenses under this Agreement; and (c) for those Necessary Claims that directly result
7624 from inclusion of Licensor-provided material in the draft version of the specification that existed immediately
7625 prior to Licensor’s withdrawal. Termination of this Agreement by one Licensor does not impact the
7626 Agreement among MIPI or the other Licensors, not does it not impact Licensor’s MIPI Membership
7627 Agreement, which will remain in full force and effect.
7628 5. Third party beneficiaries. All Implementers, whether or not they are MIPI members, are intended
7629 third party beneficiaries of this Agreement.
7630 6. Counterparts; additional Licensors. This Agreement may be signed in any number of
7631 counterparts. If additional parties manifest agreement to terms substantially identical to this Agreement, those
7632 parties will be deemed Licensors under this Agreement.
Attachment A
7633
7634
7635
7636
7637
7638
Participants
The list below includes those persons who participated in the Ad Hoc Working Group that developed this
Specification and who consented to appear on this list.
Eugen Becker, Robert Bosch GmbH Peter Lefkin, MIPI Alliance (Team)
Rajesh Bhaskar, Intel Corporation Satwant Singh, Lattice Semiconductor Corp.
Enrico Carrieri, Intel Corporation Przemyslaw Sroka, Cadence Design Systems,
Geraud Cheenne, STMicroelectronics Inc.
Abinaya Kubendran, L&T Technology Services Miles Williams, Introspect Test Technology Inc.