2018-10-08 10:43 AM
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
2018-10-08 04:57 PM
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.
2018-10-24 05:05 AM
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.
2018-10-24 03:19 PM
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...
2018-10-25 07:07 AM
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.