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

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

3天内不再提示

VL53L3CX小板开发(2)----修改测距范围及测量频率

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 2026-05-30 16:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

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

最近在弄ST Demo,需要样片的可以加群申请:615061293 。

视频教学

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

样品申请

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

完整代码下载

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

硬件准备

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

在这里插入图片描述

参考程序

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

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

调整测量频率

根据不同应用场景,调整测量频率可以实现以下目的:

  1. 提高响应速度:在需要快速检测目标物体的应用中,增加测量频率能够提升传感器的响应速度。
  2. 优化功耗:在电池供电的应用中,降低测量频率可以显著减少传感器的能耗,从而延长设备的续航时间。
  3. 增强测量稳定性:适当的测量频率设置有助于在不同环境条件下保持测量数据的稳定性和可靠性。

调整VL53L3CX传感器的测量频率主要涉及修改传感器的配置文件。传感器提供了多种配置文件选项,可以通过配置时间预算和测量频率来实现不同的测量需求。

技术规格

在这里插入图片描述

系统框图

在这里插入图片描述

在这里插入图片描述

应用示意图

在这里插入图片描述

生成STM32CUBEMX

用STM32CUBEMX生成例程,这里使用MCU为STM32H503CB。

配置时钟树,配置时钟为250M。

在这里插入图片描述

串口配置

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

在这里插入图片描述

配置串口,速率为115200。

在这里插入图片描述

IIC配置

在这个应用中,VL53L3CX模块通过I2C(IIC)接口与主控器通信
具体来说,VL53L3CX模块的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_VL53L3CX_SimpleRanging_Process,用于配置和执行VL53L3CX传感器的简单测距操作。
在这里插入图片描述

详细解释

  1. CUSTOM_RANGING_SENSOR_ReadID(CUSTOM_VL53L3CX, &Id);:
    ○ 读取传感器的ID,并将其存储在变量 Id 中。
  2. CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L3CX, &Cap);:
    ○ 获取传感器的能力,并将其存储在 Cap 结构中。
  3. 配置 Profile 结构的参数:
    ○ Profile.RangingProfile 设置测距模式。
    ○ Profile.TimingBudget 设置测量时间预算。
    ○ Profile.Frequency 设置为0,不用于正常测距。
    ○ Profile.EnableAmbient 启用环境光测量。
    ○ Profile.EnableSignal 启用信号测量。
  4. CUSTOM_RANGING_SENSOR_ConfigProfile(CUSTOM_VL53L3CX, &Profile);:
    ○ 如果配置文件与默认配置不同,则应用新的配置文件。
  5. CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L3CX, 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_VL53L3CX, &Id);// 读取传感器ID并存储在Id变量中
  CUSTOM_RANGING_SENSOR_GetCapabilities(CUSTOM_VL53L3CX, &Cap);// 获取传感器的能力并存储在Cap变量中

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

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

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

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		if(HAL_GPIO_ReadPin  ( GPIO1_GPIO_Port, GPIO1_Pin) ==0)		
		{		
			/* polling mode */
			status = CUSTOM_RANGING_SENSOR_GetDistance(CUSTOM_VL53L3CX, &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。

在这里插入图片描述

修改测距范围

VL53L4CX最大可以测量6M距离,可以通过 Profile.RangingProfile 设置为测距模式。

  1. RS_MULTI_TARGET_SHORT_RANGE (VL53L4CX_PROFILE_SHORT):
    ○ 短距离多目标模式:
    ■ 此模式下,传感器优化用于较近距离的测量。
    ■ 适用于需要高精度但测量距离较短的应用。
    ■ 在短距离测量时,传感器可以提供更快的响应时间和更高的测量频率。
  2. RS_MULTI_TARGET_MEDIUM_RANGE (VL53L4CX_PROFILE_MEDIUM):
    ○ 中距离多目标模式:
    ■ 此模式下,传感器在中等距离范围内工作。
    ■ 适用于需要在中等距离内进行测量的应用。
    ■ 提供了距离和精度之间的平衡。
  3. RS_MULTI_TARGET_LONG_RANGE (VL53L4CX_PROFILE_LONG):
    ○ 长距离多目标模式:
    ■ 此模式下,传感器优化用于较远距离的测量。
    ■ 适用于需要测量更远距离的应用。
    ■ 在长距离测量时,响应时间可能会更长,但可以覆盖更大的测量范围。

此时 Profile.RangingProfile = VL53L4CX_PROFILE_MEDIUM; // 设置测距模式为中距离
若测量长距离,可能出现如下测量失败情况,TIMING_BUDGET修改为200。

在这里插入图片描述

Status状态位如下所示。
在使用VL53L4CX传感器时,返回的状态码(status)为4通常表示特定的错误类型。根据VL53L4CX传感器的文档,状态码4对应的具体错误类型是 VL53L4CX_RANGESTATUS_OUTOFBOUNDS_FAIL。
VL53L4CX_RANGESTATUS_OUTOFBOUNDS_FAIL:
● 状态码4:此状态码表示测距过程中发生了超出边界失败(out of bounds fail)的错误。
● 含义:传感器在测量过程中检测到目标物体距离超出了其测量范围,或者接收到的信号不在预期的范围内。
在这里插入图片描述

修改测量范围为长范围。

Profile.RangingProfile = RS_MULTI_TARGET_LONG_RANGE;

此时测距可以测量长距离范围。

在这里插入图片描述

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

    关注

    2578

    文章

    55894

    浏览量

    795830
  • 测距
    +关注

    关注

    2

    文章

    118

    浏览量

    20897
  • TOF
    TOF
    +关注

    关注

    9

    文章

    558

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VL53L4CX小板开发(1)----驱动TOF进行测距

    VL53L4CX 是一款先进的激光距离传感器,专为长距离和多目标测量设计,能够在最长6米的范围内提供非常精确的距离测量,尤其在短距离上效果显著,这得益于新一代18°视场角的激光发射器和
    的头像 发表于 11-08 16:29 3230次阅读
    <b class='flag-5'>VL53L4CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(1)----驱动TOF进行<b class='flag-5'>测距</b>

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

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

    VL53L4CD是一款高度集成的飞行时间(ToF)传感器,广泛应用于距离测量和接近检测。为了满足不同应用场景的需求,合理调整传感器的测量频率至关重要。本文旨在介绍如何在
    的头像 发表于 11-05 10:19 5304次阅读
    <b class='flag-5'>VL53L</b>4CD<b class='flag-5'>小板</b><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>

    VL53L8CX小板开发(4)----运动指示器

    VL53L8CX设备的测距功能。 测距循环 (无限循环): ○ 检查VL53L8CX设备是否有新的数据可用。 ○ 如果有新数据: ■ 获取
    的头像 发表于 12-22 15:00 1.3w次阅读
    <b class='flag-5'>VL53L8CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(4)----运动指示器

    VL53L5CX #高达 8x8 多区域测距和 63°对角线宽视场 飞行时间多区域测距传感器

    ,可实现双摄像头立体视觉和 3D 深度辅助* 智能建筑和智能照明(用户检测以唤醒设备)* IoT(用户和物体检测)* 视频对焦跟踪。60 Hz 测距可优化连续对焦算法VL53L5CX 系统框图
    发表于 09-01 10:10

    STM32CubeMX如何生成与VL53L3CX分线板一起使用的入门代码呢?

    我正在尝试探索 X-CUBE-TOF1,我有几个 VL53L3CX 分线板。我正在使用最新的 CubeMX 和 IDE(分别为 6.3.0 和 1.7),因此下载了 2.0.0 和 1.0.0
    发表于 12-28 13:23

    如何改进AN5561的VL53L3CX性能?

    我检查了应用说明“AN5561”,VL53L3CX 最大测距性能改进。我有一个关于“1.3 最大测距距离”的问题。中距离模式的性能似乎优于长距离模式。我以为这些表被交换了。表 1 的规格是否正确?中距离模式的距离比长距离模式的距
    发表于 01-11 07:24

    如何使用NUCLEOF401RE为VL53L1实施en.VL53L1CB_BareDriver?

    ,但现在,我想从裸驱动程序开始学习包含 VL53L1 的 API。我将这个问题放在社区中,因为直到现在,我的尝试都以有关 windows.h 标头的错误消息结束我在尝试包含 VL53L3CX 的驱动程序
    发表于 01-16 08:16

    VL53L3CX传感器靠在一起同时工作,会不会互相干扰?

    尝试用 ToF VL53L3CX 做一些简单的应用,出现了以下疑问:多个彼此靠近的 ToF 能否同时工作而不会干扰测量?换句话说,如果不同的ToF VL53L3CX,设置相同,同时开始测量
    发表于 02-01 07:08

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

    VL53L0X 飞行时间 测距传感器模块 2米 I2C接口 测距频率可达50Hz,低功耗,
    的头像 发表于 01-06 08:56 1.1w次阅读
    微雪电子<b class='flag-5'>测距</b>传感器<b class='flag-5'>VL53L</b>0X<b class='flag-5'>测距</b>模块简介

    意法半导体推出具有专利直方图算法的新款产品VL53L3CX

    VL53L3CX测距范围覆盖了2.5cm到3m,并且,与传统红外传感器不同,它不受目标颜色或反射率的影响。这使得设计师可以在他们的产品中引入强大的新功能,例如通过忽略无关的背景或前景
    的头像 发表于 06-01 09:03 6147次阅读

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

    最佳性能。本篇文章将介绍如何通过修改VL53L4CX传感器的测距范围测量频率来满足不同应用场景
    的头像 发表于 06-19 10:49 3045次阅读
    <b class='flag-5'>VL53L4CX</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>及<b class='flag-5'>测量</b><b class='flag-5'>频率</b>

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

    最佳性能。本篇文章将介绍如何通过修改VL53L4CX传感器的测距范围测量频率来满足不同应用场景
    的头像 发表于 12-22 09:57 1460次阅读
    <b class='flag-5'>VL53L4CX</b><b class='flag-5'>小板</b><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>及<b class='flag-5'>测量</b><b class='flag-5'>频率</b>

    VL53L8CX小板开发(1)----驱动TOF进行区域检测

    VL53L8CX是一款8x8多区域ToF测距传感器,它在环境光下能够在降低功耗的同时增强性能。该传感器基于意法半导体的FlightSense技术设计,能够提供最高400 cm的精确测距,并具有65
    的头像 发表于 12-22 14:12 1692次阅读
    <b class='flag-5'>VL53L8CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(1)----驱动TOF进行区域检测

    VL53L3CX小板开发(1)----驱动TOF进行测距

    VL53L3CX是意法半导体的最新飞行时间(ToF)产品,并嵌入了意法半导体的第三代FlightSense专利技术。它结合了高性能的接近和测距传感器,具有多目标距离测量和自动污迹校正功能。微型可回流
    的头像 发表于 05-30 15:59 755次阅读
    <b class='flag-5'>VL53L3CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(1)----驱动TOF进行<b class='flag-5'>测距</b>