0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

VL53L4CD小板开发(2)----修改测量频率

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2025-11-05 10:19 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

VL53L4CD是一款高度集成的飞行时间(ToF)传感器,广泛应用于距离测量和接近检测。为了满足不同应用场景的需求,合理调整传感器的测量频率至关重要。本文旨在介绍如何在VL53L4CD传感器上修改测量频率,以优化其性能和功耗。 测量频率指传感器每秒进行测量的次数,通常以赫兹(Hz)为单位。对于VL53L4CD传感器,测量频率的调整能够影响到传感器的响应速度、精度以及功耗表现。 最近在弄ST Demo,需要样片的可以加群申请:615061293 。

视频教学

[https://www.bilibili.com/video/BV1EszVYrEPs/]

样品申请

[https://www.wjx.top/vm/OhcKxJk.aspx#]

完整代码下载

[https://download.csdn.net/download/qq_24312945/90228588]

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。 主控为STM32H503CBT6,TOF为VL53L4CD

技术规格

系统框图

应用示意图

参考程序

[https://github.com/CoreMaker-lab/VL53L4CD]

[https://gitee.com/CoreMaker/VL53L4CD]

生成STM32CUBEMX

用STM32CUBEMX生成例程,这里使用MCU为STM32H503CB。 配置时钟树,配置时钟为250M。

串口配置

查看原理图,PA9和PA10设置为开发板的串口。

配置串口,速率为115200。

IIC配置

在这个应用中,VL53L4CD模块通过I2C(IIC)接口与主控器通信。具体来说,VL53L4CD模块的I2C引脚连接到主控器的PA8和PB5两个IO口。

配置IIC为快速模式,速度为400k。

XSHUT

XSHUT引脚是由主机连接和控制的,这种设计优化了功耗,因为设备在不使用时可以被完全关闭,然后通过主机使用XSHUT引脚来唤醒。当AVDD存在且XSHUT为低电平时,设备处于硬件待机模式(HW Standby mode)。如果XSHUT引脚不由主机控制,而是通过上拉电阻连接到AVDD,那么设备在固件启动(FW BOOT)后会自动进入软件待机(SW STANDBY),而不会进入硬件待机。

GPIO1

当传感器完成一次测距操作时,GPIO1引脚可以被配置为输出中断信号,通知微控制器读取测量结果。 这种方式比持续轮询传感器状态更加高效,尤其在低功耗应用中非常有用。

X-CUBE-TOF1

本节介绍在不需要使用样例应用时如何使用STM32CubeMX将X-CUBE-TOF1软件包添加到项目中。有了这样的设置,就只配置了驱动层。

堆栈设置

若无法正常运行需要修改优化等级。

app_tof.c

app_tof.c定义了一个静态函数 MX_VL53L4CD_SimpleRanging_Process,用于配置和执行VL53L4CX传感器的简单测距操作。

详细解释

  1. CUSTOM_RANGING_SENSOR_ReadID(CUSTOM_VL53L4CD, &Id);: ○ 读取传感器的ID,并将其存储在变量 Id 中。
  2. CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L4CD, &Cap);: ○ 获取传感器的能力,并将其存储在 Cap 结构中。
  3. 配置 Profile 结构的参数: ○ Profile.RangingProfile 设置测距模式。 ○ Profile.TimingBudget 设置测量时间预算。 ○ Profile.Frequency 设置为0,不用于正常测距。 ○ Profile.EnableAmbient 启用环境光测量。 ○ Profile.EnableSignal 启用信号测量。
  4. CUSTOM_RANGING_SENSOR_ConfigProfile(CUSTOM_VL53L4CD, &Profile);: ○ 如果配置文件与默认配置不同,则应用新的配置文件。
  5. CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L4CD, RS_MODE_BLOCKING_CONTINUOUS);: ○ 启动传感器,设置为阻塞连续测量模式。
  6. while (1) 循环: ○ 在无限循环中,定期读取传感器的距离数据。 ○ 如果成功读取距离数据,则调用 print_result(&Result) 打印结果。 ○ 使用 HAL_Delay(POLLING_PERIOD) 延迟一段时间,以控制轮询频率。

main.c种添加头文件。

/* USER CODE BEGIN Includes */
#include "app_tof.h"
#include "custom_ranging_sensor.h"

/* USER CODE END Includes */

添加对应变量。

/* USER CODE BEGIN 0 */
#define TIMING_BUDGET (200U) /* 8 ms < TimingBudget < 200 ms */
#define POLLING_PERIOD (250U) /* refresh rate for polling mode (ms, shall be consistent with TimingBudget value) */


static RANGING_SENSOR_Capabilities_t Cap;
static RANGING_SENSOR_ProfileConfig_t Profile;
static RANGING_SENSOR_Result_t Result;
static int32_t status = 0;

static void print_result(RANGING_SENSOR_Result_t *Result);
static int32_t decimal_part(float_t x);
/* USER CODE END 0 */

测量频率修改

增加计时预算会增加单次测量发射的光子数量。这提高了测量精度和最大测距距离。

Profile.TimingBudget 设置测量时间预算,初始化代码如下所示,TIMING_BUDGET设置为200ms。

/* USER CODE BEGIN 2 */
  uint32_t Id;

  CUSTOM_RANGING_SENSOR_ReadID(CUSTOM_VL53L4CD, &Id);// 读取传感器ID并存储在Id变量中
  CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L4CD, &Cap);// 获取传感器的能力并存储在Cap变量中

  Profile.RangingProfile = VL53L4CD_PROFILE_CONTINUOUS;// 设置测距配置文件为连续测距模式
  Profile.TimingBudget = TIMING_BUDGET;// 设置测距的时间预算(以毫秒为单位)
  Profile.Frequency = 0; // 设置测量频率为0,这意味着使用测量之间的间隔时间,而不是连续测量
  Profile.EnableAmbient = 1; // 启用环境光测量
  Profile.EnableSignal = 1; // 启用信号测量

    // 如果配置文件与默认配置文件不同,则应用新的配置文件
  CUSTOM_RANGING_SENSOR_ConfigProfile(CUSTOM_VL53L4CD, &Profile);
    // 启动传感器进行阻塞连续测距模式测量
  status = CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L4CD, RS_MODE_BLOCKING_CONTINUOUS);
  /* USER CODE END 2 */

主程序如下所示,可以通过判断GPIO1来判定信号是否已经准备好。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    if(HAL_GPIO_ReadPin  ( GPIOB, GPIO_PIN_8) ==0)        
    {        
    /* polling mode */
    status = CUSTOM_RANGING_SENSOR_GetDistance(CUSTOM_VL53L4CD, &Result);

    if (status == BSP_ERROR_NONE)
    {
      print_result(&Result);
    }
    }
    /* USER CODE END WHILE */

//  MX_TOF_Process();
    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */

若无法正常打印,需要修改堆栈。

此时时间为200ms输出一次,频率为5Hz。

修改TIMING_BUDGET为20,此时为20ms刷新一次,频率为50Hz,此时数据抖动较大。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2574

    文章

    54389

    浏览量

    786165
  • 测量
    +关注

    关注

    10

    文章

    5516

    浏览量

    116138
  • TOF
    TOF
    +关注

    关注

    9

    文章

    521

    浏览量

    38154
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于STM32CUBEMX驱动TOF模块VL53l0x(2)----修改设备地址

    本章主要介绍如何修改VL53L0X传感器的I2C地址,并成功驱动设备以使用新的地址。VL53L0X是一种多功能、高性能的接近和环境光传感器,常用于
    的头像 发表于 12-01 15:46 2539次阅读
    基于STM32CUBEMX驱动TOF模块<b class='flag-5'>VL53l</b>0x(<b class='flag-5'>2</b>)----<b class='flag-5'>修改</b>设备地址

    VL53L4CD TOF开发(1)----驱动TOF进行测距

    VL53L4CD适用于接近测量和短距离测量,可实现从仅仅1 mm到1300 mm的超精准距离测量。新一代激光发射器具有18°视场 (FoV),提高了环境光下的性能,其测距速度高达100
    的头像 发表于 05-17 14:54 2024次阅读
    <b class='flag-5'>VL53L4CD</b> TOF<b class='flag-5'>开发</b>(1)----驱动TOF进行测距

    VL53L4CD TOF开发(2)----修改测量频率

    VL53L4CD是一款高度集成的飞行时间(ToF)传感器,广泛应用于距离测量和接近检测。为了满足不同应用场景的需求,合理调整传感器的测量频率至关重要。本文旨在介绍如何在
    的头像 发表于 06-19 14:50 2504次阅读
    <b class='flag-5'>VL53L4CD</b> TOF<b class='flag-5'>开发</b>(<b class='flag-5'>2</b>)----<b class='flag-5'>修改</b><b class='flag-5'>测量</b><b class='flag-5'>频率</b>

    VL53L4CD TOF开发(3)----检测阈值

    在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的距离测量。本文介绍
    的头像 发表于 06-19 10:56 2703次阅读
    <b class='flag-5'>VL53L4CD</b> TOF<b class='flag-5'>开发</b>(3)----检测阈值

    VL53L4CD TOF开发(4)----单次测量(One-Shot)模式

    在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的距离测量。本文介绍
    的头像 发表于 06-19 10:58 2666次阅读
    <b class='flag-5'>VL53L4CD</b> TOF<b class='flag-5'>开发</b>(<b class='flag-5'>4</b>)----单次<b class='flag-5'>测量</b>(One-Shot)模式

    VL53L4CD液位监测(2)----液位检测

    了热门选择。本文将介绍如何使用 STMicroelectronics 的 VL53L4CD ToF 传感器进行高精度液位检测,并重点探讨在不同液体和容器条件下如何通过非线性校正算法提升测量准确性。文中还将分析实验测试结果,并总结液位检测应用中可能面临的挑战及解决方案。
    的头像 发表于 11-25 14:57 2764次阅读
    <b class='flag-5'>VL53L4CD</b>液位监测(<b class='flag-5'>2</b>)----液位检测

    下位机是如何配置VL53L4CD

    有一套P-NUCLEO-53L4A1,连接PC后,可以使用上位机STSW-IMG027来查看TOP数据。 想要查看下位机是如何配置VL53L4CD,在官网中一直找不到对应程序,请求帮忙
    发表于 03-13 07:56

    VL53L4CD能否实现~50uA@1Hz类似的功耗?

    我正在尝试为 1Hz 频率的近距离(低至 1mm)接近检测找到低功耗解决方案。看起来 VL53L4CD 可以很好地完成这项工作,但我没有在数据表中找到低功耗模式的功耗详细信息。我还发现有一个用于
    发表于 12-07 08:39

    微雪电子VL53L1X测距传感器4VL53L1X测距模块简介

    VL53L1X 飞行时间 测距传感器模块 4米 I2C接口 测距频率可达50Hz,低功耗,抗干扰 型号 VL53L1X Distance
    的头像 发表于 01-06 08:48 1.6w次阅读
    微雪电子<b class='flag-5'>VL53L</b>1X测距传感器<b class='flag-5'>4</b>米<b class='flag-5'>VL53L</b>1X测距模块简介

    VL53L4CX TOF开发(2)----修改测距范围及测量频率

    最佳性能。本篇文章将介绍如何通过修改VL53L4CX传感器的测距范围和测量频率来满足不同应用场景的需求。
    的头像 发表于 06-19 10:49 2057次阅读
    <b class='flag-5'>VL53L4</b>CX TOF<b class='flag-5'>开发</b>(<b class='flag-5'>2</b>)----<b class='flag-5'>修改</b>测距范围及<b class='flag-5'>测量</b><b class='flag-5'>频率</b>

    VL53L4CD液位监测(1)----驱动TOF进行测距

    VL53L4CD适用于接近测量和短距离测量,可实现从仅仅1 mm到1300 mm的超精准距离测量。新一代激光发射器具有18°视场 (FoV),提高了环境光下的性能,其测距速度高达100
    的头像 发表于 11-25 14:38 2015次阅读
    <b class='flag-5'>VL53L4CD</b>液位监测(1)----驱动TOF进行测距

    基于VL53L4CD的高精度ToF接近传感器扩展板:X-NUCLEO-53L4A1 技术解析

    、学习和开发应用。VL53L4CD专门设计用于接近和短程测量,提供非常精确的距离测量(1mm至1300mm)。具有18° FoV的新一代激光发射器提高了环境光下的性能,测距速度高达10
    的头像 发表于 10-29 11:36 326次阅读
    基于<b class='flag-5'>VL53L4CD</b>的高精度ToF接近传感器扩展板:X-NUCLEO-<b class='flag-5'>53L4</b>A1 技术解析

    基于VL53L4CX的飞行时间传感器扩展板:X-NUCLEO-53L4A2技术解析

    STMicroelectronics X-NUCLEO-53L4A2扩展板设计用于配备Arduino R3连接器的任何STM32 Nucleo开发板。X-NUCLEO-53L4A2扩展板包括完整的评估套件,可让用户使用具有扩展距
    的头像 发表于 10-30 16:10 328次阅读
    基于<b class='flag-5'>VL53L4</b>CX的飞行时间传感器扩展板:X-NUCLEO-<b class='flag-5'>53L4A2</b>技术解析

    基于STM32的VL53L4CD高精度飞行时间传感器技术解析与应用实践

    STMicroelectronics X-NUCLEO-53L4A1扩展板设计用于配有Arduino R3连接器的任何STM32 Nucleo板。X-NUCLEO-53L4A1扩展板包括完整的评估套件,可让用户使用 VL53L4CD
    的头像 发表于 10-31 09:24 255次阅读
    基于STM32的<b class='flag-5'>VL53L4CD</b>高精度飞行时间传感器技术解析与应用实践

    ST VL53L4CD 飞行时间测距模组技术解析与应用指南

    STMicroelectronics SATEL-VL53L4CD分线板包括两个嵌入VL53L4CD飞行时间高精度接近传感器的分线板。SATEL-VL53L4CD分线板设计用于快速集成到器件中。
    的头像 发表于 10-31 09:32 276次阅读
    ST <b class='flag-5'>VL53L4CD</b> 飞行时间测距模组技术解析与应用指南