我们似乎无法通过 vl53l5cx_init(&Dev); 功能为VL53L5CX 。我们可以读取单个字节,但多字节 (4) 读取会触发超时,并且 ULD 无法成功加载。这是我们的 RdMul
ti 函数:
- uint8_t RdMulti(
- VL53L5CX_Platform *p_platform,
- uint16_t RegisterAddress,
- uint8_t *p_values,
- uint32_t size)
- {
- uint8_t DeviceAddress = p_platform->address;
- Wire.beginTransmission(DeviceAddress);
- Wire.write((RegisterAddress & 0xFF00) >> 8); //MSB
- Wire.write(RegisterAddress & 0x00FF); //LSB
- uint8_t status = Wire.endTransmission(false);
- if (status) { // failed
- return status;
- }
- uint32_t i = 0;
- status = Wire.requestFrom(DeviceAddress, size);
- if(status != size){
- return 1; // failed
- }
- while (Wire.available()) {
- p_values[i++] = Wire.read();
- }
- return 0;
- }
这是 Arduino 的一个非常标准的多字节读取函数,所以我们有点惊讶它不起作用。似乎没有足够的诊断来确定为什么不。关于我们可能遗漏的任何想法?有什么办法可以改变超时?
除了 uint8_t error = vl53l5cx_is_alive(&Dev, &isAlive); 之外,您能否建议我们验证 I2C
通信的方法?我们谈判成功了吗?
我们在多个平台上以 100kHz 和 400kHz I2C 总线速度进行了尝试,结果相同。我们已经使用类似的多字节读取功能成功地与数十个 I2C 传感器通信,包括 VL6180X、VL53L0 和 VL53L1。不确定我们可能会遗漏什么...感谢您提供的任何建议。