24.4.4.2 Dynamic Address Assignment (DAA)

The Controller must perform a Dynamic Address Assignment procedure in order to provide a unique Dynamic Address to each I3C device (i.e., with a Target or Secondary Controller role) that is connected to the bus.

Once a Target or Secondary Controller receives a Dynamic Address, that Dynamic Address shall be used in all subsequent transactions on the I3C bus, until and unless the Controller changes the Dynamic Address.

The Dynamic Address Assignment process includes an Address Arbitration procedure similar to I2C’s. The I3C arbitration procedure differs from I2C by using the values of the 48-bit Provisioned ID (PID), Bus Characteristic Register (BCR) and Device Characteristic Registers (DCR) concatenated. The device on the I3C bus with the lowest concatenated value wins each arbitration round in turn, and the Controller assigns a unique Dynamic Address to each winning device.

Figure 24-8. Dynamic Address Assignment Transaction (ENTDAA)
???

Dynamic Address can be assigned using any of the following commands: ENTDAA, SETDASA, SETAASA or SETNEWDA.

The steps required for Dynamic Address assignment are:

  1. Program the device address table (I3CxDEVADDRTAByLOC1) depending on the number of devices connected.
  2. Send the command by writing to the Command Queue (I3CxCMDQUE) with the Address Assignment Command (refer to Address Assignment Command Data Structure).
  3. The Dynamic Address assignment continues until one of the following conditions occurs:
    1. A NACK response is received for the header 0x7E/W (No I3C devices present).
    2. A NACK response is received for the Static Address (Not a valid Static Address or the device does not exist).
    3. A NACK response is received for the assigned Dynamic Address.
    4. DEVICE_COUNT written to the I3CxCMDQUE reaches zero.
  4. The Controller writes the transfer complete status into the Command Response (I3CxRESPQUE). The data length field of the response data structure (Response Data Structure) indicates the remaining device count in case the transfer is terminated abruptly due to a NACK response from the Target.
  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 (I3CxDEVCHARTAByLOC1, I3CxDEVCHARTAByLOC2, I3CxDEVCHARTAByLOC3, I3CxDEVCHARTAByLOC4).
Figure 24-9. ENTDAA Transfer Flow
Note:
  1. For the SETAASA command, use Transfer Command Data Structure without Data Payload.
  2. For the SETNEWDA command, use Transfer Command Data Structure with Target address and new Target address as data payload (refer to Directed Write and Read Transfers).