cancel
Showing results for 
Search instead for 
Did you mean: 

about VL53L1X crosstalk compensation with VL53L1X ULD driver

DSai.1
Associate III

Dear Sir,

We use VL53L1X for our application. We use a glass cover and found crosstalk problem.

We try to compensate the crosstalk. There are three functions in VL53L1X ULD driver as

1)VL53L1X_ERROR VL53L1X_SetXtalk(uint16_t dev, uint16_t XtalkValue);

2)VL53L1X_ERROR VL53L1X_GetXtalk(uint16_t dev, uint16_t *Xtalk);

3)int8_t VL53L1X_CalibrateXtalk(uint16_t dev, uint16_t TargetDistInMm, uint16_t *xtalk);

Would you like to tell me how to use these functions to realize the crosstalk compensation?

I would like to get information or calibration procedure steps for crosstalk compensation.

Looking forward to hearing from you soon.

best regards

Dai Sai

5 REPLIES 5
John E KVAM
ST Employee

There is a section in the user manual.

UM2356 - User manual

VL53L1X API user manual

The user manual is where you downloaded the API.

But basically you need to do some ranging and find that point where the sensor returns a range that is 10 or 20% less than the actual range. Use a dark gray target and just do a lot of testing.

When you find that point, call the CalibrateXtalk function and pass it that known distance.

The sensor will do a few ranges get the signal strength, and the result. By knowning the correct distance it will work out how many photons were a result of crosstalk. Call the Get function and store those numbers to your memory somewhere. Next time you boot, call the Set function.

  • john

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.
DSai.1
Associate III

Dear John,

thank you very for your reply.

Based on your kind advice, should we do as followings for crosstalk compensation?

  1. find the crosstalk distance by trying many test distance.
  2. calculate xtalk value with this crosstalk distance and VL53L1X_CalibrateXtalk()
  3. use VL53L1X_SetXtalk() with above xtalk value to start crosstalk compensation

Is my understanding correct?

best regards

Dai Sai

John E KVAM
ST Employee

That would work.

But the Get and Set functions are mirrors of each other.

So after doing the calibrate, do a Get, and store the data.

  • john

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.
DSai.1
Associate III

Dear John,

thank you very much for your help.

The Xtalk value obtained from VL53L1X_CalibrateXtalk() is same as Xtalk value from VL53L1X_GetXtalk() or not?

If they are same, I think we do not need to use VL53L1X_GetXtalk. After VL53L1X_CalibrateXtalk(),

we will save the Xtalk returned, and use saved value for every startup. My understanding is OK?

best regards

Dai Sai

Zhiyuan.Han
ST Employee

Hi Dai Sai

After you doing xtalk by VL53L1X_CalibrateXtalk(), if you readout xtalk value by VL53L1X_CalibrateXtalk(), the reading value should be same. 

For the saving xtalk data and load the value for next startup, that's correct. 

 

 

Br

Zhiyuan.Han

 

 

 


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.