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

news2024/11/25 13:22:33

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

  • 概述
  • 视频教学
  • 样品申请
  • 完整代码下载
  • 实现demo
  • 硬件准备
  • 技术规格
  • 系统框图
  • 应用示意图
  • 生成STM32CUBEMX
    • 选择MCU
    • 串口配置
    • IIC配置
  • XSHUT
  • GPIO1
  • X-CUBE-TOF1
  • app_tof.c
  • 详细解释
  • 主程序
  • 演示结果

概述

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

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

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

视频教学

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

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

样品申请

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

完整代码下载

实现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 */

演示结果

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830551.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

展会预热|邀您共赴2024华南国际工业展览会

展会预告 在数字化转型的浪潮中&#xff0c;广东盘古信息科技股份有限公司&#xff08;以下简称“盘古信息”&#xff09;作为工业软件业内的领军企业&#xff0c;为制造企业提供全面的数字化生产制造运营管理系统及系统集成解决方案。我们将于2024年6月19日至21日亮相华南工博…

Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权

前言 Supabase 使用的是 postgresql 的 Row Level Security (RLS)&#xff0c;可以限制不同用户对同一张表的不同数据行的访问权限。这种安全机制可以确保只有授权用户才能访问其所需要的数据行&#xff0c;保护敏感数据免受未授权的访问和操作。 Auth Providers 打开 Supab…

图知识蒸馏综述:算法分类与应用分析

源自&#xff1a;软件学报 作者&#xff1a;陈哲涵 黎学臻 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 图数据, 如引文网络, 社交网络和交通网络, 广泛地存在现实生活中. 图神经网络凭借强大的表现力受到广泛…

5月70城房价:一线城市新建房价格唯上海反弹 二手房全线降幅扩大 M1下行的根源:地方政府压降债务

5月份&#xff0c;一线城市新建商品住宅销售价格同比下降3.2%&#xff0c;降幅比上月扩大0.7个百分点。其中&#xff0c;北京、广州和深圳分别下降1.8%、8.3%和7.4%&#xff0c;上海上涨4.5%。 2024年5月份&#xff0c;70个大中城市中&#xff0c;各线城市商品住宅销售价格环比…

Linux 下VS Code 弹出 快速修复,导致 BackSpace 无法删除

最近在Linux下使用VSCode&#xff0c;发现有错误的代码选中了无法删除 这个时候&#xff0c;你按BackSpace 是无法删除的&#xff0c;很恼火&#xff01; 把这个禁用了之后&#xff0c;就不会弹出这个框&#xff0c;这样可以顺利选中删除&#xff01; 感觉这个是不是vs code 插…

聚观早报 | GPT-4通过图灵测试;哪吒新车将交付

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月17日消息 GPT-4通过图灵测试 哪吒新车将交付 SpaceX星舰将进行第五次试飞 马斯克称新款Roadster可以飞 华为…

跨平台兼容性优化:确保短剧APP小程序在不同系统上的稳定运行(二)

在上一篇帖子中&#xff0c;我们初步探讨了跨平台兼容性优化的重要性以及不同操作系统和设备对小程序的影响。本篇帖子将进一步深入分析如何优化代码和界面布局&#xff0c;以确保短剧APP小程序在不同平台上都能稳定运行。 一、代码优化策略 减少依赖和冗余&#xff1a;确保代…

Office办公软件如何下载安装?Office 2021最佳的办公软件安装包资源分享!

Office软件这种文档格式的普及&#xff0c;得益于其高度的兼容性和通用性&#xff0c;使得用户能够轻松地在不同的电脑和平台上打开和编辑文件。 Office软件文档格式的通用性&#xff0c;意味着无论是Windows、macOS还是Linux等操作系统&#xff0c;用户都能无障碍地打开和浏览…

triton矩阵乘以及缓存优化

这里triton.cdiv(M, META[BLOCK_SIZE_M]) * triton.cdiv(N, META[BLOCK_SIZE_N])&#xff0c;所以grid的形状是一维的。 观察函数内部 pid tl.program_id(axis0)&#xff0c;因为grid是一维的&#xff0c;所以这里就是总块数&#xff0c;我们假设实际A*BC&#xff0c; A&…

2024文件找回:怎么恢复删除的数据?6种实用的数据恢复汇总锦集!

怎么恢复删除的数据&#xff1f;在当今数字化的时代&#xff0c;我们的电脑中存储了大量的重要数据&#xff0c;一旦数据丢失&#xff0c;可能会对我们的工作和生活造成极大的困扰。因此&#xff0c;掌握一些有效的电脑数据恢复方法是非常必要的。下面&#xff0c;我将介绍六种…

【仿真建模-anylogic】Port原理解析

Author&#xff1a;赵志乾 Date&#xff1a;2024-06-14 Declaration&#xff1a;All Right Reserved&#xff01;&#xff01;&#xff01; 1. 类图 2. 原理解析 2.1 核心函数&#xff1a; Port作为各类型端口的基类&#xff0c;其核心方法如下 &#xff1a; 函数功能Port(A…

Github 2024-06-17 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-17统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量JavaScript项目3Python项目3C++项目3Rust项目1C#项目1Tcl项目1Java项目1TypeScript项目1Godot引擎 – 多平台2D和3D游戏引擎 创建周期:3817 天…

Suno新技能亮相:完美复刻歌手音色,我甚至不敢公开!

之前写过一篇文章 颠覆音乐创作! Suno史诗级更新&#xff0c;随便哼哼就能出一首好听的歌曲&#xff1f; Suno支持上传一段音频或者自己的哼唱进行续创歌曲&#xff0c;这个功能大家有玩出花样嘛&#xff1f; 可能很多人&#xff0c;还不知道这个到底有啥用! 大家先看看这首《满…

天翼云认证高级解决方案架构师,回忆题库,刚刚出炉,建议收藏

天翼云毕竟是国家队的 面向的都是大市场 虽然起步晚 但是人家底子厚&#xff0c;厚积薄发&#xff0c;且是央资背景&#xff0c;做的都是大项目 这种势下&#xff0c;学习且考出几个天翼云认证&#xff0c;那得安排上&#xff0c;以便以后跳槽&#xff0c;涨薪&#xff0c;…

《天软股票特色因子定期报告》

最新《天软股票特色因子定期报告》&#xff08;2024-06&#xff09;&#xff0c;抢先发布 内容概要如下&#xff1a; 天软特色因子A08006&#xff08;近一月日度买卖压力2&#xff09;从行业角度分析&#xff0c;在电子设备、石油石化行业表现稳定&#xff0c;无论在有效性、区…

【ARM】MDK Debug模式下Disassembly窗口介绍

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 主要了解Disassembly窗口中包含的内容&#xff0c;和如何利用Disassembly中的内容了解程序的存储和调用情况。 2、 问题场景 对于Disassembly窗口中具体包含的内容不了解&#xff0c;无法合理地应用Disassembly窗口…

[数据集][目标检测]减速区域检测数据集VOC+YOLO格式1654张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1654 标注数量(xml文件个数)&#xff1a;1654 标注数量(txt文件个数)&#xff1a;1654 标注…

如何利用H5封装App:小猪APP分发为你解决难题

在这个移动互联网时代&#xff0c;开发一款App并不是件轻而易举的事情。你可能会遇到各种各样的挑战&#xff0c;尤其是当你想要快速上线并高效推广时。如何利用H5来封装App&#xff0c;解决这些难题呢&#xff1f;今天我们就来聊聊这个话题&#xff0c;并看看“小猪APP分发”是…

#0延时赋值

代码; module dff1;reg a, b;initial begina 0;b 1;a < b;b < a;$monitor ("%0dns: \$monitor: a%b b%b", $stime, a, b);$display ("%0dns: \$display: a%b b%b", $stime, a, b);$strobe ("%0dns: \$strobe : a%b b%b\n", $st…

Origin中增加一列并更新绘图

一、在book当中增加数据列 二、回到绘图中&#xff0c;双击图层 三、修改增加图像的格式 四、根据需要删除图例中多余的部分