cancel
Showing results for 
Search instead for 
Did you mean: 

I3C Target Provisional ID cannot be configured?

denis239955
Associate II

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...

4 REPLIES 4
TDK
Super User

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.

TDK_1-1757373359273.png

 

 

If you feel a post has answered your question, please click "Accept as Solution".

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...

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.

https://onlinedocs.microchip.com/oxy/GUID-598A6CC5-BA9B-433D-BAFE-893E2A72A7A3-en-US-12/GUID-56B17BB8-61FF-417E-8B16-193E4478951E.html

If you feel a post has answered your question, please click "Accept as Solution".

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:

  • PID[47:33]: MIPI Manufacturer ID (15 bits)
  • PID[32]: Provisional ID Type Selector (1 bit)
  • PID[31:0]: Vendor Fixed Value or Random Value (32 bits)

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:

  • PID[31:16]: Part ID (16 bits): This is defined by the device vendor.
  • PID[15:12]: Instance ID (4 bits): This defines the individual device using a method defined by the user.
  • PID[11:0] (12 bits): The user or the vendor can use this to provide additional information to the Controller (for example, deeper device characteristics may be provided)."

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...