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:
- The application initializes the I3CC.
- 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
The number of locations to be programmed is determined by:
- Number of I3C devices to be assigned with a dynamic address with a single Address Assignment command.
- Number of locations available in the DAT.
- The application issues the Address Assignment command with the
following:
- ENTDAA command code in the CMD field.
- DEV_INDEX field pointing to the location in the DAT from where the dynamic address is to be assigned.
- 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.
- The I3CC starts executing the ENTDAA CCC transfer as soon as the Address Assignment command is issued as shown in the following figure:
- 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.
- The Dynamic Address Assignment continues until one of the following
conditions occurs:
- NACK response is received for the header 0x7E, RnW=0 (No I3C devices present)
- NACK response is received for the restart header 0x7E, RnW=1 (All devices got the dynamic address)
- NACK response received for the assigned dynamic address (Error detected by the receiving I3C device on the dynamic address)
- DEVICE_COUNT reaches zero regardless of the number of devices yet to be assigned to the dynamic address (End of address assignment request)
- 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.
- Complete ENTDAA transfer from START condition to STOP condition is generated in I3C Open-Drain mode.
- The application must calculate the dynamic address parity before populating the DAT location.