cancel
Showing results for 
Search instead for 
Did you mean: 

Looking for VL53L4ED documentation

Brazdil
Associate

Hi everybody.

Please help me. 

I bought a VL53L4ED sensor and would like to learn how to use it.
I have found a number of documents and driver examples, but have been unable to find a document describing the internal registers and their function. (programming manual) .

I must be looking for it wrong. Can you please direct me to the proper document?
Thank you very much.

 Jaroslav

11 REPLIES 11
John E KVAM
ST Employee

The VL53L4ED is an extended temperature version of the VL53L4CD. The CD is a bit cheaper, so I'd go with that one. 

If you have power and ground, and the I2C lines are hooked up correctly, and the XShut line is lifted high there is nothing that can prevent the chip from responding.

But try this...

Search GitHub for the VL53L1, or L4 and your MCU. With a little luck someone has done the work for you.

Try this snippet of code. change the the L1 to L4X and your model ID will be different. But you should get a response.

(The L1X and the L4CD are the same silicon but with different optics. 

  VL53L1_RdByte(Dev, 0x010F, &byteData);
  printf("VL53L1X Model_ID: %02X\n\r", byteData);
  VL53L1_RdByte(Dev, 0x0110, &byteData);
  printf("VL53L1X Module_Type: %02X\n\r", byteData);
  VL53L1_RdWord(Dev, 0x010F, &wordData);
  printf("VL53L1X: %02X\n\r", wordData);
I got:

VL53L1X Model_ID: EA
VL53L1X Module_Type: CC
VL53L1X: EACC

There is also an 'is_booted' function that should return a 1. Can't get much simpler than that.

I didn't know I2C can go down to 20KHz. Might want to crank that up to 100KHz.

- 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 John,

I guess we don't quite understand each other,
I've been reading the I2C from the beginning, and I can read the ID code reliably.

The sequence of writes to register 0x003A appears to be fine according to the oscilloscope,
the I2C cycle ends with ACK, but subsequent reads from 0x003A 0x00 (I2C waveform also OK but with 0 in the data).

According to the datasheet the minimum I2C frequency is not limited,
but I've tried slowing down and speeding up I2C. I also inserted a delay between writing and reading a byte. All without success.

 

Where can I please find the 'is_booted' function you mention?
I can't seem to find it.


I found a VL53L0X board on the web. The programming is probably much different, but I want to verify the I2C communication.
Does the VL53L0X also have a register (like 0x3A) to test writing and reading on?

Thank you,

best regards

   Jaroslav Brazdil