2023-10-25 02:32 AM
Hi,
I use to 12 ToF(Vl53l1x) sensor on the robot for security range detect. And at the some situations, this sensors stop ranging data. I detect last regular data and then reset sensor. when starting sensor can do bootstate function. But can not do sensor_init func which stuck on the data_ready func. Do you know why did it this situation?
2023-10-25 08:25 AM
Nothing is guarenteed, but I'm going to guess. I I2C is a farly unreliable bus. And if you have 12 devices on it you have a lot of connections and wire. So getting a glitch and hanging the bus is very likely. If you have this issue, you will end up with one of your I2C lines stuck low. Solution is to have your MCU send out a lot of clock pulses and eventally you will clear the bus. (It generally takes one, but up to 8 might be required. No penalty for too many.)
But assuing you can still talk on the bus then it's possibly noise on your reset pin rebooted the chip.
If this happens it's I2C address goes back to 0x52 and you cannot talk to it.
(I move all my addresses off 0x52, and then do an occational read from 0x52. If I ever get a response, then I know I have a rebooted sensor.
- john