0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

陀螺儀LSM6DSV16X與AI集成(4)----Qvar觸摸電容配置

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2023-12-18 10:55 ? 次閱讀

概述

Qvar,全稱為電荷變化檢測(cè)(Qvar stands for "Quasi-static VARiation"),是一種用于檢測(cè)電荷變化的技術(shù)。這種技術(shù)通常用于傳感器和其他電子設(shè)備中,特別是在慣性測(cè)量單元(IMU)和微機(jī)電系統(tǒng)(MEMS)技術(shù)中。Qvar 技術(shù)可以用于檢測(cè)微小的電荷變化,這些變化可能是由于物理運(yùn)動(dòng)、環(huán)境變化或其他因素導(dǎo)致的。 在 LSM6DSV16X 這類先進(jìn)的 IMU 中,Qvar 技術(shù)用于增強(qiáng)用戶界面功能,如輕觸、雙擊、三擊、長(zhǎng)按或滑動(dòng)手勢(shì)。它通過檢測(cè)和解析與這些手勢(shì)相關(guān)的微小電荷變化,來實(shí)現(xiàn)高度精準(zhǔn)和靈敏的用戶交互。 最近在弄ST和瑞薩RA的課程,需要樣片的可以加群申請(qǐng):615061293 。

視頻教學(xué)

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

樣品申請(qǐng)

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

源碼下載

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

生成STM32CUBEMX

用STM32CUBEMX生成例程,這里使用MCU為STM32WB55RG。 配置時(shí)鐘樹,配置時(shí)鐘為32M。

串口配置

查看原理圖,PB6和PB7設(shè)置為開發(fā)板的串口。

配置串口。

IIC配置

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

CS和SA0設(shè)置

串口重定向

打開魔術(shù)棒,勾選MicroLIB

在main.c中,添加頭文件,若不添加會(huì)出現(xiàn) identifier "FILE" is undefined報(bào)錯(cuò)。

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

函數(shù)聲明和串口重定向:

/* 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/lsm6dsv16x-pid/tree/main

初始換管腳

由于需要向LSM6DSV16X_I2C_ADD_L寫入以及為IIC模式。

所以使能CS為高電平,配置為IIC模式。 配置SA0為高電平。

printf("123123123");
  lsm6dsv16x_reset_t rst;
  stmdev_ctx_t dev_ctx;
  /* Initialize mems driver interface */
  dev_ctx.write_reg = platform_write;
  dev_ctx.read_reg = platform_read;
  dev_ctx.handle = &SENSOR_BUS;


  HAL_GPIO_WritePin(CS_GPIO_Port, CS_Pin, GPIO_PIN_SET);
  HAL_GPIO_WritePin(SA0_GPIO_Port, SA0_Pin, GPIO_PIN_RESET);

獲取ID

可以向WHO_AM_I (0Fh)獲取固定值,判斷是否為0x70。

lsm6dsv16x_device_id_get為獲取函數(shù)。

對(duì)應(yīng)的獲取ID驅(qū)動(dòng)程序,如下所示。

/* Wait sensor boot time */
  platform_delay(BOOT_TIME);
  /* Check device ID */
  lsm6dsv16x_device_id_get(&dev_ctx, &whoamI);
    printf("LSM6DSV16X_ID=0x%x,whoamI=0x%x",LSM6DSV16X_ID,whoamI);
  if (whoamI != LSM6DSV16X_ID)
    while (1);

復(fù)位操作

可以向CTRL3 (12h)的SW_RESET寄存器寫入1進(jìn)行復(fù)位。

lsm6dsv16x_reset_set為重置函數(shù)。

對(duì)應(yīng)的驅(qū)動(dòng)程序,如下所示。

/* Restore default configuration */
  lsm6dsv16x_reset_set(&dev_ctx, LSM6DSV16X_RESTORE_CTRL_REGS);
  do {
    lsm6dsv16x_reset_get(&dev_ctx, &rst);
  } while (rst != LSM6DSV16X_READY);

BDU設(shè)置

在很多傳感器中,數(shù)據(jù)通常被存儲(chǔ)在輸出寄存器中,這些寄存器分為兩部分:MSB和LSB。這兩部分共同表示一個(gè)完整的數(shù)據(jù)值。例如,在一個(gè)加速度計(jì)中,MSB和LSB可能共同表示一個(gè)加速度的測(cè)量值。 連續(xù)更新模式(BDU = '0'):在默認(rèn)模式下,輸出寄存器的值會(huì)持續(xù)不斷地被更新。這意味著在你讀取MSB和LSB的時(shí)候,寄存器中的數(shù)據(jù)可能會(huì)因?yàn)樾碌臏y(cè)量數(shù)據(jù)而更新。這可能導(dǎo)致一個(gè)問題:當(dāng)你讀取MSB時(shí),如果寄存器更新了,接下來讀取的LSB可能就是新的測(cè)量值的一部分,而不是與MSB相對(duì)應(yīng)的值。這樣,你得到的就是一個(gè)“拼湊”的數(shù)據(jù),它可能無法準(zhǔn)確代表任何實(shí)際的測(cè)量時(shí)刻。 塊數(shù)據(jù)更新(BDU)模式(BDU = '1'):當(dāng)激活BDU功能時(shí),輸出寄存器中的內(nèi)容不會(huì)在讀取MSB和LSB之間更新。這就意味著一旦開始讀取數(shù)據(jù)(無論是先讀MSB還是LSB),寄存器中的那一組數(shù)據(jù)就被“鎖定”,直到兩部分都被讀取完畢。這樣可以確保你讀取的MSB和LSB是同一測(cè)量時(shí)刻的數(shù)據(jù),避免了讀取到代表不同采樣時(shí)刻的數(shù)據(jù)。 簡(jiǎn)而言之,BDU位的作用是確保在讀取數(shù)據(jù)時(shí),輸出寄存器的內(nèi)容保持穩(wěn)定,從而避免讀取到拼湊或錯(cuò)誤的數(shù)據(jù)。這對(duì)于需要高精度和穩(wěn)定性的應(yīng)用尤為重要。 可以向CTRL3 (12h)的BDU寄存器寫入1進(jìn)行開啟。

對(duì)應(yīng)的驅(qū)動(dòng)程序,如下所示。

/* Enable Block Data Update */
  lsm6dsv16x_block_data_update_set(&dev_ctx, PROPERTY_ENABLE);

Qvar 功能的實(shí)現(xiàn)和配置

  1. Qvar 傳感器功能: ○ LSM6DSV16X 內(nèi)置了 Qvar 傳感器,能夠檢測(cè)連接到設(shè)備的外部電極附近的電荷變化。
  2. 激活 Qvar 功能: ○ 通過設(shè)置 CTRL7(16h)寄存器中的 AH_QVAR_EN 位為 1,可以激活 Qvar 通道。
  3. 加速度計(jì)設(shè)置要求: ○ 當(dāng)啟用 Qvar 通道時(shí),加速度計(jì)必須設(shè)置為高性能模式或正常模式。
  4. 數(shù)據(jù)準(zhǔn)備信號(hào): ○ Qvar 數(shù)據(jù)準(zhǔn)備好的信號(hào)由 STATUS_REG(1Eh)寄存器中的 AH_QVARDA 位表示。這個(gè)信號(hào)可以通過設(shè)置 CTRL7(16h)寄存器中的 INT2_DRDY_AH_QVAR 位為 1,來驅(qū)動(dòng)到 INT2 引腳。
  5. Qvar 數(shù)據(jù)輸出: ○ Qvar 數(shù)據(jù)以 16 位二進(jìn)制補(bǔ)碼形式提供,在 AH_QVAR_OUT_L(3Ah)和 AH_QVAR_OUT_H(3Bh)寄存器中以固定 240 Hz 的速率輸出。
  6. 數(shù)據(jù)處理: ○ Qvar 數(shù)據(jù)也可以被機(jī)器學(xué)習(xí)核心(MLC)/有限狀態(tài)機(jī)(FSM)邏輯處理。
  7. 接口模式限制: ○ Qvar 功能僅在 I2C 接口的模式 1 連接模式下可用。當(dāng)使用 Qvar 時(shí),不支持 I2C 主接口(模式 2)和輔助 SPI(模式 3)。
  8. 外部電極連接: ○ 外部電極需要連接到引腳 2(SDx/AH1/Qvar1)和/或引腳 3(SCx/AH2/Qvar2)。
  9. 輸入阻抗選擇: ○ 通過在 CTRL7(16h)寄存器中適當(dāng)設(shè)置 AH_QVAR_C_ZIN_[1:0] 位,可以選擇 Qvar 緩沖器的等效輸入阻抗。

設(shè)置量程和速率

速率可以通過CTRL1 (10h)設(shè)置加速度速率。

設(shè)置加速度量程可以通過CTRL8 (17h)進(jìn)行設(shè)置。

設(shè)置加速度的量程和速率可以使用如下函數(shù)。

lsm6dsv16x_xl_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_15Hz);
  lsm6dsv16x_xl_full_scale_set(&dev_ctx, LSM6DSV16X_2g);

配置過濾鏈

/* Configure filtering chain */
  filt_settling_mask.drdy = PROPERTY_ENABLE;
  filt_settling_mask.irq_xl = PROPERTY_ENABLE;
  filt_settling_mask.irq_g = PROPERTY_ENABLE;
  lsm6dsv16x_filt_settling_mask_set(&dev_ctx, filt_settling_mask);
  lsm6dsv16x_filt_xl_lp2_set(&dev_ctx, PROPERTY_ENABLE);
  lsm6dsv16x_filt_xl_lp2_bandwidth_set(&dev_ctx, LSM6DSV16X_XL_STRONG);

激活 Qvar 功能

通過設(shè)置 CTRL7(16h)寄存器中的 AH_QVAR_EN 位為 1,可以激活 Qvar 通道。

/* Enable AH/QVAR function */
  qvar_mode.ah_qvar_en = 1;
  lsm6dsv16x_ah_qvar_mode_set(&dev_ctx, qvar_mode);

獲取Qvar數(shù)據(jù)

可以通過STATUS_REG (1Eh)的AH_QVARDA獲取數(shù)據(jù)是否準(zhǔn)備好。

Qvar 數(shù)據(jù)以 16 位二進(jìn)制補(bǔ)碼形式提供,在 AH_QVAR_OUT_L(3Ah)和 AH_QVAR_OUT_H(3Bh)寄存器中以固定 240 Hz 的速率輸出。

/* Read output only if new values are available */
    lsm6dsv16x_all_sources_get(&dev_ctx, &all_sources);
    if ( all_sources.drdy_ah_qvar ) {
      lsm6dsv16x_ah_qvar_raw_get(&dev_ctx, &data);
            printf("QVAR [mV]:%6.2frn", lsm6dsv16x_from_lsb_to_mv(data));

    }        
        HAL_Delay(10);

演示

觸摸上按鍵。

觸摸下按鍵。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50445

    瀏覽量

    751031
  • mems
    +關(guān)注

    關(guān)注

    129

    文章

    3885

    瀏覽量

    190217
  • 陀螺儀
    +關(guān)注

    關(guān)注

    44

    文章

    776

    瀏覽量

    98488
  • AI
    AI
    +關(guān)注

    關(guān)注

    87

    文章

    29805

    瀏覽量

    268098
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    陀螺儀LSM6DSV16XAI集成(1)----輪詢獲取陀螺儀數(shù)據(jù)

    本文將介紹如何使用 LSM6DSV16X 傳感器來讀取數(shù)據(jù)。主要步驟包括初始化傳感器接口、驗(yàn)證設(shè)備ID、配置傳感器的數(shù)據(jù)輸出率和濾波器,以及通過輪詢方式持續(xù)讀取加速度、角速率和溫度數(shù)據(jù)。讀取到的數(shù)據(jù)
    的頭像 發(fā)表于 12-18 10:49 ?1512次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(1)----輪詢獲取<b class='flag-5'>陀螺儀</b>數(shù)據(jù)

    陀螺儀LSM6DSV16XAI集成(2)----姿態(tài)解算

    LSM6DSV16X包含三軸陀螺儀與三軸加速度計(jì)。
    的頭像 發(fā)表于 12-18 10:51 ?2027次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(2)----姿態(tài)解算

    陀螺儀LSM6DSV16XAI集成(3)----讀取融合算法輸出的四元數(shù)

    LSM6DSV16X 特性涉及到的是一種低功耗的傳感器融合算法(Sensor Fusion Low Power, SFLP). 低功耗傳感器融合(SFLP)算法:
    的頭像 發(fā)表于 12-18 10:53 ?1088次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(3)----讀取融合算法輸出的四元數(shù)

    陀螺儀LSM6DSV16XAI集成(7)----FIFO數(shù)據(jù)讀取與配置

    LSM6DSV16X是一款高性能、低功耗的6軸IMU傳感器,集成了3軸加速度計(jì)和3軸陀螺儀。本文將詳細(xì)介紹如何配置和讀取
    的頭像 發(fā)表于 07-18 10:40 ?1295次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(7)----FIFO數(shù)據(jù)讀取與<b class='flag-5'>配置</b>

    陀螺儀LSM6DSV16XAI集成(11)----融合磁力計(jì)進(jìn)行姿態(tài)解算

    MotionFX庫(kù)包含用于校準(zhǔn)陀螺儀、加速度計(jì)和磁力計(jì)傳感器的例程。 將磁力計(jì)的數(shù)據(jù)與加速度計(jì)和陀螺儀的數(shù)據(jù)融合,可以大幅提高姿態(tài)估計(jì)的精度。三軸加速度計(jì)提供設(shè)備的傾斜信息,陀螺儀提供角速度信息,而磁力計(jì)提供方位信息,三者結(jié)合可
    的頭像 發(fā)表于 09-06 16:57 ?1770次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(11)----融合磁力計(jì)進(jìn)行姿態(tài)解算

    LSM6DSV16X基于MLC智能筆動(dòng)作識(shí)別(2)----MLC數(shù)據(jù)采集

    MLC 是“機(jī)器學(xué)習(xí)核心”(Machine Learning Core)的縮寫。在 LSM6DSV16X 傳感器 中,MLC 是一種嵌入式功能,它使傳感器能夠直接運(yùn)行基于決策樹的機(jī)器學(xué)習(xí)算法。通過
    的頭像 發(fā)表于 10-22 10:02 ?613次閱讀
    <b class='flag-5'>LSM6DSV16X</b>基于MLC智能筆動(dòng)作識(shí)別(2)----MLC數(shù)據(jù)采集

    請(qǐng)問lsm6dsv16x可以直接讀取觸摸手勢(shì)嗎?

    已經(jīng)讀出來了LSM6DSV16x的QVRmv值,也寫出了單擊的狀態(tài)機(jī)。但是在寫觸摸滑動(dòng)手勢(shì)時(shí)沒有找到好的計(jì)算方式。請(qǐng)問是不是有直接讀出這些手勢(shì)的函數(shù)?
    發(fā)表于 07-02 08:14

    求助,是否有在LSM6DSV16X中使用傳感器融合低功耗算法的示例

    你好我想知道是否有在 LSM6DSV16X 中使用傳感器融合低功耗算法的示例。我想檢索當(dāng)前的 Heading、Pitch 和 Roll 信息?;蛘呶乙埠芨吲d有一個(gè)例子解釋如何從 SFLP 中獲取四元
    發(fā)表于 02-03 09:12

    新品情報(bào)|STMicroelectronics全新LSM6DSV16BX運(yùn)動(dòng)+骨傳導(dǎo)傳感器

    。以下是本周新品情報(bào),請(qǐng)及時(shí)查收: 運(yùn)動(dòng)/骨傳導(dǎo)二合一 STMicroelectronics?LSM6DSV16BX iNEMO三軸加速度計(jì)和陀螺儀 貿(mào)澤電子即日起
    的頭像 發(fā)表于 05-17 10:35 ?1043次閱讀
    新品情報(bào)|STMicroelectronics全新<b class='flag-5'>LSM6DSV16</b>BX運(yùn)動(dòng)+骨傳導(dǎo)傳感器

    基于ST LSM6DSV16BX多功能MEMS Sensor的TWS方案

    ST 適時(shí)推出多功能MEMS Sensor LSM6DSV16BX,在2.5 mm x 3.0 mm x 0.71 mm的封裝里集成了3 軸加速度計(jì)和3軸
    的頭像 發(fā)表于 09-06 17:10 ?1843次閱讀
    基于ST <b class='flag-5'>LSM6DSV16</b>BX多功能MEMS Sensor的TWS方案

    ST LSM6DSV16X iNEMO慣性模塊相關(guān)的使用信息和應(yīng)用提示

    AN5763,LSM6DSV16X是一款ST的3 軸加速度計(jì)和 3 軸陀螺儀; LSM6DSV16X 是系統(tǒng)級(jí)封裝的 3 軸數(shù)字加速度計(jì)和 3 軸數(shù)字陀螺儀,具有數(shù)字 I2C、SPI
    發(fā)表于 08-31 11:12 ?0次下載

    陀螺儀LSM6DSV16XAI集成(5)----6D方向檢測(cè)功能

    、4.Y軸反向旋轉(zhuǎn)、5.Z軸正向旋轉(zhuǎn)、6.Z軸反向旋轉(zhuǎn) 通過檢測(cè)陀螺儀在每個(gè)方向上的旋轉(zhuǎn),可以確定物體的旋轉(zhuǎn)姿態(tài)和方向,從而用于導(dǎo)航、飛行控制等應(yīng)用。
    的頭像 發(fā)表于 01-09 16:14 ?996次閱讀
    <b class='flag-5'>陀螺儀</b><b class='flag-5'>LSM6DSV16X</b>與<b class='flag-5'>AI</b><b class='flag-5'>集成</b>(5)----<b class='flag-5'>6</b>D方向檢測(cè)功能

    意法半導(dǎo)體推出一款LSM6DSV32X 6軸慣性模塊(IMU)

    意法半導(dǎo)體的LSM6DSV32X 6軸慣性模塊(IMU)集成一個(gè)滿量程32g的大加速度計(jì)和一個(gè)滿量程4000度每秒(dps)的陀螺儀,可測(cè)量高強(qiáng)度的運(yùn)動(dòng)和撞擊,包括自由落體高度估算。
    的頭像 發(fā)表于 05-09 10:35 ?749次閱讀

    意法半導(dǎo)體發(fā)布LSM6DSV32X 6軸慣性模塊

    意法半導(dǎo)體近日發(fā)布了其最新的LSM6DSV32X 6軸慣性模塊(IMU),該模塊集成了高性能的加速度計(jì)和陀螺儀。加速度計(jì)的最大量程達(dá)到32g,而陀螺
    的頭像 發(fā)表于 05-13 09:59 ?592次閱讀

    LSM6DSV16X基于MLC智能筆動(dòng)作識(shí)別(1)----輪詢獲取陀螺儀數(shù)據(jù)

    本文將介紹如何使用 LSM6DSV16X 傳感器來讀取數(shù)據(jù)。主要步驟包括初始化傳感器接口、驗(yàn)證設(shè)備ID、配置傳感器的數(shù)據(jù)輸出率和濾波器,以及通過輪詢方式持續(xù)讀取加速度、角速率和溫度數(shù)據(jù)。讀取到的數(shù)據(jù)
    的頭像 發(fā)表于 10-16 10:38 ?225次閱讀
    <b class='flag-5'>LSM6DSV16X</b>基于MLC智能筆動(dòng)作識(shí)別(1)----輪詢獲取<b class='flag-5'>陀螺儀</b>數(shù)據(jù)