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

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

3天内不再提示

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

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2025-12-22 14:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

"自主模式"(Autonomous mode)通常指的是设备或系统能够在没有外部输入的情况下独立完成任务。对于传感器,如VL53L8,自主模式可能意味着传感器可以独立、定期地进行测量,而不需要来自主控制器或主机的每一次单独指令。

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

选择使用自主模式的原因可能包括:
简化控制:一旦配置完成,传感器可以独立工作,减少主控制器与传感器之间的通信需求。
稳定的测量频率:在自主模式下,传感器可以以固定的频率进行测量,从而确保数据的稳定性和连续性。
减少响应延迟:由于传感器持续地或定期地进行测量,数据可能会更快地准备好,从而减少了从请求到获取数据的延迟。
主控制器工作量减少:主控制器可以被释放出来执行其他任务,而不是持续地向传感器发送测量命令。
低功耗应用:对于某些传感器,自主模式可能更加能效,因为它可以在测量之间进入低功耗状态。
实现预定任务:自主模式允许传感器在特定条件下执行预定的任务,例如当检测到某个特定值时触发警报。
然而,是否使用自主模式取决于特定的应用需求。有些应用可能更倾向于连续模式,其中主控制器更频繁地与传感器交互,以获得实时数据或更高的控制精度。

视频教学

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

样品申请

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

源码下载

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

硬件准备

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

主控为STM32H503CBT6,TOF为VL53L8CX

自主模式的优势

● 低功耗: VCSEL只在必要时开启,降低了功耗,非常适合需要长时间运行的电池供电设备。

● 独立运行: 不需要主机持续控制,降低了主机的处理负担。

● 灵活配置: 用户可以根据应用需求设置测距频率和积分时间,以适应不同的使用场景。

自主模式适用于需要低功耗运行且不需要主机持续监控的应用场景,例如智能家居中的用户检测、物体检测和手势识别等。

自主模式与连续模式区别

VL53L8CX 传感器的自主模式 (AUTONOMOUS) 和连续模式 (CONTINUOUS) 都允许连续的测量操作,但它们的工作方式和使用场景略有不同:
连续模式 (CONTINUOUS):
● 在此模式下,传感器连续进行测量,每次测量后,就会产生一个新的结果。
● 传感器会尽可能快地测量,基于所设置的时间预算。
● 主机通常需要周期性地从传感器中读取数据。
● 适用于需要高更新率或实时响应的应用。
自主模式 (AUTONOMOUS):
● 传感器独立地进行测量,而无需主机的常规干预。
● 主机可以进入低功耗休眠模式,而传感器仍然独立地执行测量。当传感器完成测量时,它可以通过中断唤醒主机,通知它读取数据。
● 这种模式特别适用于低功耗应用,因为大部分时间主机可以处于休眠状态。
● 这种模式可能与设置的测量频率或时间间隔一起使用,以确定传感器执行测量的频率。
总的来说,选择哪种模式取决于应用的需求。如果需要实时的高更新率数据,则连续模式可能更合适;而对于低功耗或不需要实时数据的应用,自主模式可能是更好的选择。
根据应用需求,如果需要低功耗且可以接受较低的测距频率,建议选择自主模式;如果需要高频率、实时的测距数据且不考虑功耗,建议选择连续模式。

参考程序

https://github.com/CoreMaker-lab/VL53L8CX

https://gitee.com/CoreMaker/VL53L8CX

生成STM32CUBEMX

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

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

串口配置

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

配置串口,速率为921600。

IIC配置

在这个应用中,VL53L8CX模块通过I2C(IIC)接口与主控器通信。具体来说,VL53L8CX模块的I2C引脚连接到主控器的PB6和PB7两个IO口。

配置IIC为快速模式,速度为400k。

LPn 设置

若进行IIC通讯,LPn设置为高电平状态。

这里对应管脚为PB0。

INT设置

自主模式可以通过获取INT管脚进行判断数据是否准备好。

配置PB1为输入模式。

X-CUBE-TOF1

本节介绍在不需要使用样例应用时如何使用STM32CubeMX将X-CUBE-TOF1软件包添加到项目中。有了这样的设置,就只配置了驱动层。

堆栈设置

若无法正常运行需要修改优化等级。

串口重定向

打开魔术棒,勾选MicroLIB

代码配置

在custom_ranging_sensor.c代码中,有IO口驱动VL53L8CX进行复位的代码,由于没有配置对应的IO,所以需要注释掉。

TOF代码配置

在main.c中添加刷新速率,500ms刷新一次,所以频率为2Hz。

/* USER CODE BEGIN Includes */
#include "stdio.h"
#include "custom_ranging_sensor.h"

#define TIMING_BUDGET (500U) /* 5 ms < TimingBudget < 1000 ms */
#define RANGING_FREQUENCY (2U) /* Ranging frequency Hz (shall be consistent with TimingBudget value) */
#define POLLING_PERIOD (1000U/RANGING_FREQUENCY) /* refresh rate for polling mode (milliseconds) */

/* USER CODE END Includes */

函数与变量定义:

/* USER CODE BEGIN PFP */



static uint8_t map_target_status(uint8_t status);
//将从VL53L8CX传感器获取的数据转换
static int32_t convert_data_format(VL53L8CX_Object_t *pObj,VL53L8CX_ResultsData *data, RANGING_SENSOR_Result_t *pResult);
//打印数据
static void print_result(RANGING_SENSOR_Result_t *Result);
static RANGING_SENSOR_ProfileConfig_t Profile;
static int32_t status = 0;
static RANGING_SENSOR_Result_t Result;
/* USER CODE END PFP */

添加TOF初始化。 若需要为8*8,修改对应vl53l8cx_set_resolution参数即可。 其中vl53l8cx_set_integration_time_ms和vl53l8cx_set_ranging_frequency_hz加载了对应的刷新速率。

/* USER CODE BEGIN 2 */

  /*********************************/
  /*  Set ranging mode autonomous  */
  /*********************************/
  VL53L8CX_Object_t *pL8obj = CUSTOM_RANGING_CompObj[CUSTOM_VL53L8CX];
  static VL53L8CX_ResultsData data;
  uint8_t NewDataReady = 0;

  // 设置测距的配置文件为 4x4 的自主测量模式
  Profile.RangingProfile = RS_PROFILE_4x4_AUTONOMOUS;

  // 设置测量的时间预算,这通常决定了测量的速度和准确度
  Profile.TimingBudget = TIMING_BUDGET; /* 5 ms < TimingBudget < 1000 ms */

  // 设置测量的频率,这决定了传感器执行测量的速率
  Profile.Frequency = RANGING_FREQUENCY; /* Ranging frequency Hz (shall be consistent with TimingBudget value) */

  // 确定是否启用环境光测量,0为禁用,1为启用
  Profile.EnableAmbient = 0; /* Enable: 1, Disable: 0 */

  // 确定是否启用信号测量,0为禁用,1为启用
  Profile.EnableSignal = 0; /* Enable: 1, Disable: 0 */

  pL8obj- >IsAmbientEnabled = Profile.EnableAmbient;
  pL8obj- >IsSignalEnabled = Profile.EnableSignal;

  /*
     use case VL53L8CX_PROFILE_4x4_CONTINUOUS:
  */
    // 设置传感器的测量分辨率为 4x4
  status = vl53l8cx_set_resolution(&(pL8obj- >Dev), VL53L8CX_RESOLUTION_4X4);
    // 设置传感器的测量模式为自主模式
  status |= vl53l8cx_set_ranging_mode(&(pL8obj- >Dev), VL53L8CX_RANGING_MODE_AUTONOMOUS);
    // 设置传感器的集成时间,这通常关联到测量的时间预算
    status |= vl53l8cx_set_integration_time_ms(&(pL8obj- >Dev), TIMING_BUDGET);
    // 设置传感器的测量频率,决定了传感器执行测量的速率
    status |= vl53l8cx_set_ranging_frequency_hz(&(pL8obj- >Dev), RANGING_FREQUENCY);

  if (status != VL53L8CX_STATUS_OK)
  {
    printf("ERROR : Configuration programming error!nn");
    while (1);
  }

  status = vl53l8cx_start_ranging(&(pL8obj- >Dev));
  if (status != VL53L8CX_STATUS_OK)
  {
    printf("vl53l8cx_start_ranging failedn");
    while (1);
  }
  /* USER CODE END 2 */

积分时间/曝光时间(Integration time)

积分时间是一项仅在使用自主测距模式时可用的功能(请参阅第 4.5 节测距模式)。 它允许用户在启用 VCSEL 时更改时间。 如果测距模式设置为连续,则更改积分时间无效。 默认积分时间设置为 5 ms。

对于 4x4 和 8x8 分辨率,积分时间的影响是不同的。 分辨率 4x4 由一个积分时间组成,8x8 分辨率由四个积分时间组成。 下图表示两种分辨率的 VCSEL 发射。

所有积分时间之和 + 1 ms 开销必须低于测量周期,否则测距周期将自动增加。

主程序

主程序来获取对应的INT位状态来判定数据是否准备好。

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

    /* polling mode */
    if(HAL_GPIO_ReadPin  ( GPIOB, GPIO_PIN_1) ==0)        
    {
        do {
    (void)vl53l8cx_check_data_ready(&(pL8obj- >Dev), &NewDataReady);
    } while (!NewDataReady);

    if (NewDataReady != 0)
    {
      status = vl53l8cx_get_ranging_data(&(pL8obj- >Dev), &data);

      if (status == VL53L8CX_STATUS_OK)
      {
        /*
         Convert the data format to Result format.
         Note that you can print directly from data format
        */
        if (convert_data_format(pL8obj, &data, &Result) < 0)
        {
          printf("convert_data_format failedn");
          while (1);
        }
        print_result(&Result);
                }
            }        
        }        
    /* USER CODE END WHILE */

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

演示结果

当分辨率为4*4时候,需要积分1次,设置的积分时间为500ms,那么对应的频率应该是2Hz。

当分辨率为8*8时候,需要积分4次,设置的积分时间为500ms,那么对应的频率应该是0.5Hz。

配置完成后可以在Tera Term下查看结果,如下是8*8的显示。

审核编辑 黄宇

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

    关注

    2577

    文章

    55460

    浏览量

    793779
  • TOF
    TOF
    +关注

    关注

    9

    文章

    546

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    VL53L5CX驱动开发(2)----设置自主模式

    "自主模式"(Autonomous mode)通常指的是设备或系统能够在没有外部输入的情况下独立完成任务。对于传感器,如VL53L5,自主模式可能意味着传感器可以独立、定期地进行测量,而不需要来
    的头像 发表于 12-01 16:28 1965次阅读
    <b class='flag-5'>VL53L5CX</b>驱动<b class='flag-5'>开发</b>(<b class='flag-5'>2</b>)----<b class='flag-5'>设置</b><b class='flag-5'>自主模式</b>

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

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

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

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

    VL53L8CX TOF开发(5)----运动阈值检测

    本章目的是展示如何充分利用VL53L8CX传感器的高级特性,通过结合运动指示器和阈值检测功能,实现对特定场景的精确监控。首先,程序通过特定的配置,确保了传感器能够在特定的分辨率下工作,同时还可
    的头像 发表于 06-19 10:45 2858次阅读
    <b class='flag-5'>VL53L8CX</b> TOF<b class='flag-5'>开发</b>(5)----运动阈值检测

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

    初始化阶段 (用户代码开始 2): ○ 声明并初始化一些变量,包括status(状态),isReady(准备就绪标志),i(循环变量),以及与VL53L8CX运动检测相关的结构。 ○ 获取
    的头像 发表于 12-22 15:00 1.2w次阅读
    <b class='flag-5'>VL53L8CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(4)----运动指示器

    使用VL53L3如何在API中使用自主模式阈值?

    直方图数据被发送到您的 MCU 进行后期处理。提取答案的是您的 MCU。那是在 API 中。好消息是答案真的很好。坏消息是芯片不能自主运行。对于自主模式,您必须使用 VL53L0X 或 VL5
    发表于 01-12 06:04

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

    本章展示如何使用VL53L8CX近接传感器的"检测阈值"功能。这个功能允许用户为传感器设置预定义的条件,当这些条件满足时,传感器可以触发一个中断。实现demo 配置
    的头像 发表于 06-19 10:36 3274次阅读
    <b class='flag-5'>VL53L8CX</b> TOF<b class='flag-5'>开发</b>(3)----检测阈值

    基于ST VL53L8CX ToF传感器的技术解析与应用设计

    STMicroelectronics VL53L8CX 8x8多区域飞行时间传感器提高了环境光下的性能,降低了功耗。VL53L8CX基于ST的FlightSense技术,设计用于提供高达400cm
    的头像 发表于 10-25 17:44 2226次阅读
    基于ST <b class='flag-5'>VL53L8CX</b> ToF传感器的技术解析与应用设计

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

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

    VL53L8CX小板开发(3)----检测阈值

    本章展示如何使用VL53L8CX近接传感器的"检测阈值"功能。这个功能允许用户为传感器设置预定义的条件,当这些条件满足时,传感器可以触发一个中断。VL53L8CX传感器允许用户
    的头像 发表于 12-22 14:53 1278次阅读
    <b class='flag-5'>VL53L8CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(3)----检测阈值

    VL53L8CX小板开发(5)----运动阈值检测

    本章目的是展示如何充分利用VL53L8CX传感器的高级特性,通过结合运动指示器和阈值检测功能,实现对特定场景的精确监控。首先,程序通过特定的配置,确保了传感器能够在特定的分辨率下工作,同时还可
    的头像 发表于 12-22 15:10 1666次阅读
    <b class='flag-5'>VL53L8CX</b><b class='flag-5'>小板</b><b class='flag-5'>开发</b>(5)----运动阈值检测

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

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

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

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

    STM32H5开发VL53L8CX(3)----检测阈值

    本章展示如何使用VL53L8CX近接传感器的"检测阈值"功能。这个功能允许用户为传感器设置预定义的条件,当这些条件满足时,传感器可以触发一个中断。 VL53L8CX传感器允许
    的头像 发表于 12-22 16:00 1907次阅读
    STM32H5<b class='flag-5'>开发</b><b class='flag-5'>VL53L8CX</b>(3)----检测阈值

    STM32H5开发VL53L8CX(5)----运动阈值检测

    本章目的是展示如何充分利用VL53L8CX传感器的高级特性,通过结合运动指示器和阈值检测功能,实现对特定场景的精确监控。首先,程序通过特定的配置,确保了传感器能够在特定的分辨率下工作,同时还可
    的头像 发表于 12-22 17:20 2126次阅读
    STM32H5<b class='flag-5'>开发</b><b class='flag-5'>VL53L8CX</b>(5)----运动阈值检测