OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4044|回复: 6

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

[复制链接]

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
发表于 2019-3-12 17:39:31 | 显示全部楼层 |阅读模式
8金钱
我遇到以下问题 百思不得其解~~在这求助大家~~
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
               }
     }
  }

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





正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

35

主题

560

帖子

2

精华

资深版主

Rank: 8Rank: 8

积分
17769
金钱
17769
注册时间
2018-3-3
在线时间
523 小时
发表于 2019-3-12 18:02:32 | 显示全部楼层
回复

使用道具 举报

3

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-3-31
在线时间
17 小时
发表于 2019-4-3 11:48:18 | 显示全部楼层
楼主问题解决了吗?我是在校准的时候出现错误了!可以讨论一下吗
回复

使用道具 举报

14

主题

56

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
239
金钱
239
注册时间
2018-7-12
在线时间
31 小时
 楼主| 发表于 2019-4-3 13:45:08 | 显示全部楼层
TiramisuL 发表于 2019-4-3 11:48
楼主问题解决了吗?我是在校准的时候出现错误了!可以讨论一下吗

有定位在哪里出现错误吗?
回复

使用道具 举报

3

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2019-3-31
在线时间
17 小时
发表于 2019-4-4 09:02:32 | 显示全部楼层
猎人123 发表于 2019-4-3 13:45
有定位在哪里出现错误吗?

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

使用道具 举报

0

主题

1

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2019-4-8
在线时间
24 小时
发表于 2019-5-11 16:05:13 | 显示全部楼层
我也出现在这里了 和楼主的一模一样 在这个函数里读出来的Byte=0x54  怎么解决的
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2019-1-31
在线时间
5 小时
发表于 2020-8-13 14:15:50 | 显示全部楼层
VL53L0X测距模块地址可以永久更改吗?上电后就直接是更改后的地址
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 21:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表