UM2225
Руководство пользователя
Начало работы с библиотекой MotionEC Real-time E-Compass в расширении X-CUBE-MEMS1 для STM32Cube
Введение
MotionEC — это компонент библиотеки промежуточного программного обеспечения X-CUBE-MEMS1, работающий на STM3z2. Он предоставляет информацию в реальном времени об ориентации устройства и состоянии движения на основе данных с устройства.
Он обеспечивает следующие выходные данные: ориентация устройства (кватернионы, углы Эйлера), вращение устройства (функциональность виртуального гироскопа), вектор силы тяжести и линейное ускорение.
Эта библиотека предназначена для работы только с ST MEMS.
Алгоритм представлен в формате статической библиотеки и предназначен для использования на микроконтроллерах STM32 на базе архитектур ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 и ARM® Cortex®-M7.
Он построен на основе программной технологии STM32Cube для облегчения переносимости между различными микроконтроллерами STM32.
Программное обеспечение поставляется сampРеализация le работает на плате расширения X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 или X-NUCLEO-IKS02A1 на плате разработки NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE или NUCLEO-L073RZ.
Акронимы и Аббревиатуры
Таблица 1. Список сокращений
Акроним | Описание |
API | Интерфейс прикладного программирования |
БСП | Пакет поддержки платы |
графический интерфейс | Графический пользовательский интерфейс |
ХЭЛ | Уровень аппаратной абстракции |
ИДЕ | Интегрированная среда развития |
Библиотека промежуточного программного обеспечения MotionEC в программном расширении X-CUBE-MEMS1 для STM32Cube
2.1 ДвижениеEC поview
Библиотека MotionEC расширяет функциональность программного обеспечения X-CUBE-MEMS1.
Библиотека получает данные с акселерометра и магнитометра и предоставляет информацию об ориентации устройства и состоянии движения на основе данных с устройства.
Библиотека предназначена только для ST MEMS. Функциональность и производительность при использовании других МЭМС-сенсоров не анализируются и могут существенно отличаться от описанных в документе.
КакampРеализация le доступна на плате расширения X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 и X-NUCLEO-IKS02A1, установленной на плате разработки NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE или NUCLEO-L073RZ.
2.2 Библиотека MotionEC
Техническую информацию, полностью описывающую функции и параметры API MotionEC, можно найти в скомпилированном HTML-файле MotionEC_Package.chm. file находится в папке «Документация».
2.2.1 Описание библиотеки MotionEC
Библиотека MotionEC E-Compass управляет данными, полученными с акселерометра и магнитометра. Она включает в себя:
- ориентация устройства (кватернионы, углы Эйлера), вращение устройства (функциональность виртуального гироскопа), выходные данные вектора силы тяжести и линейного ускорения
- функциональность основана только на данных акселерометра и магнитометра
- необходимые данные акселерометра и магнитометраampчастота лининга до 100 Гц
- требования к ресурсам:
– Cortex-M0+: 3.7 кБ кода и 0.1 кБ памяти данных
– Cortex-M3: 3.8 кБ кода и 0.1 кБ памяти данных
– Cortex-M33: 2.8 кБ кода и 0.1 кБ памяти данных
– Cortex-M4: 2.9 кБ кода и 0.1 кБ памяти данных
– Cortex-M7: 2.8 кБ кода и 0.1 кБ памяти данных - доступно для архитектур ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 и Cortex M7
2.2.2 API MotionEC
API-интерфейсы MotionEC:
- uint8_t MotionEC_GetLibVersion(char *version)
– извлекает версию библиотеки
– *версия – указатель на массив из 35 символов
– возвращает количество символов в строке версии
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– выполняет инициализацию библиотеки MotionEC и настройку внутреннего механизма.
– mcu_type – тип микроконтроллера:
◦ MFX_CM0P_MCU_STM32 — стандартный микроконтроллер STM32
◦ MFX_CM0P_MCU_BLUE_NRG1 — это BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 — это BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP — это BlueNRG -LP
– частота датчика sampчастота линга [Гц]
Примечание: Эту функцию необходимо вызвать перед использованием библиотеки E-Compass, а модуль CRC в микроконтроллере STM32 (в регистре включения периферийных часов RCC) необходимо включить перед использованием библиотеки.
- void MotionEC_SetFrequency(плавающая частота)
– устанавливает sampчастота линга (изменение параметров фильтрации)
– частота датчика sampчастота ling [Гц] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– запускает алгоритм E-Compass (объединение данных акселерометра и магнитометра)
– *data_in – указатель на структуру с входными данными
– параметры для типа структуры MEC_input_t:
◦ acc[3] — массив данных акселерометра в системе ENU, измеряемый в g
◦ mag[3] — массив данных, откалиброванных магнитометром в соответствии с конвенцией ENU, измеряемый в мкТл/50
◦ deltatime s — это дельта-время (т.е. задержка между старым и новым набором данных), измеряемая в с
– *data_out – указатель на структуру с выходными данными
– параметры для типа структуры MEC_output_t:
◦ quaternion[4] — массив, содержащий кватернион в соответствии с соглашением ENU, представляющий 3D-угловую ориентацию устройства в пространстве; порядок элементов: X, Y, Z, W, причем элемент W всегда положительный
◦ euler[3] — массив углов Эйлера в системе обозначений ENU, представляющий трехмерную угловую ориентацию устройства в пространстве; порядок элементов: рыскание, тангаж, крен, измеряется в градусах
◦ i_gyro[3] — массив угловых скоростей в соответствии с конвенцией ENU, представляющий собой датчик виртуального гироскопа, измеряемый в dps
◦ гравитация[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 – это новое состояние включения/выключения, которое необходимо установить - 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 – это новое состояние включения/выключения, которое необходимо установить
2.2.3 Блок-схема API
2.2.4 Демо-код
Следующий демонстрационный код считывает данные с датчиков акселерометра и магнитометра и получает данные ECompass (т. е. кватернионы, углы Эйлера и т. д.).
2.2.5 Производительность алгоритма
Алгоритм E-Compass использует только данные акселерометра и магнитометра. Он работает на низкой частоте (до 100 Гц) для снижения энергопотребления.
Sampле приложение
Промежуточное программное обеспечение MotionEC можно легко использовать для создания пользовательских приложений.ampФайл приложения находится в папке Application.
Он предназначен для работы на плате разработки NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE или NUCLEO-L073RZ, подключенной к плате расширения X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 или X-NUCLEO-IKS02A1.
Приложение распознает ориентацию и поворот устройства в режиме реального времени. Данные могут быть отображены через графический интерфейс.
Алгоритм обеспечивает следующие выходные данные: ориентация устройства (кватернионы, углы Эйлера), вращение устройства (функциональность виртуального гироскопа), вектор силы тяжести и линейное ускорение.
3.1 Приложение MEMS-Studio
СampПриложение le использует приложение MEMS-Studio, которое можно загрузить с сайта www.st.com.
Шаг 1. Убедитесь, что установлены необходимые драйверы и плата STM32 Nucleo с соответствующей платой расширения подключена к ПК.
Шаг 2. Запустите приложение MEMS-Studio, чтобы открыть главное окно приложения.
Если к ПК подключена плата STM32 Nucleo с поддерживаемой прошивкой, соответствующий COM-порт определяется автоматически. Нажмите кнопку [Подключить], чтобы установить соединение с оценочной платой.
Шаг 3. При подключении к плате STM32 Nucleo с поддерживаемой прошивкой открывается вкладка [Оценка библиотеки].
Чтобы запустить и остановить потоковую передачу данных, переключите соответствующий [Пуск] или [Стоп]
кнопка на внешней вертикальной панели инструментов.
Данные, поступающие от подключенного датчика, могут быть viewИзмените выбор вкладки [Таблица данных] на внутренней вертикальной панели инструментов.
Шаг 4. Нажмите на [E-Compass], чтобы открыть специальную страницу для этой библиотеки.
На рисунке выше показана модель STM32 Nucleo. Ориентация и вращение модели основаны на данных E-Compass (кватернионы), рассчитанных алгоритмом.
Чтобы совместить реальное движение устройства с графической моделью, направьте устройство на экран и нажмите кнопку [Сбросить модель].
Значение заголовка представляет собой реальный заголовок устройства.
Направление устройства прямо вверх или вниз (вдоль оси «вверх» системы отсчета ENU с допуском ±5 градусов) дает значение N/A для направления: невозможно определить, на какую сторону света указывает устройство.
Значение качества составляет от 0 до 3 значений и связано с калибровкой магнитометра: чем выше значение, тем лучше результаты алгоритма данных E-Compass.
Шаг 5. Нажмите [Сохранить в File] для открытия окна конфигурации регистрации данных. Выберите датчик и данные E-Compass, которые нужно сохранить в file. Вы можете начать или остановить сохранение, нажав на соответствующую кнопку.
Шаг 6. Режим Data Injection может использоваться для отправки ранее полученных данных в библиотеку и получения результата. Выберите вкладку [Data Injection] на вертикальной панели инструментов, чтобы открыть специальный view для этой функциональности.
Шаг 7. Нажмите кнопку [Обзор], чтобы выбрать file с ранее полученными данными в формате CSV.
Данные будут загружены в таблицу в текущем view.
Другие кнопки станут активными. Вы можете нажать на:
– Кнопка [Автономный режим] для включения/выключения автономного режима прошивки (режима, использующего ранее полученные данные).
– Кнопки [Старт]/[Стоп]/[Шаг]/[Повторить] для управления подачей данных из MEMS-Studio в библиотеку.
Ссылки
Все следующие ресурсы находятся в свободном доступе на сайте www.st.com.
- UM1859: Начало работы с МЭМС движения X-CUBE-MEMS1 и расширение программного обеспечения датчиков окружающей среды для STM32Cube
- UM1724: платы STM32 Nucleo-64 (MB1136)
- UM3233: Начало работы с MEMS-Studio
История изменений
Таблица 4. История изменений документа
Дата | Версия | Изменения |
18-мая-17 | 1 | Первоначальный выпуск. |
25-янв-18 | 2 | Добавлены ссылки на плату разработки NUCLEO-L152RE и таблицу 2. Алгоритм прошедшего времени (мкс). |
21-мар-18 | 3 | Обновлено введение и раздел 2.1 MotionECview. |
26-ноя-18 | 4 | Добавлена таблица 3. Cortex -M0+: прошедшее время (мкс) алгоритма. Добавлены ссылки на ARM® Плата разработки Cortex® – M0+ и NUCLEO-L073RZ. |
19-фев-19 | 5 | Обновленный рисунок 1. Система отсчета ENU, таблица 2. Cortex-M4 и Cortex-M3: алгоритм прошедшего времени (мкс), таблица 3. Cortex -M0+: алгоритм прошедшего времени (мкс), рисунок 3. Адаптер платы расширения датчика, подключенный к STM32 Nucleo, Рисунок 4. Главное окно Unicleo, Рисунок 5. Вкладка «Сообщения пользователя», Рисунок 6. Окно E-Compass и Рисунок 7. Окно Datalog. Добавлена информация о совместимости платы расширения X-NUCLEO-IKS01A3. |
25-мар-20 | 6 | Обновлено введение, раздел 2.2.1: описание библиотеки MotionEC и раздел 2.2.5: производительность алгоритма. Добавлена информация о совместимости архитектуры ARM Cortex-M7. |
17-сен-24 | 7 | Обновленный раздел Введение, Раздел 2.1: MotionEC поview, Раздел 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/торговые марки. Все остальные названия продуктов или услуг являются собственностью их владельцев.
Информация в этом документе заменяет информацию, ранее предоставленную в предыдущих версиях этого документа.
© 2024 STMicroelectronics – Все права защищены
Документы/Ресурсы
![]() |
ST X-CUBE-MEMS1 MotionEC — это библиотека промежуточного программного обеспечения [pdf] Руководство пользователя X-CUBE-MEMS1 MotionEC — это библиотека промежуточного программного обеспечения, X-CUBE-MEMS1, MotionEC — это библиотека промежуточного программного обеспечения, Библиотека промежуточного программного обеспечения, Библиотека |