QMI8658 - 运动唤醒(WOM)功能 - Ⅳ

0.说在前面的话

前段时间,有个同学想做WOM运动唤醒的功能,说是调试了很久却未达预期。本来想即时帮助看一下这个功能怎么使用的,无奈被公司其他项目紧急开发任务所绊。幸而本周得暇,也捣鼓了很久才调通这个功能。希望对那位同学还有帮助。

1.运动唤醒

动态唤醒 (WoM) 功能的目的是允许系统在系统静止时进入低功耗睡眠状态,然后在移动时自动唤醒。在这种模式下,系统使用非常少的功率,但仍然对运动做出快速响应。(特别注意的是:在WOM参数配置下,加速度计的ODR也会决定功耗的差异)
系统主机配置QMI8658为运动唤醒模式,QMI8658将不在输出数据,至到检测到运动,就会通过配置好的中断引脚唤醒主机
动态唤醒(WoM)功能旨在允许系统在系统静止时进入低功耗睡眠状态,并在移动时自动唤醒。在这种模式下,系统将使用非常少的功率,同时能够快速响应运动。需要注意的是,在WoM参数配置下,加速度计的ODR也会对功耗产生影响。系统主机配置QMI8658为运动唤醒模式,QMI8658将不会输出数据,直到检测到运动,然后通过配置好的中断引脚唤醒主机。

2.运动唤醒相关参数配置

用于配置WOM功能的寄存器
在这里插入图片描述

  • 寄存器 Qmi8658Register_Cal1_L 用于配置触发WOM信号的阈值。 其中,0x00表示禁止使用WOM模式
  • 寄存器 Qmi8658Register_Cal1_H bit7~bit6 用于配置WOM中断引脚
  • 寄存器 Qmi8658Register_Cal1_H bit5~bit0 用于配置判断中断信号的消抖时间
  • 运动唤醒是通过 CTRL9 命令界面配置的, CTRL9 命令列表详见数据手册 Table 28。命令CTRL_CMD_WRITE_WOM_SETTING 设备并启用运动唤醒

3.运动唤醒事件

QMI8658A在检测到Wake on Motion事件时,会设置STATUS1寄存器的bit2,即WoM = 1。MCU读取STATUS1寄存器将清除WoM位,并将所选中断线(INT1或INT2)重置为WoM中断初始值给出的数值。针对每个WoM事件,可以配置为高电平、低电平、上升沿或下降沿来触发MCU中断。

4.配置WOM模式的流程

在这里插入图片描述

5.退出运动唤醒模式

要想退出WOM模式,主机必须先清楚寄存器 Qmi8658Register_Cal1_L 上的所有传感器。然后将WOM阈值设置为 0x00,并执行 CTRL9 命令。这样设置中断将返回到模式的配置。

6.程序演示

1)实验例程配置WOM功能映射到QMI8658A传感器的INT2引脚,默认INT2引脚为低电平。
2)MCU配置PB1为外部中断,上升沿采样
3)运行程序,拍一下桌子产生一个中断信号。用示波器抓取的中断信号(上升沿触发)如下图:
在这里插入图片描述

4)程序接收到中断信号,在中断回调函数中输出信息 : WoM Interrupt INT2 pin is PB1
在这里插入图片描述

7.获取源码

1)通过微信公众号文章链接获取: https://mp.weixin.qq.com/s/1_Xnr56w9AeQCC5vhSg2Yw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「Thunder Studio」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值