当前位置:首页|资讯

陀螺仪LSM6DSV16X与AI集成(4)----Qvar触摸电容配置

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

概述

Qvar,全称为电荷变化检测(Qvar stands for "Quasi-static VARiation"),是一种用于检测电荷变化的技术。这种技术通常用于传感器和其他电子设备中,特别是在惯性测量单元(IMU)和微机电系统(MEMS)技术中。Qvar 技术可以用于检测微小的电荷变化,这些变化可能是由于物理运动、环境变化或其他因素导致的。


在 LSM6DSV16X 这类先进的 IMU 中,Qvar 技术用于增强用户界面功能,如轻触、双击、三击、长按或滑动手势。它通过检测和解析与这些手势相关的微小电荷变化,来实现高度精准和灵敏的用户交互。 


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

视频教学

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


样品申请

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

源码下载

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

生成STM32CUBEMX

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

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

串口配置

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

 配置串口。

IIC配置

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

CS和SA0设置

串口重定向

打开魔术棒,勾选MicroLIB

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



函数声明和串口重定向:


参考程序

https://github.com/STMicroelectronics/lsm6dsv16x-pid/tree/main

初始换管脚

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

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




获取ID

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

lsm6dsv16x_device_id_get为获取函数。

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



复位操作

可以向CTRL3 (12h)的SW_RESET寄存器写入1进行复位。 

lsm6dsv16x_reset_set为重置函数。 

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



BDU设置

在很多传感器中,数据通常被存储在输出寄存器中,这些寄存器分为两部分:MSB和LSB。这两部分共同表示一个完整的数据值。例如,在一个加速度计中,MSB和LSB可能共同表示一个加速度的测量值。

连续更新模式(BDU = ‘0’):在默认模式下,输出寄存器的值会持续不断地被更新。这意味着在你读取MSB和LSB的时候,寄存器中的数据可能会因为新的测量数据而更新。这可能导致一个问题:当你读取MSB时,如果寄存器更新了,接下来读取的LSB可能就是新的测量值的一部分,而不是与MSB相对应的值。这样,你得到的就是一个“拼凑”的数据,它可能无法准确代表任何实际的测量时刻。

块数据更新(BDU)模式(BDU = ‘1’):当激活BDU功能时,输出寄存器中的内容不会在读取MSB和LSB之间更新。这就意味着一旦开始读取数据(无论是先读MSB还是LSB),寄存器中的那一组数据就被“锁定”,直到两部分都被读取完毕。这样可以确保你读取的MSB和LSB是同一测量时刻的数据,避免了读取到代表不同采样时刻的数据。

简而言之,BDU位的作用是确保在读取数据时,输出寄存器的内容保持稳定,从而避免读取到拼凑或错误的数据。这对于需要高精度和稳定性的应用尤为重要。

可以向CTRL3 (12h)的BDU寄存器写入1进行开启。




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



Qvar 功能的实现和配置

  1. Qvar 传感器功能: ○ LSM6DSV16X 内置了 Qvar 传感器,能够检测连接到设备的外部电极附近的电荷变化。

  2. 激活 Qvar 功能: ○ 通过设置 CTRL7(16h)寄存器中的 AH_QVAR_EN 位为 1,可以激活 Qvar 通道。

  3. 加速度计设置要求: ○ 当启用 Qvar 通道时,加速度计必须设置为高性能模式或正常模式。

  4. 数据准备信号: ○ Qvar 数据准备好的信号由 STATUS_REG(1Eh)寄存器中的 AH_QVARDA 位表示。这个信号可以通过设置 CTRL7(16h)寄存器中的 INT2_DRDY_AH_QVAR 位为 1,来驱动到 INT2 引脚。

  5. Qvar 数据输出: ○ Qvar 数据以 16 位二进制补码形式提供,在 AH_QVAR_OUT_L(3Ah)和 AH_QVAR_OUT_H(3Bh)寄存器中以固定 240 Hz 的速率输出。

  6. 数据处理: ○ Qvar 数据也可以被机器学习核心(MLC)/有限状态机(FSM)逻辑处理。

  7. 接口模式限制: ○ Qvar 功能仅在 I²C 接口的模式 1 连接模式下可用。当使用 Qvar 时,不支持 I²C 主接口(模式 2)和辅助 SPI(模式 3)。

  8. 外部电极连接: ○ 外部电极需要连接到引脚 2(SDx/AH1/Qvar1)和/或引脚 3(SCx/AH2/Qvar2)。

  9. 输入阻抗选择: ○ 通过在 CTRL7(16h)寄存器中适当设置 AH_QVAR_C_ZIN_[1:0] 位,可以选择 Qvar 缓冲器的等效输入阻抗。 

设置量程和速率

速率可以通过CTRL1 (10h)设置加速度速率。

设置加速度量程可以通过CTRL8 (17h)进行设置。

设置加速度的量程和速率可以使用如下函数。



配置过滤链



激活 Qvar 功能

通过设置 CTRL7(16h)寄存器中的 AH_QVAR_EN 位为 1,可以激活 Qvar 通道。 



获取Qvar数据

可以通过STATUS_REG (1Eh)的AH_QVARDA获取数据是否准备好。

Qvar 数据以 16 位二进制补码形式提供,在 AH_QVAR_OUT_L(3Ah)和 AH_QVAR_OUT_H(3Bh)寄存器中以固定 240 Hz 的速率输出。 




   

演示

触摸上按键。

触摸下按键。



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