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

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

3天内不再提示

水压计ILPS28QSW开发(3)----Qvar触摸电容配置

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-07-21 17:10 次阅读

概述

Qvar,全称为电荷变化检测(Qvar stands for “Quasi-static VARiation”),是一种用于检测电荷变化的技术。这种技术通常用于传感器和其他电子设备中,特别是在惯性测量单元(IMU)和微机电系统(MEMS)技术中。Qvar 技术可以用于检测微小的电荷变化,这些变化可能是由于物理运动、环境变化或其他因素导致的。
在 ILPS28QSW 这类先进的 MEMS 中,Qvar 技术用于增强用户界面功能,如轻触、双击、三击、长按或滑动手势。它通过检测和解析与这些手势相关的微小电荷变化,来实现高度精准和灵敏的用户交互。
需要样片的可以加群申请:615061293 。

在这里插入图片描述

视频教学

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

样品申请

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

完整代码下载

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

Qvar功能

Qvar(电荷变化检测)功能可以通过外部电极实现,用于用户接口,例如:
水泄漏检测
轻拍检测
双击检测
长按检测
左/右滑动检测
这些功能为传感器在智能设备和工业应用中提供了更多可能性。

生成STM32CUBEMX

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

在这里插入图片描述

串口配置

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

在这里插入图片描述

配置串口,速率为2000000。

在这里插入图片描述

IIC配置

在这里插入图片描述

配置IIC速度为1M。

在这里插入图片描述

串口重定向

打开魔术棒,勾选MicroLIB

在这里插入图片描述

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

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

函数声明和串口重定向:

/* USER CODE BEGIN PFP */
int fputc(int ch, FILE *f){
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END PFP */

参考驱动程序

[https://github.com/STMicroelectronics/ilps28qsw-pid]

获取ID

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

在这里插入图片描述

ilps28qsw_id_get为获取函数。

在这里插入图片描述

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

/* Check device ID */
  ilps28qsw_id_get(&dev_ctx, &id);
    printf("ILPS28QSW_ID=0x%x,id.whoami=0x%xn",ILPS28QSW_ID,id.whoami);    
  if (id.whoami != ILPS28QSW_ID)
    while(1);

复位操作

ilps28qsw_init_set为重置函数。

在这里插入图片描述

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

/* Restore default configuration */
  ilps28qsw_init_set(&dev_ctx, ILPS28QSW_RESET);
  do {
    ilps28qsw_status_get(&dev_ctx, &status);
  } while (status.sw_reset);

BDU设置

在很多传感器中,数据通常被存储在输出寄存器中,这些寄存器分为两部分:MSB和LSB。这两部分共同表示一个完整的数据值。例如,在一个加速度计中,MSB和LSB可能共同表示一个加速度的测量值。
连续更新模式(BDU = ‘0’):在默认模式下,输出寄存器的值会持续不断地被更新。这意味着在你读取MSB和LSB的时候,寄存器中的数据可能会因为新的测量数据而更新。这可能导致一个问题:当你读取MSB时,如果寄存器更新了,接下来读取的LSB可能就是新的测量值的一部分,而不是与MSB相对应的值。这样,你得到的就是一个“拼凑”的数据,它可能无法准确代表任何实际的测量时刻。
块数据更新(BDU)模式(BDU = ‘1’):当激活BDU功能时,输出寄存器中的内容不会在读取MSB和LSB之间更新。这就意味着一旦开始读取数据(无论是先读MSB还是LSB),寄存器中的那一组数据就被“锁定”,直到两部分都被读取完毕。这样可以确保你读取的MSB和LSB是同一测量时刻的数据,避免了读取到代表不同采样时刻的数据。
简而言之,BDU位的作用是确保在读取数据时,输出寄存器的内容保持稳定,从而避免读取到拼凑或错误的数据。这对于需要高精度和稳定性的应用尤为重要。
可以向CTRL_REG2 (11h)的BDU寄存器写入1进行开启。

在这里插入图片描述

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

/* Set bdu and if_inc recommended for driver usage */
  ilps28qsw_init_set(&dev_ctx, ILPS28QSW_DRV_RDY);

设置总线接口

/* Select bus interface */
  bus_mode.filter = ILPS28QSW_AUTO;
  ilps28qsw_bus_mode_set(&dev_ctx, &bus_mode);

设置速率

设置速率和量程可以通过CTRL_REG1 (10h)和CTRL_REG2 (11h)进行设置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

/* Set Output Data Rate */
  md.odr = ILPS28QSW_200Hz;
  md.avg = ILPS28QSW_4_AVG;
  ilps28qsw_mode_set(&dev_ctx, &md);

开启QVAR

通过配置CTRL_REG3 (12h)寄存器,可以根据需要启用(AH)/ Qvar功能。

在这里插入图片描述

/* Enable AH/QVAR function */
  ilps28qsw_ah_qvar_en_set(&dev_ctx, 1);

QVAR外部电路

下图可以了解如何配置和使用ILPS28QSW传感器的模拟枢纽和Qvar功能,包括其外部连接、寄存器配置及操作模式,从而有效地利用该传感器的多功能特性。

在这里插入图片描述

初始化代码

/* USER CODE BEGIN 2 */
  ilps28qsw_all_sources_t all_sources;
  ilps28qsw_bus_mode_t bus_mode;
  ilps28qsw_stat_t status;
  stmdev_ctx_t dev_ctx;
  ilps28qsw_id_t id;
  ilps28qsw_md_t md;

  /* Initialize mems driver interface */
  dev_ctx.write_reg = platform_write;
  dev_ctx.read_reg = platform_read;
  dev_ctx.mdelay = platform_delay;
  dev_ctx.handle = &SENSOR_BUS;

  /* Init test platform */
//  platform_init(dev_ctx.handle);
  /* Wait sensor boot time */
  platform_delay(BOOT_TIME);

  /* Check device ID */
  ilps28qsw_id_get(&dev_ctx, &id);
    printf("ILPS28QSW_ID=0x%x,id.whoami=0x%xn",ILPS28QSW_ID,id.whoami);    
  if (id.whoami != ILPS28QSW_ID)
    while(1);

  /* Restore default configuration */
  ilps28qsw_init_set(&dev_ctx, ILPS28QSW_RESET);
  do {
    ilps28qsw_status_get(&dev_ctx, &status);
  } while (status.sw_reset);

  /* Set bdu and if_inc recommended for driver usage */
  ilps28qsw_init_set(&dev_ctx, ILPS28QSW_DRV_RDY);

  /* Select bus interface */
  bus_mode.filter = ILPS28QSW_AUTO;
  ilps28qsw_bus_mode_set(&dev_ctx, &bus_mode);

  /* Set Output Data Rate */
  md.odr = ILPS28QSW_200Hz;
  md.avg = ILPS28QSW_4_AVG;
  ilps28qsw_mode_set(&dev_ctx, &md);

  /* Enable AH/QVAR function */
  ilps28qsw_ah_qvar_en_set(&dev_ctx, 1);
  /* USER CODE END 2 */

获取Qvar数据

对于Qvar数据是否准备好,可以查看STATUS (27h)的P_DA位,判断是否有新数据到达。

在这里插入图片描述

对于压强和QVAR数据,主要在PRESS_OUT_XL (28h)-PRESS_OUT_H (2Ah)。

在这里插入图片描述

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    static ilps28qsw_ah_qvar_data_t data;
    /* Read output only if new values are available */
    ilps28qsw_all_sources_get(&dev_ctx, &all_sources);
    if ( all_sources.drdy_pres ) {
      ilps28qsw_ah_qvar_data_get(&dev_ctx, &data);

      printf("QVAR [mV]:%6.2f [LSB]:%drn", data.mv, data.lsb);

    }        

    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 *

测试结果

未触摸。

在这里插入图片描述

触摸上按键。

在这里插入图片描述

触摸下按键。

在这里插入图片描述

审核编辑 黄宇

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

    关注

    98

    文章

    5845

    浏览量

    148832
  • mems
    +关注

    关注

    128

    文章

    3863

    浏览量

    189780
  • 气压计
    +关注

    关注

    1

    文章

    43

    浏览量

    18218
收藏 人收藏

    评论

    相关推荐

    瑞萨e2studio(24)----电容触摸配置(1)

    瑞萨e2studio(24)----电容触摸配置(1)
    的头像 发表于 08-21 15:47 907次阅读
    瑞萨e2studio(24)----<b class='flag-5'>电容</b><b class='flag-5'>触摸</b><b class='flag-5'>配置</b>(1)

    瑞萨e2studio(25)----电容触摸配置(2)

    瑞萨e2studio(25)----电容触摸配置(2)
    的头像 发表于 08-21 15:50 753次阅读
    瑞萨e2studio(25)----<b class='flag-5'>电容</b><b class='flag-5'>触摸</b><b class='flag-5'>配置</b>(2)

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

    Qvar,全称为电荷变化检测(Qvar stands for "Quasi-static VARiation"),是一种用于检测电荷变化的技术。这种技术通常用于传感器和其他
    的头像 发表于 12-18 10:55 822次阅读
    陀螺仪LSM6DSV16X与AI集成(4)----<b class='flag-5'>Qvar</b><b class='flag-5'>触摸</b><b class='flag-5'>电容</b><b class='flag-5'>配置</b>

    水压计ILPS28QSW开发(1)----轮询获取水压计数据

    本文将介绍如何使用 ILPS28QSW 传感器来读取数据。主要步骤包括初始化传感器接口、验证设备ID、配置传感器的数据输出率和滤波器,以及通过轮询方式持续读取气压数据和温度数据。读取到的数据会被转换为适当的单位并通过串行通信输出。
    的头像 发表于 07-21 09:51 931次阅读
    <b class='flag-5'>水压计</b><b class='flag-5'>ILPS28QSW</b><b class='flag-5'>开发</b>(1)----轮询获取<b class='flag-5'>水压计</b>数据

    在CTRL_REG3数据表中QVAR_AUTO_EN不起作用如何解决呢

    Qvar 数据的 ODR 都减半(在单次模式下,输出一次用压力填充,一次用 Qvar 填充)。 我在 CTRL_REG3 数据表描述中没有看到 QVAR_AUTO_EN,当我尝试这
    发表于 12-23 07:59

    教你如何使用mTouch™ Framework工具开发触摸产品教程(二)

    mTouch™ Framework是Microchip针对电容触摸应用提供的免费软件开发包,开发者通过简单的文件配置,就可以
    的头像 发表于 05-23 01:47 3203次阅读

    教你如何使用mTouch™ Framework工具开发触摸产品教程(一)

    mTouch™ Framework是Microchip针对电容触摸应用提供的免费软件开发包,开发者通过简单的文件配置,就可以
    的头像 发表于 05-23 05:47 3789次阅读
    教你如何使用mTouch™ Framework工具<b class='flag-5'>开发</b><b class='flag-5'>触摸</b>产品教程(一)

    使用mTouch™ Framework工具自由开发触摸产品教程(三)

    mTouch™ Framework是Microchip针对电容触摸应用提供的免费软件开发包,开发者通过简单的文件配置,就可以
    的头像 发表于 05-23 05:47 3136次阅读
    使用mTouch™ Framework工具自由<b class='flag-5'>开发</b><b class='flag-5'>触摸</b>产品教程(三)

    CapTIvate电容触摸解决方案(3

    TI MSP430 CapTIvate Lite: 成本优化的电容触摸微控制器 (3)
    的头像 发表于 08-06 00:19 3691次阅读
    CapTIvate<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>解决方案(<b class='flag-5'>3</b>)

    配置多个电容触摸传感按钮

    本应用笔记将说明在使用超过 4 个电容触摸传感按钮时,如何扫描和检测按钮是否按下。本应用笔记针对PIC16F616系列、PIC16F690系列以及PIC16F887系列单片机。建议在阅读本应用笔记之前先了解电容
    发表于 04-20 10:17 5次下载

    电容触摸按键实验”实例解析

    目录电容触摸按键实验电容触摸按键的基本原理(原理图层面)新电容的产生与作用充放电性能的变化脉冲如何被捕获原理图层面的连接硬件
    发表于 11-30 11:36 15次下载
    “<b class='flag-5'>电容</b><b class='flag-5'>触摸</b>按键实验”实例解析

    QE和FSP开发电容触摸应用指南

    QE和FSP开发电容触摸应用指南
    发表于 11-07 19:50 2次下载
    QE和FSP<b class='flag-5'>开发电容</b><b class='flag-5'>触摸</b>应用指南

    ST首款MEMS防水/防液绝对压力传感器,赋能工业物联网

    意法半导体新推出的ILPS28QSW传感器采用密封的圆柱形表面贴装封装。该封装采用防液体渗透性很高的陶瓷基板和坚固的车用灌封胶保护内部电路。
    发表于 06-15 11:45 442次阅读
    ST首款MEMS防水/防液绝对压力传感器,赋能工业物联网

    Qvar感应通道的配置和操作指南

    AN5755  Qvar 是意法半导体推出的一款静电传感器,适用于人体存在检测和运动检测、触摸检测和用户界面 (UI) 应用。本应用笔记涵盖 Qvar 感应通道的配置和操作指南。在塑料
    发表于 09-12 09:35 0次下载

    水压计ILPS28QSW开发(2)----水压检测

    本文将介绍如何使用 ILPS28QSW 传感器来读取的压强数据,来估算水下深度,可以利用液体静压的原理。对于水平地面的固体对地面产生的压强,由于压力大小等于重力,计算固体压力时一般都会先计算压力后计
    的头像 发表于 07-21 17:05 382次阅读
    <b class='flag-5'>水压计</b><b class='flag-5'>ILPS28QSW</b><b class='flag-5'>开发</b>(2)----<b class='flag-5'>水压</b>检测