2023-11-23 05:38 AM - last edited on 2023-11-23 05:51 AM by Federica Bossi
I communicate with a VL53L1X-SATEL over I2C from a PSoC 5LP as I2C-master. The sensor as I2C-slave acknowledes commands as expected, but each register I try to read returns 0x00. I tried a for loop to read every register from 0 counting up, but the sensor always return 0x00.
What could be a reason for such a behaviour?
Please see the scope view of a read sequence to register 0x83.
Solved! Go to Solution.
2023-11-23 06:45 PM
The register should be 16 bits long, from your capture seems you are using 8-bits long setting.
2023-11-23 07:24 AM
The green trace (SDA) should not be tristated. Something is preventing those signals from reaching GND/VDD. Probably multiple things are trying to drive the pins.
Are pins in OD mode?
2023-11-23 07:35 AM
The SDA outputs driver of the VL53L1X-SATEL is not very strong...
But this was a try if stronger pullups. Below is the same sequence with 3.15 kOhm pullups (and open-drain outputs on SDA and SCL).The problem is still the same, also with 10 kOhm pullups.
2023-11-23 07:52 AM
Still doesn't look right. There are slow rising edges on those signals either. The falling edge and rising edges look identical. Shouldn't be seeing overshoot on the rising edge. Something is misconfigured, likely the pins are not in OD mode.
Could prove it by putting an inline resistor on SDA on the sensor-side of the pullup and measuring both sides of it during the exchange.
Should look more like this. Not necessarily exactly, but you can see the asymmetry between rising and falling edges which is present in signals driven with OD pins and a pullup.
2023-11-23 07:54 AM
> The SDA outputs driver of the VL53L1X-SATEL is not very strong...
Datasheet of the VL53L1X suggests an 800 Ohm pullup in one example. Driver strength shouldn't be the issue.
2023-11-23 06:45 PM
The register should be 16 bits long, from your capture seems you are using 8-bits long setting.
2023-11-24 01:24 AM
Thats really a good point... I will try to extend the register address to 16 bits. Thanks!