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

1万+

被折叠的 条评论
为什么被折叠?



