2025-07-29 12:15 AM
Hello,
We have an issue with the VL53L7CX. We are using 2.8V for both IOVDD and AVDD. We have 4x TOF sensor on the same I2C line. We set the LPn for 3x of them to low to disable the i2c comm. We are only using 1x TOF for now with it's LPn set to High for testing purpose.
We are able to finish the initialization OK using the ULD API https://www.st.com/en/embedded-software/stsw-img036.html. However, when we reach the while loop (using the polling mode) to check for the :
uint8_t vl53l7cx_check_data_ready(
VL53L7CX_Configuration *p_dev,
uint8_t *p_isReady)
p_isReady is always false and We hit this particular return line:
status |= p_dev->temp_buffer[2]; /* Return GO2 error status */
What is the G02 error values ? i cannot find any definition for it.
Any help is welcome to investigate this issue.
--
From file VL53L7CX_api.c:
uint8_t vl53l7cx_check_data_ready(
VL53L7CX_Configuration *p_dev,
uint8_t *p_isReady)
{
uint8_t status = VL53L7CX_STATUS_OK;
status |= VL53L7CX_RdMulti(&(p_dev->platform), 0x0, p_dev->temp_buffer, 4);
if((p_dev->temp_buffer[0] != p_dev->streamcount)
&& (p_dev->temp_buffer[0] != (uint8_t)255)
&& (p_dev->temp_buffer[1] == (uint8_t)0x5)
&& ((p_dev->temp_buffer[2] & (uint8_t)0x5) == (uint8_t)0x5)
&& ((p_dev->temp_buffer[3] & (uint8_t)0x10) ==(uint8_t)0x10)
)
{
*p_isReady = (uint8_t)1;
p_dev->streamcount = p_dev->temp_buffer[0];
}
else
{
if ((p_dev->temp_buffer[3] & (uint8_t)0x80) != (uint8_t)0)
{
status |= p_dev->temp_buffer[2]; /* Return GO2 error status */
}
*p_isReady = 0;
}
return status;
}
Solved! Go to Solution.
2025-07-29 11:20 PM
Hello,
Unfortunately values inside temp_buffer can not be used to identify potential issues and G02 errors are coming from the low level firmware and are not accessible.
If you keep having isReady to false, it probably means that the initialization have gone wrong.
I recommend using the status of each functions called during initialization to find out where the issue is.
If you use the function vl53l7cx_is_alive() you should already be able to check that the L7 sensor is detected on the i2c bus at the expected address.
Other functions that you used, including settings parameters like framerate, resolution, sharpener and so on, should all return ok before you reach the check_data_ready loop.
Let me know if any of the initialization functions have a status different from OK and we should be able to solve the issue. Depending on your setup, hardware could also have it's impact. Make sure you follow the recommended setup, with pull up on i2c bus and correct power supply.
2025-07-29 8:58 AM
We have
p_dev->temp_buffer[0] streamcount is also 255
2025-07-29 11:20 PM
Hello,
Unfortunately values inside temp_buffer can not be used to identify potential issues and G02 errors are coming from the low level firmware and are not accessible.
If you keep having isReady to false, it probably means that the initialization have gone wrong.
I recommend using the status of each functions called during initialization to find out where the issue is.
If you use the function vl53l7cx_is_alive() you should already be able to check that the L7 sensor is detected on the i2c bus at the expected address.
Other functions that you used, including settings parameters like framerate, resolution, sharpener and so on, should all return ok before you reach the check_data_ready loop.
Let me know if any of the initialization functions have a status different from OK and we should be able to solve the issue. Depending on your setup, hardware could also have it's impact. Make sure you follow the recommended setup, with pull up on i2c bus and correct power supply.
2025-07-30 2:29 AM
Thank you.
The Issue was with the 2.8V pwr rail, DC/DC converter not properly soldered...