To initiate the DAA procedure I3C needs to issue ENTDAA CCC command following the below procedure:
- Enable at least COMP and NACK interrupts.
- Issue ENTDAA CCC command:
- Make sure controller is enabled.
- Write Command Word1 with ENTDAA CCC command value:
- I3C_IMD_CMD1[7-0] CCC bit-field: 0x07
- Write Command Word0 with following field values:
- I3C_CMD0_FIFO[30] IS_CCC bit: 0x01
- I3C_CMD0_FIFO[23-12] PL_LEN bit-field: 0x00
- I3C_CMD0_FIFO[7-1] DEV_ADDR bit-field: 0x00
- I3C_CMD0_FIFO[0] RNW bit: 0x00
- Wait for COMP interrupt (read I3C_MST_ISR)
- If COMP and no other interrupt occurs, continue. Otherwise, handle the error situation. NACK interrupt indicates no slave devices available on bus.
- Read I3C_MST_STATUS0[25] DAA_COMP bit. It is
asserted simultaneously with I3C_MST_ISR interrupt flag.
Note: DAA procedure takes significant amount of time since there are always 9 bytes of data transmitted for each device (PID, BCR, DCR from device and DA to device), so for maximum bus size it will take 99 bytes.