ENTDAA Procedure

The I3CC assigns a dynamic address to any I3C device not assigned a dynamic address, using the broadcast command code Enter Dynamic Address Assignment (ENTDAA). This process is initiated by the I3CC after a cold power-up, after completing the Dynamic Address Assignment for static address devices using the SETDASA procedure, or if a hot-join request is received from any I3C device. The I3CC may choose to use a single or multiple ENTDAA Address Assignment commands to assign a dynamic address for all the connected I3C devices. The number of devices that can be assigned to a single command is limited by the configured value of the DAT and the Device Characteristics Table.

The following flow describes the Dynamic Address Assignment using ENTDAA procedure:

  1. The application initializes the I3CC.
  2. The application programs the DAT with the data structure as shown in the following figure:
    Note: Do not use the Reserved fields during address assignment procedure. Doing so may result in unexpected behavior
    Figure 9-220. ENTDAA Device Address Table Data Structure

    The number of locations to be programmed is determined by:

    1. Number of I3C devices to be assigned with a dynamic address with a single Address Assignment command.
    2. Number of locations available in the DAT.
  3. The application issues the Address Assignment command with the following:
    1. ENTDAA command code in the CMD field.
    2. DEV_INDEX field pointing to the location in the DAT from where the dynamic address is to be assigned.
    3. DEVICE_COUNT field indicating the number of devices to be assigned with the dynamic address with the single command. DEVICE_COUNT value cannot be more than the IC_DEV_CHAR_TABLE_BUF_DEPTH/4, and the value must be programmed so that DEVICE_COUNT+DEV_INDEX must not exceed the DAT table depth.
  4. The I3CC starts executing the ENTDAA CCC transfer as soon as the Address Assignment command is issued as shown in the following figure:
    Figure 9-221. ENTDAA CCC Transfer

  5. The first winning device gets the first dynamic address pointed to by the DEV_INDEX of the command. The second winning device gets the second dynamic address pointed to by the DEV_INDEX+1, and so on.

    The received 48-bit PID, BCR and DCR along with the assigned dynamic address are captured in the Device Characteristics Table.

  6. The Dynamic Address Assignment continues until one of the following conditions occurs:
    1. NACK response is received for the header 0x7E, RnW=0 (No I3C devices present)
    2. NACK response is received for the restart header 0x7E, RnW=1 (All devices got the dynamic address)
    3. NACK response received for the assigned dynamic address (Error detected by the receiving I3C device on the dynamic address)
    4. DEVICE_COUNT reaches zero regardless of the number of devices yet to be assigned to the dynamic address (End of address assignment request)
  7. The I3CC writes the Transfer Complete status into the Command Response queue. The field DATA_LENGTH of the Response Data Structure indicates the remaining device count in case the transfer is terminated abruptly due to a NACK response from the target.
Note:
  1. Complete ENTDAA transfer from START condition to STOP condition is generated in I3C Open-Drain mode.
  2. The application must calculate the dynamic address parity before populating the DAT location.