Broadcast vs Direct CCC

There are three categories of CCCs:

  1. 1.Broadcast Write – A Broadcast Write CCC is seen by all I3C targets on the bus. The Target module inspects every received Broadcast command, even if it then chooses to ignore the CCC (for example, an unsupported CCC is ignored). ENEC is an example of a Broadcast Write CCC.
  2. 2.Direct Write – A Direct Write CCC writes data to a Target module directly by selecting its Dynamic Address. Other targets on the bus can also be addressed by the Controller in the same transaction by selecting the appropriate Dynamic Addresses. SETMRL is an example of a Direct Write CCC.
  3. 3.Direct Read – A Direct Read CCC reads data from the Target module directly by selecting its Dynamic Address. Other targets on the bus can also be addressed by the Controller in the same transaction by selecting the appropriate Dynamic Addresses. GETPID is an example of a Direct Read CCC.

Each CCC has its own unique 8-bit command code. The command code space is divided into Broadcast CCC and Direct CCC codes. Broadcast CCCs have command codes 0x00 through 0x7F. Direct CCCs have command codes 0x80 through 0xFE. Consequently, the targets can inspect the Most Significant bit (bit 7) of the command code to differentiate between the two types of CCCs. Table 1 lists the command codes for all the supported CCCs.

The frame format for Broadcast CCCs is shown in Figure 1. All the Broadcast CCCs share the same general frame format and has the following sequence:

  1. 1.Start or Restart, followed by the Broadcast Address.
  2. 2.Broadcast CCC value, followed by any required defining byte or data.
  3. 3.End of command.
Figure 1. Broadcast CCC General Frame Format

The frame format for Direct CCCs is shown in Figure 2. All the Direct CCCs share the same general frame format and has the following sequence:

  1. 1.Start or Restart, followed by the Broadcast Address.
  2. 2.Direct CCC value, followed by any required defining byte or data.
  3. 3.Restart, followed by the address of the targeted Target, followed by any required defining byte or data.(1)
  4. 4.Repeat step 3 if the Controller wants to address multiple targets in the same CCC transaction.
  5. 5.End of command.
Figure 2. Direct CCC General Frame Format

The frame field definitions are explained in Table 1.

Important:
  1. 1.In the case of Direct Read CCCs, if the Target is not ready with the data for the Controller to read, the Target module automatically NACKs when it is addressed. The Controller will then emit a Restart and transmit the Target’s address once more, providing the Target additional time to prepare its result. If the Target still does not have the data ready and NACKs the request again, the Controller will not re-attempt a read.
Table 1. CCC Frame Field Definitions
Field Definition
S or Sr A CCC always begins with either Start or Restart condition
Broadcast Address/ W/ACK This field has three parts:
  • Broadcast Address – The CCC Frame starts with Controller transmitting the global I3C Broadcast Address (7’h7E), so that all the I3C targets on the bus will see the CCC code that follows.
  • W – The R/W bit is always clear (0 = Write) indicating that the Controller is writing a message to the targets.
  • ACK – The collective ACK by at least one I3C target on the bus. If there are no I3C targets on the bus, this will be a passive NACK and the Controller will terminate the transaction.
Broadcast or Direct CCC/T The Controller then sends an 8-bit code corresponding to the CCC being sent. All supported CCC codes are defined in Table 1. This is followed by a Parity T-bit.
Defining Byte (Optional)/T Some CCCs require an additional defining byte to be sent. Refer to the individual CCC definition for more information. This is followed by a Parity T-bit.
Data (Optional)/T Some CCCs require additional data (one or more bytes) to be sent. Refer to the individual CCC definition for more information. This is followed by a Parity T-bit.
Target Address/

R/W
/ACK

This field is used by Direct CCCs to address an individual target on the bus. This field has three parts:
  • Target Address – The 7-bit Dynamic Address of the target being addressed.
  • R/W – The R/W is set appropriately depending on whether the Controller is performing a read or a write operation. Refer to the individual CCC definition for more information.
  • ACK – The addressed target ACKs the request. If the addressed target is not available on the bus (passive NACK) or if it NACKs for any reason, the Controller terminates the transaction and retries one more time.

Sr/Broadcast Address

Or

P
A CCC always ends with either a Stop condition, or a Restart condition followed by the 7’h7E Broadcast Address (which can follow into another CCC).