cancel
Showing results for 
Search instead for 
Did you mean: 

Xtalk calibration buffer

VToma.11
Associate II

I need to find out what data does xtalk buffer provide to sensor. I know what some parts of it mean, but I need to know what is the meaning of all parts. Is there any documentation about it?

1 ACCEPTED SOLUTION

Accepted Solutions

Hi WJLO

For multiple object detection, normally we have two cases, one is multiple target inside FOV, this is detected with multizone feature, and the 2nd one is multi target per zone, as our TOF sensor support maximum 4 targets per zone, I think you are talking the 1st case. 

For each zone ranging, it will use separate zone grid value plus the generic shape value for xtalk correction. so there will be 64 combinations for 64 zones. 

 

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.

View solution in original post

15 REPLIES 15
Eleon BORLINI
ST Employee

Hi @VToma.1​ ,

Are you referring to this application guide (UM2923)?

If so, please have a look to it from page 15.

-Eleon

VToma.11
Associate II

Hi, @Eleon BORLINI​ ,

No, I'm asking for information that is carried by buffer itself. We found out some stuff from firmware, but it's still a pickle to find out how to work with it in our application.

Thank you for answering.

-Vitalii

Hi @VToma.1​ ,

better to let @John E KVAM​ answer, he is an expert in the ToF field.

-Eleon

John E KVAM
ST Employee

Well it depends on which sensor you are using. But basically the job of the Xtalk is to record how many photons hit the coverglass and bounce back. By knowing that, we can work out the math. The trick is the reflected light is not uniform. The geometry is such that there is an inner and an outer 'tilt' to the coverage.

So if you were using one of the VL53L1s (with the lens and Region of interest) that tilt is more important than on the L0, L3 or L4s.

If you calibrate the VL53L1X for instance using the Evaluation kit GUI you get:

[GENERAL_INFO]
RANGING_MODE=LowPowerAutonomous
VL53L1_DEVICE=Center
DEVICE_ID=01:03:CA
ROI=0 15 15 0
REF_SPADS_CALIBRATED=True
XTALK_CALIBRATED=True
OFFSET_CALIBRATED=True
[REF_SPADS]
REF_SPADS_CAL_STATUS=0
REF_SPAD_ENABLES=FF FD FF 6B CF 07
REF_SPAD_ENABLE_COUNT=13
REF_SPAD_LOCATION=1
[OFFSET]
OFFSET_CAL_STATUS=0
INNER_OFFSET=43
OUTER_OFFSET=43
REF_PEAK_SIGNAL_RATE=0
REF_ACTUAL_EFF_SPADS=0
REF_DISTANCE=0
REF_REFLECTANCE=0
COVERGLASS_TRANSMISSION=0
HISTO_GAIN_FACTOR=0
STD_RANGING_GAIN_FACTOR=0.981934
[XTALK]
XTALK_CAL_STATUS=0
XTALK_PLANEOFFSET_KCPS=54.6875
XTALK_XPLANE_GRADIENT_KCPS=0
XTALK_YPLANE_GRADIENT_KCPS=0
XTALK_SHAPE_ZONE_ID=0
XTALK_SHAPE_TIMESTAMP=0
XTALK_SHAPE_FIRST_BIN=0
XTALK_SHAPE_BUFFER_SIZE=0
XTALK_SHAPE_NUMBER_OF_BINS=0
XTALK_SHAPE_PHASE_CAL_RESULT_REF_PHASE=0
XTALK_SHAPE_PHASE_CAL_RESULT_VCSEL_START=0
XTALK_SHAPE_CAL_CONFIG_VCSEL_START=0
XTALK_SHAPE_VCSEL_WIDTH=0
XTALK_SHAPE_FASTOSC_FREQUENCY=0
XTALK_SHAPE_ZERO_DISTANCE_PHASE=0
XTALK_SHAPE_BIN_DATA=0 0 0 0 0 0 0 0 0 0 0 0

Notice that most of the XTALK shape data is blank. We simplified the data for the X version, only really needing the overall Xtalk.

If you look at the VL53L1CB on the other hand, more of the data was 'filled out' as in:

XTALK_CAL_STATUS=0

XTALK_PLANEOFFSET_KCPS=40.41797

XTALK_XPLANE_GRADIENT_KCPS=0

XTALK_YPLANE_GRADIENT_KCPS=0

XTALK_SHAPE_ZONE_ID=0

XTALK_SHAPE_TIMESTAMP=0

XTALK_SHAPE_FIRST_BIN=0

XTALK_SHAPE_BUFFER_SIZE=12

XTALK_SHAPE_NUMBER_OF_BINS=12

XTALK_SHAPE_PHASE_CAL_RESULT_REF_PHASE=5.39209

XTALK_SHAPE_PHASE_CAL_RESULT_VCSEL_START=6

XTALK_SHAPE_CAL_CONFIG_VCSEL_START=9

XTALK_SHAPE_VCSEL_WIDTH=2.5

XTALK_SHAPE_FASTOSC_FREQUENCY=11.81982

XTALK_SHAPE_ZERO_DISTANCE_PHASE=2.39209

XTALK_SHAPE_BIN_DATA=0 0.349609 0.444336 0.206055 0 0 0 0 0 0 0 0

And that has to do with the 'histograms', this gives the xtalk signal rate for each bin in the histogram.

By using this calibration file, you give names to the data.

And by using the GUI, you can edit the file and load it into the chip and see what your change does.

the most important value is the XTALK_PLANEOFFSET_KCPS. Try screwing around with that and see what you get.

But careful, this is a really deep hole, and you can spend a lot of time messing with it.

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

Hi,

thank you for your reply and examples. I used L5 with Evaluation kit and got something like this:

[Xtalk]
Buffer=9fd800c0,04e00b54,0b08082c,08080803,9fe40140,00006798,00007013,0000783a,01e00001,00000020,9ff80040,2c2c2524,9ffc0404,0031fe6c,002fbe70,002d4b4a,0022495f,001649a9,00102c1d,000c2caa,0008e236,0033ee3b,002f7431,002924e8,001f9ba1,00179247,0010e6ac,000cabac,000a3338,0047986d,003cbe01,0032e2bb,0021ee58,001aef4b,00121a8b,000d9769,000b24e4,00668557,005aac3c,00367300,0027d7c4,001f0114,0013cc98,000fd41e,000d2c05,00684936,0063700f,003812c2,0027aacd,001fce2d,0014c567,00107088,000cb4d2,00503174,0038677a,002e324a,0020b3f2,001abb51,00123cb3,000e09fe,000b568e,0044c2eb,0035871b,002637e4,001d4bb9,0015a551,000ff345,000c6ffd,000a0eb7,0040b699,002c89b6,00286576,001f32ee,0013f93a,000dbd1d,000b0b4a,00087fe2,a0fc0100,00000000,00000003,00000000,00000000,a10c0100,00000080,00000003,00000000,00000000,a11c00c0,00007013,0c9001e0,0000002c,a1280902,00000000,00000000,00000000,00000000,00230000,01f60169,02360222,02460241,00f10228,001f004d,0006000e,00020003,00000001,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,a2480040,00000508,a24c0081,030c0103,00000003,a2540081,09010101,00000000,a25c0081,08010108,00000008,a2640081,01080808,00000001,a26c0084,0028a633,016afb0e,000bb003,001bb4ba,001dcecb,00000000,00000000,00000000,a28c0082,01000800,01000100,00000100,00000000,0000000f,00010304
Shape=00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000023,00000169,000001f6,00000222,00000236,00000241,00000246,00000228,000000f1,0000004d,0000001f,0000000e,00000006,00000003,00000002,00000001,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
Grid=0031fe6c,002fbe70,002d4b4a,0022495f,001649a9,00102c1d,000c2caa,0008e236,0033ee3b,002f7431,002924e8,001f9ba1,00179247,0010e6ac,000cabac,000a3338,0047986d,003cbe01,0032e2bb,0021ee58,001aef4b,00121a8b,000d9769,000b24e4,00668557,005aac3c,00367300,0027d7c4,001f0114,0013cc98,000fd41e,000d2c05,00684936,0063700f,003812c2,0027aacd,001fce2d,0014c567,00107088,000cb4d2,00503174,0038677a,002e324a,0020b3f2,001abb51,00123cb3,000e09fe,000b568e,0044c2eb,0035871b,002637e4,001d4bb9,0015a551,000ff345,000c6ffd,000a0eb7,0040b699,002c89b6,00286576,001f32ee,0013f93a,000dbd1d,000b0b4a,00087fe2
Value=3337
[Device Identification]
Version=4536184D0C51FFDF
[Device Part]
Version=VL53L5CXV0GC/1$1
[Firmware]
Version=4.3.27156

We found that (using from 0 indexation) Grid part, that is Kcps/SPAD, is located in parts 13-76 of Buffer. But to get numbers right, you have to divide them by 2048. Value is maximum value in Grid. We also found some adresses/commands in it. But we have no idea what rest is supposed to represent.

Thank you for your time.

  • Vitalii
John E KVAM
ST Employee

It is very typical of our part to represent numbers in whatever units are handy and leave the PC to interpret the result. So your divide by 2048 just means that we stored the number in a 21.11 format.

(Where the 21 is the integer part and the 11 is the fractional part.)

Because we don't know how your MCU stores floating point numbers, this is the easist way.

Each zone gets a number of photons. And that's the 'grid' as some zones get more than others.

But we gather photons into bins. Each bin being the number of photons detected during a clock cycle.

And the 'shape' is how many photons can be expected during each clock cycle. (normalized)

So when we take a range, one multiplies the Grid value times the bin shape value for that bin to get the number of photons that have to be subtracted from the range data.

And that's now one removes the crosstalk.

0693W00000QMUBRQA5.pngSo for zone (0,0) one would multiply the 285 grid value times the 500 (in bin 10) and subract the result from the received data in bin 10 to get the target signal level. (Photon counts are ideally in the 20Million range, so the numbers are large.)

I hope that explains it.


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.

Hello,

Thank you for your time and effort. Is it right to assume that Xtalk value is the same as Xtalk margine? Or margine is different for every zone and should be calculated by the example you've provided?

WJLO
Associate II

Hi,

285kcps & photon number range of about 20 million => integration time is about 4s?
Is this calculation correct?
Your kcps formula is (Signal photon count/(1/integration time))/ 16 SPAD/ 1000 = kcps ???

The calibration histogram separates the one shape & 64 Grids. Will the shape be divided into 64(zones) during measuring the distance? Or is there only one shape?