UM2225
用户手册
STM1Cube 的 X-CUBE-MEMS32 扩展中的 MotionEC 实时电子罗盘库入门
介绍
MotionEC 是 X-CUBE-MEMS1 软件的中间件库组件,运行在 STM3z2 上。它根据来自设备的数据提供有关设备方向和运动状态的实时信息。
它提供以下输出:设备方向(四元数、欧拉角)、设备旋转(虚拟陀螺仪功能)、重力矢量和线性加速度。
该库仅适用于 ST MEMS。
该算法以静态库格式提供,设计用于基于 ARM® Cortex®-M32+、ARM® Cortex®-M0、ARM® Cortex®-M3、ARM® Cortex®-M33 和 ARM® Cortex®-M4 架构的 STM7 微控制器。
它建立在 STM32Cube 软件技术之上,以简化不同 STM32 微控制器之间的移植。
软件自带samp在 NUCLEO-F01RE、NUCLEO-U3ZI-Q、NUCLEO-L4RE 或 NUCLEO-L1RZ 开发板上的 X-NUCLEO-IKS02A1、X-NUCLEO-IKS401A575 或 X-NUCLEO-IKS152A073 扩展板上运行的实现。
缩略语
表 1. 首字母缩略词列表
| 缩写 | 描述 |
| API | 应用程序编程接口 |
| 巴西石油公司 | 董事会支持包 |
| 图形用户界面 | 图形用户界面 |
| 哈尔 | 硬件抽象层 |
| 集成开发环境 | 整合开发环境 |
STM1Cube 的 X-CUBE-MEMS32 软件扩展中的 MotionEC 中间件库
2.1 MotionEC 的view
MotionEC 库扩展了 X-CUBE-MEMS1 软件的功能。
该库从加速度计和磁力计获取数据,并根据来自设备的数据提供有关设备方向和运动状态的信息。
该库专为 ST MEMS 设计。使用其他 MEMS 传感器时的功能和性能未进行分析,可能与文档中描述的显着不同。
作为amp该实现可在 X-NUCLEO-IKS01A3、X-NUCLEO-IKS4A1 和 X-NUCLEO-IKS02A1 扩展板上使用,安装在 NUCLEO-F401RE、NUCLEO-U575ZI-Q、NUCLEO-L152RE 或 NUCLEO-L073RZ 开发板上。
2.2 MotionEC 库
完整描述 MotionEC API 功能和参数的技术信息可在 MotionEC_Package.chm 编译的 HTML 中找到 file 位于文档文件夹中。
2.2.1 MotionEC 库描述
MotionEC 电子罗盘库管理从加速度计和磁力计获取的数据;其特点是:
- 设备方向(四元数、欧拉角)、设备旋转(虚拟陀螺仪功能)、重力矢量和线性加速度输出
- 仅基于加速度计和磁力计数据的功能
- 所需的加速度计和磁力计数据amp频率高达 100 Hz
- 资源要求:
– Cortex-M0+:3.7 kB 代码和 0.1 kB 数据内存
– Cortex-M3:3.8 kB 代码和 0.1 kB 数据存储器
– Cortex-M33:2.8 kB 代码和 0.1 kB 数据存储器
– Cortex-M4:2.9 kB 代码和 0.1 kB 数据存储器
– Cortex-M7:2.8 kB 代码和 0.1 kB 数据存储器 - 适用于 ARM Cortex M0+、Cortex-M3、Cortex-M33、Cortex-M4 和 Cortex M7 架构
2.2.2 MotionEC API
MotionEC API 包括:
- uint8_t MotionEC_GetLibVersion(char *版本)
– 检索库的版本
– *version 是一个指向 35 个字符数组的指针
– 返回版本字符串中的字符数
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type,浮点频率)
– 执行 MotionEC 库初始化和内部机制的设置。
– mcu_type 是 MCU 的类型:
◦ MFX_CM0P_MCU_STM32 是标准 STM32 MCU
◦ MFX_CM0P_MCU_BLUE_NRG1 是 BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 是 BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP 是 BlueNRG-LP
– 频率是传感器的amp频率 [Hz]
笔记: 在使用 E-Compass 库之前必须调用此函数,并且必须在使用该库之前启用 STM32 微控制器中的 CRC 模块(在 RCC 外设时钟使能寄存器中)
- void MotionEC_SetFrequency(浮点频率)
– 设置amp频率(修改滤波参数)
– 频率是传感器的amp频率 [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– 运行电子罗盘算法(加速度计和磁力计数据融合)
– *data_in 是指向具有输入数据的结构的指针
– 结构类型 MEC_input_t 的参数为:
◦ acc[3] 是 ENU 约定的加速度计数据数组,以 g 为单位
◦ mag[3] 是按照 ENU 约定校准的磁力计数据数组,以 μT/50 为单位
◦ deltatime s 是以 s 为单位测量的增量时间(即新旧数据集之间的时间延迟)
– *data_out 是指向具有输出数据的结构的指针
– 结构类型MEC_output_t的参数为:
◦ quaternion[4] 是包含 ENU 约定的四元数的数组,表示设备在空间中的三维角度方向;元素顺序为:X、Y、Z、W,其中 W 始终为正元素
◦ euler[3] 是 ENU 约定中的欧拉角数组,表示设备在空间中的 3D 角度方向;元素的顺序为:偏航、俯仰、横滚,以度为单位
◦ i_gyro[3] 是 ENU 约定的角速率数组,代表虚拟陀螺仪传感器,以 dps 为单位
◦gravity[3] 是 ENU 约定的加速度数组,表示重力矢量,以 g 为单位
◦ linear[3] 是 ENU 约定的加速度数组,表示设备线性加速度,以 g 为单位

- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– 获取欧拉角计算的启用/禁用状态
– *state 是指向当前启用/禁用状态的指针 - void MotionEC_SetOrientationEnable(MEC_state_t 状态)
– 设置欧拉角计算的启用/禁用状态
– state 是要设置的新启用/禁用状态 - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– 获取虚拟陀螺仪计算的启用/禁用状态
– *state 是指向当前启用/禁用状态的指针 - void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
– 设置虚拟陀螺仪计算的启用/禁用状态
– state 是要设置的新启用/禁用状态 - void MotionEC_GetGravityEnable(MEC_state_t *state)
– 获取重力矢量计算的启用/禁用状态
– *state 是指向当前启用/禁用状态的指针 - void MotionEC_SetGravityEnable(MEC_state_t 状态)
– 设置重力矢量计算的启用/禁用状态
– state 是要设置的新启用/禁用状态 - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– 获取线性加速度计算的启用/禁用状态
– *state 是指向当前启用/禁用状态的指针 - void MotionEC_SetLinearAccEnable(MEC_state_t state)
– 设置线性加速度计算的启用/禁用状态
– state 是要设置的新启用/禁用状态
2.2.3 API流程图

2.2.4 演示代码
以下演示代码从加速度计和磁力计传感器读取数据并获取电子罗盘数据(即四元数、欧拉角等)。


2.2.5 算法性能
电子罗盘算法仅使用来自加速度计和磁力计的数据。它以低频率(最高 100 Hz)运行以降低功耗。

Samp申请
MotionEC 中间件可以轻松操作以构建用户应用程序;amp应用程序文件夹中提供了该应用程序。
它设计用于连接到 X-NUCLEO-IKS401A575、X-NUCLEO-IKS152A073 或 X-NUCLEO-IKS01A3 扩展板的 NUCLEO-F4RE、NUCLEO-U1ZI-Q、NUCLEO-L02RE 或 NUCLEO-L1RZ 开发板上运行。

该应用程序可实时识别设备方向和旋转。数据可通过 GUI 显示。
该算法提供以下输出:设备方向(四元数、欧拉角)、设备旋转(虚拟陀螺仪功能)、重力矢量和线性加速度。
3.1 MEMS-Studio 应用程序
在Samp本应用程序使用 MEMS-Studio 应用程序,可从以下网址下载 www.st.com.
步骤 1. 确保安装了必要的驱动程序,并且带有适当扩展板的 STM32 Nucleo 开发板已连接到 PC。
步骤 2. 启动 MEMS-Studio 应用程序以打开主应用程序窗口。
如果将带有受支持固件的 STM32 Nucleo 开发板连接到 PC,则会自动检测相应的 COM 端口。按 [连接] 按钮建立与评估板的连接。

步骤 3. 当连接到具有支持固件的 STM32 Nucleo 开发板时,[库评估] 选项卡将打开。
要启动和停止数据流,请切换相应的[开始]
或[停止]
外部垂直工具栏上的按钮。
来自连接的传感器的数据可以是 view选择内侧垂直工具栏上的[数据表]选项卡。

步骤 4。点击[电子罗盘]可打开该图书馆的专用页面。

上图为STM32 Nucleo图形模型,模型方向和旋转基于算法计算的电子罗盘数据(四元数)。
为了使真实设备移动与图形模型对齐,请将设备指向屏幕并按下[重置模型]。
航向值代表真实的设备航向。
将设备垂直向上或向下(沿 ENU 参考系的向上轴,公差为 ±5 度)会给出航向的 N/A 值:无法区分设备指向哪个基点。
优度值给出0到3个值,与磁力计校准有关:值越高,电子罗盘数据算法的结果越好。
步骤 5。点击[保存至 File] 打开数据记录配置窗口。选择要保存在 file。您可以通过点击相应的按钮来开始或停止保存。

步骤6. 数据注入模式可用于将之前获取的数据发送到库并接收结果。选择垂直工具栏上的[数据注入]选项卡,打开专用 view 以实现该功能。

步骤7. 点击[浏览]按钮选择 file 使用先前捕获的 CSV 格式的数据。
数据将加载到当前表中 view.
其他按钮将变为活动状态。您可以点击:
– [离线模式] 按钮用于打开/关闭固件离线模式(利用先前捕获的数据的模式)。
– [开始]/[停止]/[步骤]/[重复]按钮用于控制从 MEMS-Studio 到库的数据馈送。
参考
以下所有资源均可在www.st.com上免费获取。
- UM1859:STM1Cube 的 X-CUBE-MEMS32 运动 MEMS 和环境传感器软件扩展入门
- UM1724:STM32 Nucleo-64 板 (MB1136)
- UM3233:MEMS-Studio 入门
修订历史
表 4. 文档修订历史
| 日期 | 版本 | 更改 |
| 18 年 17 月 XNUMX 日 | 1 | 初始版本。 |
| 25 年 18 月 XNUMX 日 | 2 | 增加了对 NUCLEO-L152RE 开发板和表 2 的参考。 经过时间(μs)算法。 |
| 21 年 18 月 XNUMX 日 | 3 | 更新了简介和第 2.1 节 MotionECview. |
| 26 年 18 月 XNUMX 日 | 4 | 添加了表 3。Cortex -M0+:耗时(µs)算法。添加了对 ARM® 的引用 Cortex® – M0+ 和 NUCLEO-L073RZ 开发板。 |
| 19 年 19 月 XNUMX 日 | 5 | 更新了图 1、ENU 参考框架、表 2。Cortex -M4 和 Cortex-M3:经过时间 (µs) 算法、表 3。 Cortex -M0+:经过时间(µs)算法,图 3. 连接到 STM32 的传感器扩展板适配器 Nucleo,图 4. Unicleo 主窗口,图 5. 用户消息选项卡,图 6. 电子罗盘窗口和图 7. 数据记录窗口。添加了 X-NUCLEO-IKS01A3 扩展板兼容性信息。 |
| 25 年 20 月 XNUMX 日 | 6 | 更新了简介、第 2.2.1 节:MotionEC 库描述和第 2.2.5 节:算法性能。 添加了 ARM Cortex-M7 架构兼容性信息。 |
| 17 年 24 月 XNUMX 日 | 7 | 更新了章节简介, 第 2.1 节:MotionECview, 2.2.1 节:MotionEC 库 描述,第 2.2.2 节:MotionEC API,第 2.2.5 节:算法 性能,第 3 节:Sample 应用程序,第 3.1 节:MEMS-Studio 应用程序 |
重要通知——请仔细阅读
STMicroelectronics NV 及其子公司 (“ST”) 保留随时更改、更正、增强、修改和改进 ST 产品和/或本文档的权利,恕不另行通知。购买者应在下订单前获取有关 ST 产品的最新相关信息。ST 产品根据订单确认时有效的 ST 销售条款和条件销售。
购买者对 ST 产品的选择、挑选和使用负全部责任,ST 对应用协助或购买者产品的设计不承担任何责任。
ST 在此不授予任何明示或暗示的知识产权许可。
如果转售的 ST 产品的规定与此处所述的信息不同,则 ST 对该产品授予的任何保证将失效。
ST 和 ST 徽标是 ST 的商标。有关 ST 商标的更多信息,请参阅 www.st.com/trademarks. 所有其他产品或服务名称均属于其各自所有者的财产。
本文档中的信息取代并替换了该文档之前任何版本中提供的信息。
© 2024 STMicroelectronics – 保留所有权利
文件/资源
![]() |
ST X-CUBE-MEMS1 MotionEC 是一个中间件库 [pdf] 用户手册 X-CUBE-MEMS1 MotionEC 是一个中间件库, X-CUBE-MEMS1, MotionEC 是一个中间件库, 中间件库, 库 |




