MLC 是“机器学习核心”(Machine Learning Core)的缩写。在 LSM6DSV16X 传感器 中,MLC 是一种嵌入式功能,它使传感器能够直接运行基于决策树的机器学习算法。通过这种功能,传感器可以独立完成诸如活动识别、运动强度检测和误报过滤等任务,而无需将数据处理转交给外部的微控制器。MLC 通过处理来自加速度计、陀螺仪或外部传感器的数据,计算统计参数、应用滤波器,并将分类结果输出到专用寄存器中(AN5804)。
最近在弄ST的课程,需要样片的可以加群申请:615061293 。
[https://www.bilibili.com/video/BV14V45eyEh9/]
[https://www.wjx.top/vm/OhcKxJk.aspx#]
[https://download.csdn.net/download/qq_24312945/89838597]
在 AN5804 文档的 Table 1. Machine learning core output data rates 中,表格列出了机器学习核心(MLC)的输出数据速率(ODR),用于配置 MLC 数据生成的频率。
具体来说,MLC 的输出数据速率决定了机器学习核心处理传感器数据并输出结果的频率。不同的应用场景可能需要不同的速率来平衡功耗和性能。这个表格的目的是让用户根据应用需求选择合适的输出数据速率。
根据 AN5804 第三页的描述,LSM6DSV16X 传感器的 机器学习核心(MLC) 的流程可以分为以下几个步骤:
设置了加速度计和陀螺仪的输出数据速率(ODR)为480Hz,这将使传感器以较高的速率采样数据。这种设置适用于需要高动态精度的应用场景,比如需要精确跟踪快速运动的应用。
lsm6dsv16x_xl_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
lsm6dsv16x_gy_data_rate_set(&dev_ctx, LSM6DSV16X_ODR_AT_480Hz);
量程和分辨率的平衡:较大的量程适合高速动态的应用,但会降低测量的分辨率。如果你需要检测较小的变化或在低动态场景下使用,建议选择较小的量程,以获得更高的精度。
与MLC配合使用:如果你使用这些数据进行机器学习核心(MLC)的处理,确保量程设置适当,以便捕捉到足够的动态数据,同时保持数据的分辨率。
lsm6dsv16x_xl_full_scale_set(&dev_ctx, LSM6DSV16X_2g);
lsm6dsv16x_gy_full_scale_set(&dev_ctx, LSM6DSV16X_125dps);
铅笔运动检测应用的构建,检测的四种不同场景(类别)。
加速度计 的数据单位为 mg。
陀螺仪 的数据单位为 dps。
陀螺仪数据也可以导入mdps。
轮询获取数据,使用串口打印传感器的数据,依次是ACC_X、ACC_Y 、ACC_Z、GYR_X、GYR_Y、GYR_Z。
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
lsm6dsv16x_data_ready_t drdy;
/* Read output only if new xl value is available */
lsm6dsv16x_flag_data_ready_get(&dev_ctx, &drdy);
if (drdy.drdy_xl & drdy.drdy_gy)
{
memset(data_raw_acceleration, 0x00, 3 * sizeof(int16_t));
memset(data_raw_angular_rate, 0x00, 3 * sizeof(int16_t));
lsm6dsv16x_acceleration_raw_get(&dev_ctx, data_raw_acceleration);
lsm6dsv16x_angular_rate_raw_get(&dev_ctx, data_raw_angular_rate);
acceleration_mg[0] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[0]);
acceleration_mg[1] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[1]);
acceleration_mg[2] = lsm6dsv16x_from_fs2_to_mg(data_raw_acceleration[2]);
angular_rate_mdps[0] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[0]);
angular_rate_mdps[1] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[1]);
angular_rate_mdps[2] = lsm6dsv16x_from_fs125_to_mdps(data_raw_angular_rate[2]);
printf("%4.2ft%4.2ft%4.2ft%4.2ft%4.2ft%4.2ftrn",
acceleration_mg[0], acceleration_mg[1], acceleration_mg[2],
angular_rate_mdps[0], angular_rate_mdps[1], angular_rate_mdps[2]);
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
将采集到的数据保存。
器件放置在桌子上。
最好多几个方向。
这里采集4组数据。
器件在手中不动。
采集多几个方位数据。
这里采集4组数据。
笔在手中并在书写。
这里采集4组数据。
未被其他类别覆盖的情况。
可以采集例如逆时针数据。
这里采集4组数据。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !