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;
}
2025-07-29 8:58 AM
We have
p_dev->temp_buffer[0] streamcount is also 255