当前位置:首页|资讯

三轴加速度计LIS2DW12开发(3)----检测活动和静止状态

作者:记帖发布时间:2024-09-30

概述

检测活动和静止状态主要用途是在嵌入式应用中实时监控加速度计的活动状态,例如在可穿戴设备、智能手机或安全系统中检测用户的动作或设备的位置变化。通过设置不同的阈值和时长,可以精确地确定何时设备处于静止状态,何时发生了活动,从而触发相应的操作或警报。

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

视频教学

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


样品申请

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

源码下载

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

生成STM32CUBEMX

用STM32CUBEMX生成例程,这里使用MCU为STM32WB55RG。 配置时钟树,配置时钟为32M。

串口配置

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

 配置串口。

IIC配置

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

CS和SA0设置

串口重定向

打开魔术棒,勾选MicroLIB

在main.c中,添加头文件,若不添加会出现 identifier "FILE" is undefined报错。




函数声明和串口重定向:



参考程序

https://github.com/STMicroelectronics/lis2dw12-pid

初始换管脚

由于需要向LIS2DW12_I2C_ADD_H写入以及为IIC模式。 

所以使能CS为高电平,配置为IIC模式。 配置SA0为高电平。



获取ID

我们可以向WHO_AM_I (0Fh)获取固定值,判断是否为0x44。 

lis2dw12_device_id_get为获取函数。 

对应的获取ID驱动程序,如下所示。




复位操作

可以向CTRL2 (21h)的SOFT_RESET寄存器写入1进行复位。

 lis2dw12_reset_set为重置函数。

对应的驱动程序,如下所示。



设置传感器的量程

FS[1:0] - 全量程选择:这两个位用于设置传感器的量程。量程决定了传感器可以测量的最大加速度值。例如,量程可以设置为±2g、±4g、±8g或±16g。这允许用户根据应用的特定需求调整传感器的灵敏度。 

对应的驱动程序,如下所示。



配置过滤器链

lis2dw12_filter_path_set(&dev_ctx, LIS2DW12_LPF_ON_OUT);:设置加速度计输出的过滤器路径。这里选择了输出上的低通滤波器(LPF),用于去除高频噪声。 lis2dw12_filter_bandwidth_set:设置加速度计的滤波带宽,LIS2DW12_ODR_DIV_4 表示滤波器的截止频率为输出数据率(ODR)的四分之一。

配置电源模式

lis2dw12_power_mode_set(&dev_ctx, LIS2DW12_CONT_LOW_PWR_12bit);配置电源模式。这里设置为连续低功耗模式,且以 12 位分辨率运行。

设置加速度计的唤醒持续时间

lis2dw12_wkup_dur_set:设置加速度计的唤醒持续时间,此处设置为“2”,具体的时间取决于输出数据率(ODR)的倒数。

设置进入睡眠模式前的持续时间

lis2dw12_act_sleep_dur_set:设置进入睡眠模式前的持续时间,单位为输出数据率(ODR)的512分之一秒。

设置唤醒加速度计所需的活动阈值

如果设备由于静止或处于静止状态而进入睡眠模式,并且随后它检测到超过WAKE_UP_THS (34h)中设置的阈值的运动,它将从静止状态过渡到唤醒状态。这意味着它将重新开始更积极地监测运动。

lis2dw12_wkup_threshold_set:设置唤醒加速度计所需的活动阈值,这里设置为“2”,每个 LSB(最低有效位)等于全量程的1/64。

配置唤醒中断函数

lis2dw12_wkup_feed_data_set:配置唤醒中断函数所使用的数据类型。活动/静止功能可以使用高通滤波或偏移输出来确定设备的状态。这可以通过CTRL7 (3Fh)中的USR_OFF_ON_OUT位来配置。


加速度计检测活动或静止的模式

lis2dw12_act_mode_set:设置加速度计检测活动或静止的模式,LIS2DW12_DETECT_ACT_INACT 用于配置设备以检测活动或静止状态。 


这些检测功能的阈值和持续时间可以通过两个控制寄存器进行配置: 


WAKE_UP_THS (34h) 用于设置唤醒的阈值水平。 


WAKE_UP_DUR (35h) 用于设置唤醒和静止状态的持续时间。

在WAKE_UP_THS (34h)中设置SLEEP_ON位以启用静止状态检测。



启用唤醒中断

lis2dw12_pin_int1_route_get 和 lis2dw12_pin_int1_route_set:这两个函数配合使用来获取和设置中断路由配置。首先获取当前的中断路由配置,然后启用唤醒中断(int1_wu),最后将配置写回加速度计。


设置输出数据速率

设置加速度计的数据输出速率,LIS2DW12_XL_ODR_200Hz 表示每秒输出200个数据点。

 

检测活动状态

可以不断地检查 LIS2DW12 加速度计的状态,以确定是否检测到活动或静止(无活动)事件。 

sleep_state_ia 位,如果该位被设置(通常表示检测到静止状态)。 

wu_ia 位,如果该位被设置(通常表示检测到活动状态)。 




演示



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1