Skip to main content
MBaum.7
Associate III
November 23, 2023
Solved

VL53L1X return 0 on every register rerad

  • November 23, 2023
  • 4 replies
  • 2482 views

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.

MBaum7_1-1700746673324.png

 

 

 

This topic has been closed for replies.
Best answer by Zhiyuan.Han

The register should be 16 bits long, from your capture seems you are using 8-bits long setting. 

ZhiyuanHan_1-1700793812706.png

 

 

4 replies

TDK
Super User
November 23, 2023

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?

"If you feel a post has answered your question, please click ""Accept as Solution""."
MBaum.7
MBaum.7Author
Associate III
November 23, 2023

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. 

MBaum7_0-1700753600400.png

 

TDK
Super User
November 23, 2023

> 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.

"If you feel a post has answered your question, please click ""Accept as Solution""."
TDK
Super User
November 23, 2023

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.

TDK_0-1700754717776.png

 

"If you feel a post has answered your question, please click ""Accept as Solution""."
Zhiyuan.Han
Zhiyuan.HanBest answer
Technical Moderator
November 24, 2023

The register should be 16 bits long, from your capture seems you are using 8-bits long setting. 

ZhiyuanHan_1-1700793812706.png

 

 

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
MBaum.7
MBaum.7Author
Associate III
November 24, 2023

Thats really a good point... I will try to extend the register address to 16 bits. Thanks!