2025-09-08 3:41 PM
I'm creating an I3C target device. It uses an STM32U385RG as the microcontroller. According to the reference manual most bits of the Provisional ID are fixed and cannot be configured. This doesn't seem to allow for creating an I3C target device using my own MIPI manufacturer ID. Is that correct? Or is there some other way to provide a fully customizable Provisional ID?
If not configurable this seems like it makes the Provisional ID useless as it will be identical for all I3C target devices from all designers at all companies...
2025-09-08 4:17 PM - edited 2025-09-08 4:19 PM
You have 4 bits available to change within the provisioned ID. This gives 16 different devices of this type before you run into conflicts. The other bits are fixed at the defaults for this chip as given below.
2025-09-08 5:14 PM
That was my reading of the data sheet also.
This seems close to useless for those of us trying to implement I3C target devices as we cannot identify them as ours and embed our extended information as seems to be the whole purpose of the provisional id as defined by MIPI.
Would be great if all 48-bits were all read/write in future silicon...
2025-09-08 5:20 PM
Typically I2C devices have a WHO_AM_I register. Surely that could be used here, too.
Looks like ST is just following the guidelines here. 4 bits seems low to me too. I don't see a reason why the lower 12 bits are fixed.
2025-09-08 5:46 PM
Something like having a WHO_AM_I register is not a standard. My understanding of reading the MIPI I3C specification is that the point of the Provisional ID is to identify device uniquely and associate them with device manufacturers (not chip manufacturers).
Here is one of the descriptions I've seen:
"The Provisional ID is composed of three parts:
The MIPI Manufacturer ID is a two-byte Hexadecimal ID that is assigned by MIPI Alliance, Inc., and is available on the “MIPI Alliance Manufacturer ID Page” at https://mid.mipi.org/. Only the 15 Least Significant bits are used in PID[47:33]. The most significant bit is discarded.
The Provisional ID Type Selector (PID[32]) determines whether PID[31:0] is a Vendor Fixed Value or a Random Value.
If PID[32] = 1, PID[31:0] is a 32-bit value randomly generated by the user software.
If PID[32] = 0, PID[31:0] is a 32-bit Vendor Fixed Value composed of three parts:
Looking at other vendors data sheets (microchip, nxp, etc) the full Provisional ID can be specified. Seems like a huge oversight by ST to not make this fully configurable...