要哭了~~求助~~VL53L0X测距模块~~

2019-07-21 01:39发布

我遇到以下问题 百思不得其解~~在这求助大家~~
VL53L0X初始化成功,能读取到设备号。修改IIC的设备地址为0x54成功读出设备号。


第一:VL53L0X_StaticInit(dev);函数中的
     /* After static init, some device parameters may be changed, so update them */
        VL53L0X_GetDeviceParameters(Dev, &CurrentParameters);//得到设备参数~
       上个函数中的
      /* Need to be done at the end as it uses VCSELPulsePeriod */
        if (Status == VL53L0X_ERROR_NONE)
      {
        Status = VL53L0X_GetMeasurementTimingBudgetMicroSeconds(Dev,
        &(pDeviceParameters->MeasurementTimingBudgetMicroSeconds));
        }
执行完这条状态Status就为0xEC了,奇怪的是,我初始化VL53L0X_DataInit的时候也用到了这个函数VL53L0X_GetDeviceParameters();却没有报错这是为什么呢?
在这里我先把这条语句注释了。继续走到下面的问题二。
第二:VL53L0X_PerformRefSpadManagement(dev,&refSpadCount,&isApertureSpads);//执行参考Spad管理
VL53L0X_perform_ref_calibration(Dev, &VhvSettings,&PhaseCal, 0)//下面是伪代码 示意包含的关系
{//...
   VL53L0X_perform_vhv_calibration(Dev, pVhvSettings, get_data_enable, 0)
  {//...
    VL53L0X_perform_single_ref_calibration(Dev, 0x40);
     {//...
         if (Status == VL53L0X_ERROR_NONE)
                Status = VL53L0X_WrByte(Dev, VL53L0X_REG_SYSRANGE_START, //这里不明白或上0x40的具体含义 感觉是这里影响了下面的操作 但不知道什么原因
                                VL53L0X_REG_SYSRANGE_MODE_START_STOP |
                                vhv_init_byte);

                       //        delay_1ms(1000);//这里自己加了一个延时 是因为调试时不加延时 到下一个语句执行完Status = 0xEC。
        if (Status == VL53L0X_ERROR_NONE)
                Status = VL53L0X_measurement_poll_for_completion(Dev)//最不理解的地方是这里
                {
                      Status = VL53L0X_RdByte(Dev, VL53L0X_REG_RESULT_INTERRUPT_STATUS, &Byte);//到这里Dev->addr = 0x54,执行结束之后就Dev->addr = 0x03了。很奇怪 只是读取一个值 IIC地址怎么变了
                     //这里 #define VL53L0X_REG_RESULT_INTERRUPT_STATUS          0x0013       读出 Byte = 0x44
               }
     }
  }

}
感激不尽 ~~~~有好多问题~~希望能解决一个是一个~~谢谢大家





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
Psheng
1楼-- · 2019-07-21 01:47
帮顶~~~~
TiramisuL
2楼-- · 2019-07-21 04:55
楼主问题解决了吗?我是在校准的时候出现错误了!可以讨论一下吗
猎人123
3楼-- · 2019-07-21 05:06
 精彩回答 2  元偷偷看……
TiramisuL
4楼-- · 2019-07-21 09:16
猎人123 发表于 2019-4-3 13:45
有定位在哪里出现错误吗?

Status = VL53L0X_PerformRefCalibration(dev, &VhvSettings, &PhaseCal);
在这个函数出错,返回的值是-6,正常的话应该是0才对的。如果把这个注释掉
status = VL53L0X_PerformRefSpadManagement(dev, &refSpadCount, &isApertureSpads);这个又会出错。我是串口烧写的,具体定位没法Debug。但是我觉得这两个函数都是API,应该是传参或者是环境的问题?楼主给点意见?
charlottefei
5楼-- · 2019-07-21 11:35
 精彩回答 2  元偷偷看……

一周热门 更多>