The I3C bus initialization procedure can be decomposed into three main stages, described below:
- Stage 1: On startup, the I3C master does not have any information about I3C slave devices and all Retaining Registers are set to the default reset vector table;
- Stage 2: Is fully maintained by application host. The first register section (Device ID0) is reserved for I3C master self-description. The following registers starting from Device ID1 will be filled by DAA procedure in Stage 3. This implies rules firmware should follow:
- I3C devices with Static Address which firmware assume to enumerate with SETDASA CCC command shall be localized in Retaining Registers table (see Figure 12-23) after address space that reserved for I3C devices intended to be enumerated with ENTDAA;
- Corresponding I3C_DEVS_CTRL bits for active
should be set;
- Stage 3: Before attempting DAA procedure, firmware should take following actions:
- For Static I3C Devices intended to be enumerated with SETDASA CCC command:
- Configuration registers should be programmed with Static Addresses and other settings relevant for I3C device;
- Corresponding I3C_DEVS_CTRL bits for active
should be set;
- Dynamic Addresses should be assigned using SETDASA CCC command;
- Configuration registers should be programmed with just assigned Dynamic Addresses;
- Provisional ID / BCR / DCR Registers (I3C_DEV_IDn_RR1 and I3C_DEV_IDn_RR1, n = 0 to 11) should be programmed with data either predefined by application or obtained by reading PID / BCR / DCR with related CCC;
- For I3C Devices intended to be enumerated with ENTDAA CCC command:
- Configuration registers should be programmed with Dynamic Addresses and other settings relevant for I3C Device;
Once all above conditions are satisfied the firmware can issue the ENTDAA CCC command, which is considered as start condition for Stage 3.
Figure 12-23 presents the I3C bus initialization for DAA procedure.
During automatic Dynamic Address Assignment
procedure, the I3C devices send their Provisional ID, BCR and DCR using
open-drain class driver. The Device ID sections are assigned to the I3C Devices
based on the Provisional ID arbitration. As a result, the lower value of the
Provisional ID the device has, the lower position in retaining registers map it
gets. Once device gets Dynamic Address and its Retaining Registers are filled,
corresponding I3C_DEVS_CTRL bit for active is set automatically.
Figure 12-24 presents the I3C flow diagram for DAA procedure.
Note: Static I3C devices have already assigned Dynamic Address with SETDASA CCC command and stay quiet during DAA procedure.
Note: Although arbitration continues over BCR and DCR values, it is not guaranteed to be resolved in this phase, if not resolved during Provisional ID period.