大家好,
我用我的微控制器和一个 VL53L1X-SATEL 开发了一块
威廉希尔官方网站
板——我的 X-NUCLEO-53L1A1 套件随附的分线板。我为没有稳压器的威廉希尔官方网站
板使用 3v 电池,为 I2C 线路(100khz)使用 1K 上拉电阻。
我使用 VL53L1X ULD API 文件进行初始化和一次测距测量。在 VL53L1X 初始化(SetDistanceMode=short,Set
timingBudgetInMs = SetInterMeasurementInMs = 20mS)后,我的 CPU 进入睡眠模式,电流消耗为 6uA,每 30 秒我的 CPU 唤醒开始测量(StartRanging,CheckForDataReady,GetDistance,ClearInterrupt,StopRanging)消耗=14mA,Distance 值正常,再次进入 Sleep。
一切如我所料,但每次更换电池或重置 CPU 时,如果 VL53L1X 前面没有目标,在初始化阶段(睡眠模式)后电流消耗为 3mA(预期 6uA)每 30 秒 CPU 唤醒发送一次良好的距离测量并再次以 3mA 进入睡眠状态。如果我在初始化阶段(睡眠模式)将目标放在 0 到 50cm 之间,我得到 6uA。我已经尝试使用短距离和长距离以及 20mS&100mS&500mS 进行初始化问题仍然存在:如果没有目标,则 SW 待机中的消耗为 3mA。如果我用 XSHUT 引脚强制 HW 待机,功耗会恢复到 6uA,但我会丢失我的配置。
请帮我解决这个问题
初始化:
if(!VL53L1X_GetID() && (Event.Log[0]==0xEA)) { // 测试传感器是否存在
同时(传感器状态==0){
status = VL53L1X_BootState(VL53L1X_ADDR_I2C, &sensorState);
事件.timer_1mS = 2; while(Event.timer_1mS);
}
// 必须调用此函数以使用默认设置初始化传感器
status = VL53L1X_SensorInit(VL53L1X_ADDR_I2C);
status = VL53L1X_SetDistanceMode(VL53L1X_ADDR_I2C, 1); // 1=短,2=长
status = VL53L1X_SetTimingBudgetInMs(VL53L1X_ADDR_I2C, 20); // 小姐
status = VL53L1X_SetInterMeasurementInMs(VL53L1X_ADDR_I2C, 20); // 小姐
}
一次射击测距(每 30 秒):
醒来...
status = VL53L1X_StartRanging(VL53L1X_ADDR_I2C);
数据就绪=0;
while (dataReady == 0){
status = VL53L1X_CheckForDataReady(VL53L1X_ADDR_I2C_1, &dataReady);
事件.timer_1mS = 2; while(Event.timer_1mS);
}
status = VL53L1X_GetRangeStatus(VL53L1X_ADDR_I2C_1, &RangeStatus);
status = VL53L1X_GetDistance(VL53L1X_ADDR_I2C_1, &Distance1);
status = VL53L1X_ClearInterrupt(VL53L1X_ADDR_I2C_1);
status = VL53L1X_StopRanging(VL53L1X_ADDR_I2C_1);