I3C Common Command Codes
This page provides an overview of CCCs, their functions, and the ones currently supported in the Binho family of products.
What are Common Command Codes?
Common Command Codes (CCCs) are I3C's standardized command set enabling access to various standard functions. Support for CCCs depends ultimately on the targets. CCCs are classified as BROADCAST or DIRECT:
Broadcast CCCs:
Addressed to all I3C target devices on the I3C bus.
All Broadcast CCCs are write operations.
Direct CCCs:
Typically directed to a single target device (e.g., DUT) on the I3C bus, identified by its dynamic address.
Some direct write CCCs can use a group address.
If a response is required, only the specifically addressed target device will reply.
Direct CCCs can be classified as read, write, or read/write.
Brief Descriptions and References
DISEC and ENEC (Enable/Disable Events Command)
Available BOTH as DIRECT and BROADCAST
Allows the Controller to control target-initiated traffic on the I3C bus. ENEC enables traffic, DISEC disables traffic.
This CCC controls:
Target In-Band Interrupts (ENINT/DISINT)
*
Requests for the Controller Role (ENCR/DISCR)
Hot Join Signaling (ENHJ/DISHJ)
*
These commands can prevent the target from making Dynamic Address Assignment requests.
*
Enabled by Default
ENDXFER (Data Transfer Ending Procedure Control)
Available BOTH as DIRECT and BROADCAST
Allows the Controller and Target devices to exchange setup parameters for terminating data transfers in supported HDR modes.
Reference:
I3C Basic v1.0
❌
Unsupported
ENTASX (Enter Activity State X)
Available BOTH as DIRECT and BROADCAST
Allows the Controller to inform Targets of inactivity periods on the bus, allowing them to enter lower power states.
Activity States:
Activity State 0: 1 microsecond (latency-free operation)
Activity State 1: 100 microseconds
Activity State 2: 2 milliseconds
Activity State 3: 50 milliseconds (lowest-activity operation)
GETACCCR (Get Accept Controller Role)
Available ONLY as DIRECT
Enables the verification of a Controller Role request and enables the Active Controller to transfer the role to a Secondary Controller. If the Second Controller accepts the role, it responds with its Dynamic Address (matching the target's address). If it NACKs or returns an invalid address, the Secondary Controller will not assume the Controller Role.
GETBCR (Get Bus Characteristics Register)
Available ONLY as DIRECT
Allows the Controller to get the Bus Characteristics Register of a target.
GETCAPS (Get Optional Feature Capabilities)
Available ONLY as DIRECT
Allows the Controller to check which optional I3C features a Target supports. Responses are 2 to 4 bytes.
I3C Basic v1.0
❌
Unsupported
GETDCR (Get Device Characteristics Register)
Available ONLY as DIRECT
Enables the Controller to retrieve the Device Characteristics Register from a Target device.
GETMRL / SETMRL (Get/Set Max Read Length)
SETMRL is available both in DIRECT and BROADCAST, GETMRL is DIRECT ONLY
Allows the Controller to set or get a maximum data read length in bytes, and optionally, a maximum IBI payload size. The first 2 bytes indicate the Max Read Length, with a minimum of 16 bytes. A response of 0 means the Max Read Length is less than 16 bytes; otherwise, it shows the length in bytes. If the device's BCR bit 2 is set, a third byte for Max IBI payload size is included. A value of 0 means unlimited, and the minimum depends on Timing Control (4 or 5 bytes if used, or 1 byte if not used).
GETMWL / SETMWL (Get/Set Max Write Length)
SETMWL is available both in DIRECT and BROADCAST, GETMWL is DIRECT ONLY
Allows the Controller to set or get the maximum data write length in bytes. This limit does not apply to BROADCAST CCCs as their data sizes are fixed. The minimum value you can set is 16 bytes. If a Target responds with 0, it means the Max Write length is less than 16 bytes. Any other response indicates the number of bytes.
GETMXDS (Get Max Data Speed)
Available ONLY as DIRECT
Allows the controller to determine a Target's SDR mode data speed limitations. The response is provided in one of two possible formats, indicated by the number of bytes returned:
FORMAT 1: 2 bytes containing Maximum Write Speed and Maximum Read Speed.
FORMAT 2: 5 bytes, including 2 bytes for Maximum Write Speed and Maximum Read Speed, plus 3 bytes for Maximum Read Turnaround Time.
The format used depends on whether the target needs to communicate its Maximum Read Turnaround Time.
GETPID (Get Provisioned ID)
Available ONLY as DIRECT
Allows the controller to get the 48-bit (6-byte) Provisioned ID of a target.
GETXTIME (Get Exchange Timing Information)
Available ONLY as DIRECT
Allows the controller to query the exchange timing capabilities of a Target. The response contains four bytes that provide key information on supported Timing Control modes, current state, internal clock frequency, and accuracy. The response bytes are interpreted as follows:
RSTDAA (Reset Dynamic Address Assignment)
Available ONLY as BROADCAST
This CCC indicates all Targets to clear their assigned Dynamic and Group Addresses (if applicable). After clearing, all Target devices should be ready to participate in Dynamic Address Assignment, SETDASA or SETAASA, or communicate via I2C.
ENTDAA (Enter Dynamic Address Assignment)
Available ONLY as BROADCAST
Allows the Controller to indicate all targets to enter the Dynamic Address Assignment procedure. Target devices with an already assigned Dynamic Address do not respond to this command.
SETAASA (Set All Addresses to Static Addresses)
Available ONLY as BROADCAST
Allows the Controller to request that all Targets that have an I2C Static Address set it as their Dynamic Address. This is the fastest way to assign Dynamic Addresses.
SETBUSCON (Set Bus Context)
Available ONLY as BROADCAST
Enables the Controller to specify a particular context on the I3C bus, either a higher-level protocol developed by a standards-developing organization or the version of I3C Basic in use. Targets respond only to contexts they recognize. This command can be used multiple times to set and support a layered protocol context.
I3C Basic v1.0
❌
Unsupported
SETDASA (Set Dynamic Address from Static Address)
Available ONLY as DIRECT
Allows the Controller to assign a Dynamic Address to a Target via its Static Address (therefore, the target must have an I2C Static Address). This CCC is faster than the Dynamic Address Assignment Procedure (ENTDAA) and should be used beforehand. SETDASA is particularly useful for simple point-to-point communication in an I3C minimal bus, consisting of a single Controller and Target.
SETNEWDA (Set New Dynamic Address)
Available ONLY as DIRECT
Allows the Controller to assign a new Dynamic Address to a Target that already has an existing Dynamic Address.
SETXTIME (Set Exchange Timing Information)
Available BOTH as DIRECT and BROADCAST
Allows the Controller and Targets to exchange event timing information for synchronizing controls, collecting or reconstructing timestamps, and specifying the timing data procedure. A defining byte is required to specify a sub-command, and while some sub-commands may require additional data, none that do so are currently supported.
SETGRPA (Set Group Address)
Available ONLY as DIRECT
Allows the Controller to assign a Group Address to an I3C Target that supports the Group Address feature. The Target will then respond to both the assigned Group and Dynamic addresses. If multiple I3C Targets share the same Group Address, a single message sent by the Controller to that Group Address will be received by all of those I3C Targets simultaneously.
I3C Basic v1.0
❌
Unsupported
RSTACT (Target Reset Action)
Available BOTH as DIRECT and BROADCAST
This CCC, available as both Broadcast (WRITE) and Direct (READ/WRITE), configures the next Target Reset action and can be used to retrieve the Target's reset recovery timing. It is used alongside the Target Reset Pattern to initiate a reset on the Target.
I3C Basic v1.0
❌
Unsupported
GETSTATUS (Get Device Status)
Available ONLY as DIRECT
Allows the controller to get the current status from the Target.
DEFTGTS (Define List of Targets)
Available ONLY as BROADCAST
Allows the Main Controller to tell the Secondary Controllers what Targets (and Groups) are on the I3C Bus.
Supported CCCs
Here is a table showing the current CCC support in Supernova for I3C Targets and Controllers, alongside their Software Platforms:
ENEC
DIRECT/BROADCAST
✅
✅
✅
✅
✅
DISEC
DIRECT/BROADCAST
✅
✅
✅
✅
✅
ENTASX
BROADCAST
✅
✅
✅
✅
✅
RSTDAA
BROADCAST
✅
✅
✅
✅
✅
ENTDAA
BROADCAST
✅
✅
❌
❌
❌
SETMWL
DIRECT/BROADCAST
✅
✅
✅
✅
✅
SETMRL
DIRECT/BROADCAST
✅
✅
✅
✅
✅
SETBUSCON
BROADCAST
✅
✅
✅
✅
✅
ENDXFER
DIRECT/BROADCAST
✅
✅
✅
✅
❌
SETXTIME
DIRECT/BROADCAST
✅
✅
✅
✅
✅
SETAASA
BROADCAST
✅
✅
✅
✅
✅
Not supported in Supernova in target mode.
RSTACT
DIRECT/BROADCAST
✅
✅
❌
❌
❌
RSTGRPA
DIRECT/BROADCAST
✅
✅
✅
❌
❌
SETDASA
DIRECT
✅
✅
✅
✅
✅
SETNEWDA
DIRECT
✅
✅
✅
✅
✅
GETMWL
DIRECT
✅
✅
✅
✅
✅
GETMRL
DIRECT
✅
✅
✅
✅
✅
GETPID
DIRECT
✅
✅
✅
✅
✅
GETBCR
DIRECT
✅
✅
✅
✅
✅
GETDCR
DIRECT
✅
✅
✅
✅
✅
GETSTATUS
DIRECT
✅
✅
✅
❌
❌
GETACCCR
DIRECT
✅
✅
✅
✅
✅
Supernova as a target does not support I3C Secondary Controller Role (yet)
GETMXDS
DIRECT
✅
✅
✅
✅
✅
GETCAPS
DIRECT
✅
✅
✅
✅
✅
Currently a Defining Byte for GETCAPS is NOT supported.
GETXTIME
DIRECT
✅
✅
✅
✅
✅
SETGRPA
DIRECT
✅
✅
✅
❌
❌
CCCs or their types outside of this reference table are NOT supported at the moment. These include:
BROADCAST DEFTGTS: This will be supported when I3C Secondary Controller mode is supported
BROADCAST ENTTM
BROADCAST DEFGRPA: This will be supported when I3C Secondary Controller mode is supported
DIRECT ENTASX
DIRECT SETBRGTGT
DIRECT SETROUTE
BROADCAST/DIRECT ENTHDR0: This will be supported when HDR-DDR mode is supported
BROADCAST/DIRECT ENTHDR1: The Supernova does not support HDR - TSP mode
BROADCAST/DIRECT ENTHDR2: The Supernova does not support HDR - TSL mode
BROADCAST/DIRECT ENTHDR3: The Supernova does not support HDR - BT mode
BROADCAST/DIRECT MLANE: The Supernova does not support multi-lane
Last updated