2021-10-21 02:47 PM
Hello,
I am integrating multiple sensors from ST, all of which are connected to a central processor via I2C. Occasionally, I find that the LPS22HB is unresponsive at boot up. When the central processor attempts to read the WHO_AM_I register, there is no response. The other sensors work fine.
I can reproduce this behavior somewhat reliably by configuring the main processor to read from the LPS22HB in rapid succession and then power cycling the entire device at random intervals. On some power cycles, everything works fine. On others, the LPS22HB appears unresponsive.
What could prevent the LPS22HB from communicating via I2C?
The following screenshot shows a logic capture (both digital and analog) of the problematic behavior:
This next screenshot shows an example of the expected behavior, which I observe a majority of the time:
Thank you in advance for your help!
Peter
2021-10-21 09:12 PM
When unresponsive, try to force 9 stop bits on the bus using sw gpio manual toggling. If there is a disruption while reading any device, that device will keep stuck or worse. Bus error recovery is one thing to check. Otherwise, make sure the device didn t switch to spi mode....
2021-10-26 06:10 AM
Further investigation has revealed strange behavior at power-on with JTAG connected. It appears that some current is leaking through the main processor via JTAG and putting the I2C pins in an indeterminate state:
When this occurs, the LPS22HB becomes unresponsive until the next power cycle, while the rest of our I2C peripherals continue operating with no issues.
2021-11-13 10:04 PM
Hello,
I don't know if you solve this problem. I have same problem as you. After power cycling the I2C of LPS22HB is unresponsive via I2C occasionally . I have two sensors on the same bus. The other one is a temperature sensor which I2C works no matter how many power cycles. For my PCB board I found the I2C not response after power off for around 6 seconds and power on again. And then LPS22HB works strange. Sometimes its I2C not responsive even after the I2c recovery 9 clocks is issued. Sometimes the reading pressure and temperature is totally wrong even after software reset or BOOT command is issued to the device.
LPS22HB I2C works If the power off period longer than 6 seconds. And I have a capacitor of 22uF for the power supply to LPS22HB. I think when power off this capacitor is not able to discharge fast enough for LPS22HB to do a POR(power on reset). These two I2C sensors power consumptions are very low. It takes times to discharge power in the capacitor. There would be something change in memory or registers in LPS22HB when the voltage drop to between Vpor and Vmin. If power again in this period LPS22HB works in a wrong state which can cause I2C unresponsive (maybe the I2C_DIS bit is changed) or wrong readings. So I thank LPS22HB is not reliable for power cycling. My current workaround is connecting an analog switch to control the power of LPS22HB to do an hardware reset.
Do you have any new founding? I worry about my workaround not consider all situations.
Thanks,
Ricky
2021-11-15 11:34 AM
Hello Ricky,
Unfortunately I haven't learned anything more about this issue.
We are only observing it when JTAG is attached (not in production), so we haven't prioritized any further investigation.
Peter
2023-03-22 12:45 PM
Have you had any more progress with this issue? We're seeing something similar, LPS22 is sometimes unresponsive after a power on. The only way to get it back is to kill the power to it. Would love a more reasonable solution since our micro can't control the power to LPS22.