Hi Philister
About your issue, I suggest checking the I2C link instead of the 4 registers meaning.
can you share you schematic, and platform file which realize the I2C read/write function,
- Has the status = vl53l5cx_is_alive(&Dev, &isAlive); check passed or not.
- The otherthing is the multi read and write function. can you try below code and share the log, we can check if the multi read/write function is correct or not.
Below is example codes which can help you vefify the I2C RdMulti/WrMulti function:
uint8_t Data_write[4]={0x5A,0xA5,0xAA,0x55};
uint8_t Data_read[4]={0,0,0,0};
uint8_t Data_default[4]={0,0,0,0};
status = RdMulti(&(Dev.platform), 0x100, Data_default ,4);
printf("\n\n\nRead default value and save it at begging\n");
printf("Data_default (0x%x)\n", Data_default[0]);
printf("Data_default (0x%x)\n", Data_default[1]);
printf("Data_default (0x%x)\n", Data_default[2]);
printf("Data_default (0x%x)\n\n\n", Data_default[3]);
status = WrMulti(&(Dev.platform), 0x100, Data_write,4);
printf("Write value 0x5A A5 AA 55 \n\n\n");
status = RdMulti(&(Dev.platform), 0x100,Data_read ,4);
printf("Reading:\n");
printf("Data_read (0x%x)\n", Data_read[0]);
printf("Data_read (0x%x)\n", Data_read[1]);
printf("Data_read (0x%x)\n", Data_read[2]);
printf("Data_read (0x%x)\n\n\n", Data_read[3]);
status = WrMulti(&(Dev.platform), 0x100, Data_default,4);
printf("Write back default value! \n\n\n");
status = RdMulti(&(Dev.platform), 0x100,Data_default ,4);
printf("Read value again to make sure default value was correct loaded \n");
printf("Data_default (0x%x)\n", Data_default[0]);
printf("Data_default (0x%x)\n", Data_default[1]);
printf("Data_default (0x%x)\n", Data_default[2]);
printf("Data_default (0x%x)\n\n\n", Data_default[3]);
Br
Zhiyuan.Han