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 */
演示结果
配置成功后,数据可以正常打印。若对部分代码进行注释,可以查看到测距只执行一次,可以判断当前已经进入单次模式。
热门推荐
“两新”政策下用户的反古与演进 | 购车用户趋势洞察
贾斯汀·汀布莱克《Mirrors》:一首献给挚爱的镜中情歌
儿童长时间玩电脑如何预防近视?眼科医生教您几个小技巧
夏朗车型价格构成及保养费用详解
鳌太线非法穿越整治行动:守护自然,珍爱生命
妖僧拉斯普京:控制沙皇家族,淫遍上流社会,死亡过程充满谜团
肝脏DNA甲基化分析揭示表观遗传衰老对异生素代谢和转运基因的影响
企业考勤管理系统怎么提高员工出勤率?
物证处理与保存:法律程序、移交与销毁规则
这种饮食和运动方式,能降低身体炎症水平及死亡风险!
婴儿腹泻注意事项
2024年新高考改革:科目组成、分数分配与总分计算的变化
艺术学理论实践答辩
舌尖红如何降心火
衣服油渍也能轻松「搞掂」?编辑实测5大平价去污祕技!卸妆湿纸巾成最強急救法寶
全球洞察|日本央行会打破日本股市的牛市吗?
工伤保险待遇标准的辅助器具费
电梯定期维护:确保安全与性能的关键步骤
高中生如何成为控制时间的高手?
如何在三伏天科学安全地组织训练?快来看看这些注意事项
抄经回向往生者:为亲人送上最后的祝福与安慰
休斯顿自然科学博物馆:探索自然与科学的殿堂
强制执行如何查对方名下财产?一文详解查询方法与起诉流程
癫痫患者使用手机指南:医生的专业建议
PCB线宽与电流:一对最佳拍档
《体重管理专家共识(科普版)》正式发布
夫妻住房公积金贷款需要什么材料
深入理解问题本质——5Why分析法的应用与实践
近视眼怎么控制度数不涨?佩戴合适的近视眼镜以及日常的护理都是很重要的!
如何通过“三才五格命理”解读个人命运