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

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

3天内不再提示

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

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-06-19 10:58 次阅读

概述

最近在弄ST和瑞萨RA的课程,需要样片的可以加群申请:615061293 。

在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的距离测量。本文介绍了如何基于VL53L4CD传感器实现连续测距,并通过配置检测阈值来优化系统的响应能力。

我们将详细讲解如何初始化VL53L4CD传感器,设置其测量参数和检测阈值,并实现中断配置以响应特定的测量条件。通过这种方式,系统能够在距离测量达到预设的阈值范围内触发中断,从而实现实时响应和高效数据处理。

在这里插入图片描述

视频教学

https://www.bilibili.com/video/BV19n4y1X7ba/

样品申请

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

完整代码下载

https://download.csdn.net/download/qq_24312945/89445253

实现demo

  1. 传感器初始化:介绍如何正确初始化 VL53L4CD 传感器,包括系统时钟配置和外设初始化。
  2. 传感器配置:讲解如何配置传感器的测量参数,包括测距模式、时间预算和环境光测量设置。
  3. 单次测量实现:演示如何启动传感器进行单次测量,获取测量结果,并在每次测量后停止传感器以准备下一次测量。
  4. 应用示例:提供一个实际的应用示例代码,展示如何在嵌入式系统中实现单次测量模式,并处理测量结果以适应具体应用需求。

硬件准备

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

在这里插入图片描述


在这里插入图片描述

技术规格

在这里插入图片描述

系统框图

在这里插入图片描述在这里插入图片描述

应用示意图

在这里插入图片描述

生成STM32CUBEMX

选择MCU

测试版所用的MCU为STM32G431CB。

在这里插入图片描述

串口配置

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

在这里插入图片描述

配置串口。

在这里插入图片描述

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.RangingProfile 为自主测量模式,同事开启单次测量。

  /* 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_AUTONOMOUS;// 设置测距配置文件为自主测量模式
  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_ONESHOT);
	
  /* USER CODE END 2 */

主程序

轮询方式检测 GPIO 引脚状态,并在满足条件时获取 VL53L4CD 传感器的测距结果并进行处理。
检查 GPIO 引脚状态,当 GPIO 引脚状态为低电平(表示测量完成且数据已准备好)时,进行以下操作:
● 调用 CUSTOM_RANGING_SENSOR_GetDistance(CUSTOM_VL53L4CD, &Result); 获取测距结果。
● 如果测量成功,调用 print_result(&Result); 打印测距结果。
● 停止当前测量以准备下一次测量。
● 再次启动单次测量。

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

    if (status == BSP_ERROR_NONE)
    {
      print_result(&Result);
    }
		// 停止测量
		CUSTOM_RANGING_SENSOR_Stop(CUSTOM_VL53L4CD);
		HAL_Delay(1000);
		// 再次启动传感器进行单次测量
		status = CUSTOM_RANGING_SENSOR_Start(CUSTOM_VL53L4CD, RS_MODE_BLOCKING_ONESHOT);
	}
    /* USER CODE END WHILE */

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

演示结果

配置成功,数据可以正常打印。

在这里插入图片描述


若对部分代码进行注释,可以查看到测距只执行一次,可以判断当前已经进入单次模式。

在这里插入图片描述


在这里插入图片描述


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

    关注

    2538

    文章

    49055

    浏览量

    744318
  • 测量
    +关注

    关注

    10

    文章

    4448

    浏览量

    110153
  • TOF
    TOF
    +关注

    关注

    9

    文章

    451

    浏览量

    36002
  • stm32cubemx
    +关注

    关注

    5

    文章

    276

    浏览量

    14530
收藏 人收藏

    评论

    相关推荐

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

    使用。 与所有基于意法半导体的FlightSense技术的飞行时间 (ToF) 传感器一样,无论目标颜色和反射率如何,VL53L4CD均可记录绝对距离测量VL53L4CD
    的头像 发表于 05-17 14:54 635次阅读
    <b class='flag-5'>VL53L4CD</b> <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行测距

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

    。 与所有基于意法半导体FlightSense技术的ToF传感器一样,VL53L8CX能够测量绝对距离,不受目标颜色和反射率的影响。 VL53L8CX支持SPI和I²C接口,确保高
    的头像 发表于 05-20 09:42 546次阅读
    <b class='flag-5'>VL53L</b>8CX <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(1)----驱动<b class='flag-5'>TOF</b>进行区域检测

    VL53L8CX TOF开发(2)----设置自主模式

    “自主模式”(Autonomous mode)通常指的是设备或系统能够在没有外部输入的情况下独立完成任务。对于传感器,如VL53L8,自主模式可能意味着传感器可以独立、定期地进行测量
    的头像 发表于 05-17 15:41 985次阅读
    <b class='flag-5'>VL53L</b>8CX <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(2)----设置自主<b class='flag-5'>模式</b>

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

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

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

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

    新一代ToF 激光测距模块VL53L0X

    ,所以回程距离的计算公式也很简单,即“光速” x “时间延迟”。VL53L0X 是新一代 ToF 激光测距模块,采用目前市场上最小型的封装,可基于各种目标物颜色和反射特性进行精确测距。该设备测量的绝对
    发表于 04-06 14:03

    请问采样保持芯片AD783的ONE-SHOT是什么电路

    您好! 有俩个问题请教!附件里是AD783的Datasheet里推荐的一个采样电路。我的问题是:1.这个电路里的ONE-SHOT 是什么电路, 2.那个触发器使用的是什么型号的触发器呢? 谢谢了!附件AD783.png48.8 KB
    发表于 12-03 09:19

    VL53L0x环境光灵敏度无法测量距离

    你好我正在测试VL53L0X飞行时间传感器,以便了解它对环境光的抵抗力,结果证明,如果你将一个具有高红外线含量的光源(如卤素灯泡)指向传感器它无法测量距离。即使照度很低。它简单地说'没有目标'。角度
    发表于 04-15 16:42

    VL53L1X简介

    VL53L1X是目前市场上最快的微型ToF传感器,精确测距能力达4米,测距频率快至50 Hz。它采用微型、可回流焊封装,集成了一个光子雪崩二极管(SPAD)接收阵列、一个940nm
    发表于 08-06 07:54

    RT-Thread VL53L0X TOF传感器驱动设计资料实现

    1、RT-Thread VL53L0X TOF传感器驱动实现  Time of flight(TOF),中文翻译为“飞行时间”。飞行时间技术在广义上可理解为通过测量物体、粒子或波在固定
    发表于 09-15 17:08

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

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

    一个路径One-Shot模型,以解决训练过程中面对的主要挑战

    One-Shot 是一种新范式。它定义了超网络,并以相似的方式做权重复用。但是并没有将模型结构分布参数化。模型搜索从超网络训练中解耦,并且解决步骤是独立的。因此,One-Shot 具有序列性。它结合了上述嵌套式和联合式优化方法的优点,因此灵活而高效。
    的头像 发表于 04-04 16:46 4046次阅读
    一个<b class='flag-5'>单</b>路径<b class='flag-5'>One-Shot</b>模型,以解决训练过程中面对的主要挑战

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

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

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

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

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

    VL53L4CX传感器是一款高性能的飞行时间(Time-of-Flight)传感器,广泛应用于各种距离测量和目标检测场景。其灵活的配置选项使得用户可以根据具体应用需求调整测距范围和测量频率,从而实现
    的头像 发表于 06-19 10:49 610次阅读
    <b class='flag-5'>VL53L4</b>CX <b class='flag-5'>TOF</b><b class='flag-5'>开发</b>(2)----修改测距范围及<b class='flag-5'>测量</b>频率