cancel
Showing results for 
Search instead for 
Did you mean: 

LPS22HH I3C Address Assignment Collision

Alex Podgorski
Associate

I'm working on a new design requiring four pressure sensors. The LPS22HH only allows two I2C address's through pin 5. Rather then increase complexity by putting all four on SPI I wanted to see if I could use the I3C bus capability. The datasheet refers to the dynamic addressing and SETNEWDA(0x88) command from the I3C spec but never directly refers to the ability to dynamically address the device.

I'd like to know if this capability does indeed exist? or if I3C is only implemented in that the sensor will work on the bus but only with its static I2C address? or if I3C dynamic addressing is implemented but there is no distinct instance ID to positively ID each sensor connected to the I3C bus?

If the capability does not exist is there any plan for future revisions of this product to allow for programming I2C addresses or full implementation of I3C dynamic addressing?

For background,

When I3C attempts dynamic address assignment it checks the manufacturer ID and part number, then the instance ID. Looking through the datasheet the I3C specified read only bus control register and device characteristic register are not defined. It seems only the read only Who_am_I register would be acting as the device characteristic register. Nor is there is a register for any assigned dynamic ID.

The 7bit I3C address should be assignable regardless of the original static I2C address. However in order to differentiate between duplicate sensors the device should have a 48 bit non-volatile provisional ID. The 4 bits 15:12 would have the instance ID (which would theoretically be sequential down the reel), allowing for up to 16 devices on one I3C bus to be positively identified by the master before dynamic addressing can't positively ID individual sensors. Bits 11:0 are also allowed in the spec to be used to positively ID each instance when assigning

Thank you

Alex

4 REPLIES 4
T J
Lead

I tried to help, it is a complex question...

how did you go ?

generally you need unique addresses in 7 bit for multiple devices.

I cant get the data sheet from Digi.. lucky we have google

ok, You can only run 2 devices of a single IIC port.

The 7-bit slave address (SAD) associated to the LPS22HH is 101110xb. The SDO/SA0 pad
can be used to modify the less significant bit of the device address. If the SA0 pad is
connected to voltage supply, LSb is ‘1’ (7-bit address 1011101b=5Dh), otherwise if the SA0
pad is connected to ground, the LSb value is ‘0’ (7-bit address 1011100b=5Ch). This
solution permits connecting and addressing two different LPS22HH devices to the same I²C
lines.

I guess your request is unusual, since the Air pressure of 4 devices next to each other should read almost exactly the same. Therefore there is no need to run more than 1 device, hence there is no facility to run more than 2, for redundancy I guess.

Miroslav BATEK
ST Employee

1) For a single instance of LPS22HH is possible to use I3C bus and address

the device through its dynamic address assigned during the assignment

phase (using CCC ENTDAA or CCC SETDASA).

2) In the case of several devices (max 2!) It is necessary to use the

CCC SETDASA command and distinguishing the two devices by means

of the SDO pin during the dynamic addressing phase (SDO must be

in one case 0 in the other case 1).

In particular, having all the LPS22HH the same instance ID, can not be

assigned a dynamic address with CCC ENTDAA but only using the CCC

SETDASA.

T J
Lead

I just used a 74LS138 (LVC these days) to share 8 IIC devices with the exact same address.

I routed the SClk to the +ve enable pin, satisfied the other enables (tie hi/lo)

then the 3 address pins to the processor to select which device you want.

then the Sclk0 from the LS138 Output0, Sclk1 from Output1

I pulled up the Sclk /Sda on the processor with 10ks

All the Sda's are joined, so there is a bit of load on that line... so 400KHz may not work...

I pulled the Sda lines on those 8 chips with 100k, just to be nice...

Miroslav BATEK
ST Employee

You could take into consideration the possibility of disabling (power off) a pair of devices during the configuration phase of the first pair, then enabling power to the second pair and proceeding to the dynamic assignment of the address of last couple of devices. In this case, the devices already configured will not responds to the I3C master configuration commands.