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

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

3天内不再提示

LSM6DSV16X基于MLC智能笔动作识别(4)----中断获取智能笔状态

嵌入式单片机MCU开发 来源:嵌入式单片机MCU开发 作者:嵌入式单片机MCU开 2024-11-25 11:39 次阅读

概述

LSM6DSV16X 支持通过中断(INT)输出 MLC(机器学习核)识别的动作。具体来说,MLC 可以配置为在满足某些条件或机器学习分类结果发生变化时生成中断信号。 LSM6DSV16X 的机器学习核可以配置为在分类结果发生变化时生成中断,并且该中断信号可以路由到中断引脚(如 INT1 或 INT2)。系统可以在检测到动作时做出响应,而不需要持续轮询传感器,从而优化功耗和效率。

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

视频教学

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

样品申请

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

源码下载

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

硬件准备

首先需要准备一个开发板,这里我准备的是自己绘制的开发板,需要的可以进行申请。

主控为STM32H503CB,陀螺仪为LSM6DSV16X,磁力计为LIS2MDL。

开启INT中断

陀螺仪LSM6DSV16X的中断管脚接到了PA6,需要将PA6设置为中端口。

开启中断。

参考驱动程序

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

配置中断

MD1_CFG (5Eh) 寄存器用于将各种事件路由到 INT1 引脚。每个位代表不同的功能,通过设置这些位,你可以选择将哪些传感器事件输出到 INT1 引脚。下表详细描述了每个位的功能:
INT1_EMB_FUNC (bit 1):
● 用于将嵌入式功能事件(如机器学习或状态机的输出)路由到 INT1。

mian.c中定义变量。

/* USER CODE BEGIN 0 */
uint8_t mlc_flag = 0;
/* USER CODE END 0 */

mian.c中开启中断。

// Enable interrupt for MLC on INT1 pin
  lsm6dsv16x_pin_int_route_t pin_int;
    lsm6dsv16x_pin_int1_route_get(&dev_ctx, &pin_int);
  pin_int.emb_func = PROPERTY_ENABLE;
  lsm6dsv16x_pin_int1_route_set(&dev_ctx, &pin_int);

在stm32h5xx_it.c中添加回调函数引用。

/* USER CODE BEGIN 0 */
extern void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);


/* USER CODE END 0 */
处理PB0外部中断线0(EXTI Line0)的中断。  

/**
  * @brief This function handles EXTI Line0 interrupt.
  */
void EXTI0_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI0_IRQn 0 */
    HAL_GPIO_EXTI_Callback(INT1_Pin);
  /* USER CODE END EXTI0_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(INT1_Pin);
  /* USER CODE BEGIN EXTI0_IRQn 1 */

  /* USER CODE END EXTI0_IRQn 1 */
}

在main.c中添加回调函数的定义,检查中断是否由 GPIO_PIN_0引脚触发。

/* USER CODE BEGIN 4 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
    if(GPIO_Pin == GPIO_PIN_0)
    {
        mlc_flag=1;
        }    
}
/* USER CODE END 4 */

主程序

/* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    if(mlc_flag==1)
    {
        mlc_flag=0;
        lsm6dsv16x_mlc_handler();        
        if (event_catched != 0) 
        {

            printf("event_catched=%d",event_catched);
             // 握(0) 拍(1) 挥(2) 拍(3) 静(4) 止(5)
            switch(event_catched) 
            {
                    case 2:
                        event_catched = 0;

                        printf("闲置(Idle)rn");
                        break;
                    case 4:
                        event_catched = 0;

                        printf("书写(Writing)rn");
                        break;
                    case 8:
                        event_catched = 0;

                        printf("其他(other)rn");
                        break;
                    case 12:
                        event_catched = 0;

                        printf("静止(Steady)rn");
                        break;                    
                    default:break;
            }
            event_catched = 0;
        }        
    }    
    /* USER CODE END WHILE */

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

演示

静止状态如下。

闲置状态如下,手抓笔静止。

书写状态如下,移动笔进行识别判定。

其他如下,笔倒置。

审核编辑 黄宇

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

    关注

    0

    文章

    41

    浏览量

    17290
  • 智能笔
    +关注

    关注

    1

    文章

    15

    浏览量

    5355
收藏 人收藏

    评论

    相关推荐

    陀螺仪LSM6DSV16X与AI集成(1)----轮询获取陀螺仪数据

    会被转换为适当的单位并通过串行通信输出。这个代码是一个很好的起点,用于了解如何操作 LSM6DSV16X 传感器并获取其数据。
    的头像 发表于 12-18 10:49 1610次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(1)----轮询<b class='flag-5'>获取</b>陀螺仪数据

    陀螺仪LSM6DSV16X与AI集成(2)----姿态解算

    LSM6DSV16X包含三轴陀螺仪与三轴加速度计。
    的头像 发表于 12-18 10:51 2098次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(2)----姿态解算

    陀螺仪LSM6DSV16X与AI集成(3)----读取融合算法输出的四元数

    LSM6DSV16X 特性涉及到的是一种低功耗的传感器融合算法(Sensor Fusion Low Power, SFLP). 低功耗传感器融合(SFLP)算法:
    的头像 发表于 12-18 10:53 1148次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(3)----读取融合算法输出的四元数

    陀螺仪LSM6DSV16X与AI集成(7)----FIFO数据读取与配置

    LSM6DSV16X是一款高性能、低功耗的6轴IMU传感器,集成了3轴加速度计和3轴陀螺仪。本文将详细介绍如何配置和读取LSM6DSV16X传感器的FIFO数据,包括初始化、配置以及数据处理的完整流程, 以实现数据的批量处理和传
    的头像 发表于 07-18 10:40 1389次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(7)----FIFO数据读取与配置

    LSM6DSV16X基于MLC智能动作识别(2)----MLC数据采集

    MLC 是“机器学习核心”(Machine Learning Core)的缩写。在 LSM6DSV16X 传感器 中,MLC 是一种嵌入式功能,它使传感器能够直接运行基于决策树的机器学习算法。通过
    的头像 发表于 10-22 10:02 677次阅读
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>笔</b><b class='flag-5'>动作</b><b class='flag-5'>识别</b>(2)----<b class='flag-5'>MLC</b>数据采集

    LSM6DSV16X基于MLC智能动作识别(3)----MEMS Studio训练数据

    MEMS-Studio是一套完整的桌面软件解决方案,专为开发嵌入式AI功能、评估嵌入式库、分析数据,以及为整个MEMS传感器产品组合设计无代码算法而设计。这款独特的软件解决方案提供了多功能的开发环境,支持评估和编程所有MEMS传感器,此外还推出了新一代解决方案,以扩展Unico-GUI、Unicleo-GUI和AlgoBuilder等成熟应用程序的功能。
    的头像 发表于 11-25 11:28 334次阅读
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>笔</b><b class='flag-5'>动作</b><b class='flag-5'>识别</b>(3)----MEMS Studio训练数据

    陀螺仪LSM6DSV16X与AI集成(13)----中断获取SFLP四元数

    本文将介绍如何通过中断机制获取 LSM6DSV16X 传感器的 SFLP(Sensor Fusion Low Power)四元数数据。LSM6DSV16X 是一款高性能的
    的头像 发表于 11-25 11:44 416次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(13)----<b class='flag-5'>中断</b><b class='flag-5'>获取</b>SFLP四元数

    陀螺仪LSM6DSV16X与AI集成(14)----上报匿名上位机

    本文介绍了如何将 LSM6DSV16X 传感器的姿态数据通过匿名通信协议上报到上位机。通过获取传感器的四元数数据,并将其转换为欧拉角(Roll、Pitch、Yaw),然后按照协议格式化数据帧并通过
    的头像 发表于 11-25 11:53 431次阅读
    陀螺仪<b class='flag-5'>LSM6DSV16X</b>与AI集成(14)----上报匿名上位机

    请问lsm6dsv16x可以直接读取触摸手势吗?

    已经读出来了LSM6DSV16x的QVRmv值,也写出了单击的状态机。但是在写触摸滑动手势时没有找到好的计算方式。请问是不是有直接读出这些手势的函数?
    发表于 07-02 08:14

    请问LSM6DSV32XLSM6DSO32X是同一个封装吗?

    LSM6DSV32XLSM6DSO32X是同一个封装吗?
    发表于 12-14 07:19

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

    你好我想知道是否有在 LSM6DSV16X 中使用传感器融合低功耗算法的示例。我想检索当前的 Heading、Pitch 和 Roll 信息。或者我也很高兴有一个例子解释如何从 SFLP 中获取四元
    发表于 02-03 09:12

    LSM6DSOX MLC状态识别

    电子发烧友网站提供《LSM6DSOX MLC状态识别.pdf》资料免费下载
    发表于 07-31 15:14 0次下载
    <b class='flag-5'>LSM6</b>DSOX <b class='flag-5'>MLC</b><b class='flag-5'>状态</b><b class='flag-5'>识别</b>

    ST LSM6DSV16X iNEMO惯性模块相关的使用信息和应用提示

    AN5763,LSM6DSV16X是一款ST的3 轴加速度计和 3 轴陀螺仪; LSM6DSV16X 是系统级封装的 3 轴数字加速度计和 3 轴数字陀螺仪,具有数字 I²C、SPI 和 MIPI
    发表于 08-31 11:12 0次下载

    意法半导体新款MEMS IMU LSM6DSV32X实现精确姿态识别应用

    凭借3核、6轴传感架构,意法半导体新款MEMS IMU LSM6DSV32X能够进行卓越的边缘计算处理,是智能手机的高精度感测和3D地图、笔记本电脑和平板电脑的情境感知、AR和VR的精确姿态
    的头像 发表于 08-01 10:15 727次阅读

    LSM6DSV16X基于MLC智能动作识别(1)----轮询获取陀螺仪数据

    会被转换为适当的单位并通过串行通信输出。这个代码是一个很好的起点,用于了解如何操作 LSM6DSV16X 传感器并获取其数据。
    的头像 发表于 10-16 10:38 283次阅读
    <b class='flag-5'>LSM6DSV16X</b>基于<b class='flag-5'>MLC</b><b class='flag-5'>智能</b><b class='flag-5'>笔</b><b class='flag-5'>动作</b><b class='flag-5'>识别</b>(1)----轮询<b class='flag-5'>获取</b>陀螺仪数据