VL53L4CD ToF传感器单次测量模式开发指南
创作时间:
作者:
@小白创作中心
VL53L4CD ToF传感器单次测量模式开发指南
引用
1
来源
1.
https://m.elecfans.com/article/3379709.html
概述
在现代嵌入式系统中,精确的距离测量和实时响应能力对于许多应用场景至关重要。VL53L4CD 是一款先进的飞行时间(Time-of-Flight, ToF)传感器,能够提供高精度的距离测量。本文介绍了如何基于VL53L4CD传感器实现连续测距,并通过配置检测阈值来优化系统的响应能力。
我们将详细讲解如何初始化VL53L4CD传感器,设置其测量参数和检测阈值,并实现中断配置以响应特定的测量条件。通过这种方式,系统能够在距离测量达到预设的阈值范围内触发中断,从而实现实时响应和高效数据处理。
硬件准备
首先需要准备一个开发板,这里使用的是STM32G431CB MCU。开发板的硬件连接如下:
- 串口:PA9和PA10
- I2C接口:PA8和PB5
- XSHUT引脚:用于控制传感器的开启和关闭
- GPIO1:用于中断输出
软件配置
STM32CubeMX配置
- IIC配置:配置IIC为快速模式,速度为400k。
- XSHUT:XSHUT引脚由主机控制,设备在不使用时可以被完全关闭,然后通过主机使用XSHUT引脚来唤醒。
- GPIO1:当传感器完成一次测距操作时,GPIO1引脚可以被配置为输出中断信号,通知微控制器读取测量结果。
代码实现
在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 */
在main函数中进行传感器初始化和配置:
/* 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状态并处理测量结果:
/* 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 */
}
/* USER CODE END 3 */
演示结果
配置成功后,数据可以正常打印。若对部分代码进行注释,可以查看到测距只执行一次,可以判断当前已经进入单次模式。
热门推荐
掌握升与斤的换算关系,提升日常生活与烹饪的便利性
股票放量缩量:股票放量与缩量的分析方法
对方“不爱你了”,才会有这些表现,句句肺腑之言
《猎罪图鉴2》隐藏伏笔与反转逐个细数:悬念迭起,社会话题引发深思
安全帽选购指南:了解基本认证标准,保障行车安全
如何用C语言实现斐波那契数列:递归、迭代、优化递归和动态规划详解
四步“攻略”保障化学实验安全
厦门大学眼科医院色弱患者就医指南
刘备有四位夫人:三位都是联姻需要,只有一位是真爱!
聊一聊口腔健康的十个误区
“湿气”最怕这3种食物,每周吃3次,健脾益肾,祛湿排毒,一身轻
10张漫威宇宙超级英雄的虚构世界电影涂色图片大全!
神奇植物在哪里?《植物大战僵尸2》x G4G 开启植物科普之旅
马斯克:评价技术的正确方法,不是和竞争对手,而是与物理学极限比较
抗氧化好處有哪些?常見的抗氧化食物有哪些?
外贸管理如何做销售目标
港风穿搭指南:打造独特的复古风情
紫砂壶收藏:市场价值了解过吗?如何免费拍卖出手?
玉米的精华部位,你啃对了吗?许多人都吃错了
熊孩子放鞭炮惹祸,父母竟要卖房解困!
中式教育vs英式教育,差别在哪儿
大学英语写作技巧提升:探索高级词汇的巧妙运用
零基础入门软件开发:从编程语言到项目管理的完整指南
绝美冬日胜景:十种冬日景象描写
企业微信考勤机打卡核算操作指南
一文揭秘:拥有多少钱才算“超级富豪”?
膝盖积水怎么办?从原因到治疗的全面指南
冬青:自然界的常青树,药用与观赏的完美结合
电梯设备安全风险及相关管理措施
佛珠之禅,手串间的修行之旅