cancel
Showing results for 
Search instead for 
Did you mean: 

VL53L4CX IO

Manikandan
Associate II

 

Hi Team,

 

We are using the VL53L4CX in QCS8550 platform.

Below are queries listed below for clarification.

 

Query 1:Load Capacitance

 

I'm using a same I2C for 5 sensors of VL53L4CX.

 

Is that good to connect or any load capacitance issues will occur

 

Need to understand the max load capacitance of the sensor

 

Query 2: Slave Address configuration

 

As per the User manual, we can able to modify the slave address by controlling the XSHUT pin low

 

The slave address configuration is one time process or every power cycle i need to do address configuration?

 

Query 3 : IO Voltage level

 

From the datasheet, IO level is mentioned either 1V8 or 2V8

 

I'm using the VCC of the sensor is 2V8 and rest all IOs (SCL,SDA,XSHUT,GPIO) in 1V8 level

 

Is there any issue in this.

 

Kindly provide the insights at the earliest.

Thanks

Manikandan R

1 ACCEPTED SOLUTION

Accepted Solutions
John E KVAM
ST Employee

Query 1:Load Capacitance

More devices on an I2C means more capacitance, and so you need stronger pull-ups. The trouble is line-length enters into it as well. Wire-gauge and trace width also affect it. Lots of people have written zillions of articles. It's easy to Google them and you will get a better answer than I can give you. There is nothing special about this sensor. All the articles you find will apply to this as well.

Query 2: Slave Address configuration

There is no persistent memory on the sensor. You need to reconfigure the address at every boot. 

Query 3 : IO Voltage level

No issue - just run the code. 

There is a:

#ifdef USE_I2C_2V8
define in the code you should set if you are going to use 2v8. Oddly it does an I2C write. So clearly the I2C works either way, but this changes the mid-point when using the higher voltage making it slightly more robust. 
But for you just leave it commented out. 
 

If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.

View solution in original post

5 REPLIES 5
John E KVAM
ST Employee

Query 1:Load Capacitance

More devices on an I2C means more capacitance, and so you need stronger pull-ups. The trouble is line-length enters into it as well. Wire-gauge and trace width also affect it. Lots of people have written zillions of articles. It's easy to Google them and you will get a better answer than I can give you. There is nothing special about this sensor. All the articles you find will apply to this as well.

Query 2: Slave Address configuration

There is no persistent memory on the sensor. You need to reconfigure the address at every boot. 

Query 3 : IO Voltage level

No issue - just run the code. 

There is a:

#ifdef USE_I2C_2V8
define in the code you should set if you are going to use 2v8. Oddly it does an I2C write. So clearly the I2C works either way, but this changes the mid-point when using the higher voltage making it slightly more robust. 
But for you just leave it commented out. 
 

If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.

Query 1:Load Capacitance

Thanks for the response, but it doesn't address the query I raised. The information about I2C capacitance, pull-up resistors, and line length is general advice, but it’s not relevant to my specific question.

The actual query is to confirm max bus capacitance of the device is 10pF only.

 

Query 2: Slave Address configuration

 

As per datasheet, I had found an NVM in the architecture(as per attachment), Could you confirm is it used for different purposes?

 

Query 3 : IO Voltage level

For our design, we need to operate the SCL,SDA,XSHUT,GPIO1 at 1V8 level 

As per your inputs, we can ignore the #ifdef USE_I2C_2V8.

I would request you to confirm that 1V8 will be applicable for all pins(SCL,SDA,GPIO1,XSHUT)

 

JohnEKVAM_1-1727276838008.png

There are two power levels. AVDD (3v3) and IOVDD (typically 1V8) 

XShut is tied to AVDD - so it needs to be 3v3 and it's a bit subject to noise. Should be clean. 

GPIO is 70% of IOVDD when high.

Philips created the I2C bus and NXP bought Philips, so they have some intense information about the bus. 

From my experience, tuning an I2C bus to be reliable is an art in itself. There is a chart in the datasheet showing what size pull-up you need, but you need to figure out the load capacitance of your bus for it to be of any use.

In Section 3.1 of the datasheet, it states:

JohnEKVAM_2-1727277419117.png

So the load capacitance is indeed less than 10pF. 

 


If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.

Hi John,

Thanks for the inputs.

Could you address the query 2 raised earlier 

Query 2: Slave Address configuration

 

As per the User manual, we can able to modify the slave address by controlling the XSHUT pin low

 

The slave address configuration is one time process or every power cycle i need to do address configuration?

 

we are seeing an NVM in the device architecture in the datasheet.

 

 

John E KVAM
ST Employee

There is no user accessible NVM. There was some NVM but after calibrating and trimming the part we locked it down. 

The procedure for changing the address is to drop XSHUT on all the sensors, then bring one up, and issue the address change command. Then bring the next one out of reset and change it's address. Repeat until all the addresses have been changed. 

Do not use consecutive addresses. The I2C uses a write address (that should be even) and a read address that is +1. 

And you need to do this at every boot. 

Technically you do not need to re-address the last one. But if you change them all, you can detect if a sensor ever reboots due to a power drop. It will revert to address 0x29 (Write address 0x52, Read address 0x53)


If this or any post solves your issue, please mark them as 'Accept as Solution' It really helps. And if you notice anything wrong do not hesitate to 'Report Inappropriate Content'. Someone will review it.