ST X - logotipoUM2225
Manual de usuario

Iniciación á biblioteca E-Compass en tempo real de MotionEC na expansión X-CUBE-MEMS1 para STM32Cube

Introdución

O MotionEC é un compoñente da biblioteca de middleware do software X-CUBE-MEMS1 e execútase en STM3z2. Ofrece información en tempo real sobre a orientación do dispositivo e o estado do movemento baseada nos datos dun dispositivo.
Ofrece as seguintes saídas: orientación do dispositivo (cuaternións, ángulos de Euler), rotación do dispositivo (funcionalidade do xiroscopio virtual), vector gravidade e aceleración lineal.
Esta biblioteca está pensada para funcionar só con ST MEMS.
O algoritmo ofrécese en formato de biblioteca estático e está deseñado para ser usado en microcontroladores STM32 baseados nos ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 e ARM® Arquitecturas Cortex®-M7.
Está construído sobre a tecnoloxía de software STM32Cube para facilitar a portabilidade entre diferentes microcontroladores STM32.
O software vén con sampImplementación do ficheiro executado na placa de expansión X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1 nunha placa de desenvolvemento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ.

Siglas e abreviaturas

Táboa 1. Lista de siglas

Acrónimo Descrición
API Interface de programación de aplicacións
BSP Paquete de apoio ao consello
GUI Interface gráfica de usuario
HAL Capa de abstracción de hardware
IDE Entorno de desenvolvemento integrado

Biblioteca de middleware MotionEC na expansión de software X-CUBE-MEMS1 para STM32Cube

2.1 MotionEC rematadoview
A biblioteca MotionEC amplía a funcionalidade do software X-CUBE-MEMS1.
A biblioteca adquire datos do acelerómetro e magnetómetro e ofrece información sobre a orientación do dispositivo e o estado do movemento baseándose nos datos dun dispositivo.
A biblioteca está deseñada só para ST MEMS. A funcionalidade e o rendemento cando se usan outros sensores MEMS non se analizan e poden ser significativamente diferentes do descrito no documento.
A sampA implementación do le está dispoñible nas placas de expansión X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 e X-NUCLEO-IKS02A1, montadas nunha placa de desenvolvemento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073R.
2.2 Biblioteca MotionEC
A información técnica que describe completamente as funcións e parámetros das API de MotionEC pódese atopar no HTML compilado de MotionEC_Package.chm file localizado na carpeta Documentación.

2.2.1 Descrición da biblioteca MotionEC
A biblioteca MotionEC E-Compass xestiona os datos adquiridos do acelerómetro e magnetómetro; presenta:

  • orientación do dispositivo (cuaternións, ángulos de Euler), rotación do dispositivo (funcionalidade do xiroscopio virtual), vector de gravidade e saídas de aceleración lineal
  • funcionalidade baseada só nos datos do acelerómetro e magnetómetro
  • datos necesarios do acelerómetro e do magnetómetro sampfrecuencia ling de ata 100 Hz
  • Requisitos de recursos:
    – Cortex-M0+: 3.7 kB de código e 0.1 kB de memoria de datos
    – Cortex-M3: 3.8 kB de código e 0.1 kB de memoria de datos
    – Cortex-M33: 2.8 kB de código e 0.1 kB de memoria de datos
    – Cortex-M4: 2.9 kB de código e 0.1 kB de memoria de datos
    – Cortex-M7: 2.8 kB de código e 0.1 kB de memoria de datos
  • dispoñible para arquitecturas ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 e Cortex M7

2.2.2 API de MotionEC
As API de MotionEC son:

  • uint8_t MotionEC_GetLibVersion(char *versión)
    – recupera a versión da biblioteca
    – *A versión é un punteiro a unha matriz de 35 caracteres
    – devolve o número de caracteres da cadea de versión
    • void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
    – realiza a inicialización da biblioteca MotionEC e a configuración do mecanismo interno.
    – mcu_type é o tipo de MCU:
    ◦ MFX_CM0P_MCU_STM32 é un MCU STM32 estándar
    ◦ MFX_CM0P_MCU_BLUE_NRG1 é BlueNRG-1
    ◦ MFX_CM0P_MCU_BLUE_NRG2 é BlueNRG-2
    ◦ MFX_CM0P_MCU_BLUE_NRG_LP é BlueNRG -LP
    – freq é o sensor sampfrecuencia ling [Hz]

Nota: Esta función debe ser chamada antes de usar a biblioteca E-Compass e o módulo CRC no microcontrolador STM32 (no rexistro de activación do reloxo periférico RCC) ten que estar activado antes de usar a biblioteca.

  • void MotionEC_SetFrequency (frecuencia flotante)
    – establece o sampfrecuencia de ling (modificación dos parámetros de filtrado)
    – freq é o sensor sampfrecuencia ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
    - executa o algoritmo E-Compass (fusión de datos de acelerómetro e magnetómetro)
    – *data_in é un punteiro a unha estrutura con datos de entrada
    – os parámetros para o tipo de estrutura MEC_input_t son:
    ◦ acc[3] é unha matriz de datos do acelerómetro na convención ENU, medida en g
    ◦ mag[3] é unha matriz de datos calibrados de magnetómetros na convención ENU, medidos en μT/50
    ◦ deltatime s é o tempo delta (é dicir, o retardo entre o conxunto de datos antigo e o novo) medido en s
    – *data_out é un punteiro a unha estrutura con datos de saída
    – os parámetros para o tipo de estrutura MEC_output_t son:
    ◦ quaternion[4] é unha matriz que contén cuaternión na convención ENU, que representa a orientación 3Dangular do dispositivo no espazo; A orde dos elementos é: X, Y, Z, W, co elemento W sempre positivo
    ◦ euler[3] é unha matriz de ángulos de Euler na convención ENU, que representa a orientación angular 3D do dispositivo no espazo; a orde dos elementos é: guiñada, cabeceira, balance, medida en graos
    ◦ i_gyro[3] é unha matriz de velocidades angulares na convención ENU, que representa un sensor de xiroscopio virtual, medida en dps
    ◦ gravidade[3] é unha matriz de aceleracións na convención ENU, que representa o vector da gravidade, medida en g
    ◦ linear[3] é unha matriz de aceleracións na convención ENU, que representa a aceleración lineal do dispositivo, medida en g
    ST X CUBE MEMS1 MotionEC é unha biblioteca de middleware-
  • void MotionEC_GetOrientationEnable(MEC_state_t *estado)
    – obtén o estado de activación/desactivación do cálculo do ángulo de Euler
    – *estado é un punteiro ao estado de activación/desactivación actual
  • void MotionEC_SetOrientationEnable(MEC_state_t state)
    – establece o estado de activación/desactivación do cálculo do ángulo de Euler
    – estado é o novo estado de activación/desactivación que se debe establecer
  •  void MotionEC_GetVirtualGyroEnable(MEC_state_t *estado)
    – obtén o estado de activación/desactivación do cálculo do xiroscopio virtual
    – *estado é un punteiro ao estado de activación/desactivación actual
  • void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
    – establece o estado de activación/desactivación do cálculo do xiroscopio virtual
    – estado é o novo estado de activación/desactivación que se debe establecer
  • void MotionEC_GetGravityEnable(MEC_state_t *estado)
    – obtén o estado de activación/desactivación do cálculo do vector de gravidade
    – *estado é un punteiro ao estado de activación/desactivación actual
  • void MotionEC_SetGravityEnable(MEC_state_t state)
    – establece o estado de activación/desactivación do cálculo do vector de gravidade
    – estado é o novo estado de activación/desactivación que se debe establecer
  • void MotionEC_GetLinearAccEnable(MEC_state_t *estado)
    – obtén o estado de activación/desactivación do cálculo da aceleración lineal
    – *estado é un punteiro ao estado de activación/desactivación actual
  • void MotionEC_SetLinearAccEnable (estado MEC_state_t)
    – establece o estado de activación/desactivación do cálculo da aceleración lineal
    – estado é o novo estado de activación/desactivación que se debe establecer

2.2.3 Diagrama de fluxo da API

ST X CUBE MEMS1 MotionEC é unha secuencia de biblioteca de middleware

2.2.4 Código de demostración
O seguinte código de demostración le os datos dos sensores do acelerómetro e do magnetómetro e obtén os datos de ECompass (é dicir, cuaternión, ángulos de Euler, etc.).

ST X CUBE MEMS1 MotionEC é un código de demostración da biblioteca de middlewareST X CUBE MEMS1 MotionEC é unha biblioteca de middleware: código de demostración1

2.2.5 Rendemento do algoritmo
O algoritmo E-Compass só utiliza datos do acelerómetro e do magnetómetro. Funciona a baixa frecuencia (ata 100 Hz) para reducir o consumo de enerxía.

ST X CUBE MEMS1 MotionEC é unha biblioteca de middleware: inxección de datos1

Sampa aplicación

O middleware MotionEC pódese manipular facilmente para crear aplicacións de usuario; comoampa aplicación ofrécese no cartafol Aplicación.
Está deseñado para funcionar nunha placa de desenvolvemento NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE ou NUCLEO-L073RZ conectada a unha placa de expansión X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 ou X-NUCLEO-IKS02A1.

ST X CUBE MEMS1 MotionEC é un adaptador de biblioteca de middleware

A aplicación recoñece a orientación e rotación do dispositivo en tempo real. Os datos pódense mostrar a través dunha GUI.
O algoritmo proporciona as seguintes saídas: orientación do dispositivo (cuaternións, ángulos de Euler), rotación do dispositivo (funcionalidade do xiroscopio virtual), vector gravidade e aceleración lineal.
3.1 Aplicación MEMS-Studio
O sampa aplicación usa a aplicación MEMS-Studio, que se pode descargar desde www.st.com.
Paso 1. Asegúrese de que estean instalados os controladores necesarios e que a placa STM32 Nucleo coa tarxeta de expansión adecuada estea conectada ao PC.
Paso 2. Inicie a aplicación MEMS-Studio para abrir a xanela principal da aplicación.
Se unha placa STM32 Nucleo con firmware compatible está conectada ao PC, detectarase automaticamente o porto COM apropiado. Prema o botón [Conectar] para establecer a conexión co consello de avaliación.

ST X CUBE MEMS1 MotionEC é unha biblioteca de Middleware- Connect

Paso 3. Cando se conecta a unha placa STM32 Nucleo con firmware compatible, ábrese a pestana [Avaliación da biblioteca].
Para iniciar e deter a transmisión de datos, alterna o [Inicio] adecuado ST X CUBE MEMS1 MotionEC é unha icona da biblioteca de middleware ou [Parar] ST X CUBE MEMS1 MotionEC é unha biblioteca de middleware: icon1 botón na barra de ferramentas vertical exterior.
Os datos procedentes do sensor conectado poden ser viewed seleccionando a pestana [Táboa de datos] na barra de ferramentas vertical interna.

ST X CUBE MEMS1 MotionEC é unha táboa de datos de biblioteca de middleware

Paso 4. Fai clic no [E-Compass] para abrir a páxina dedicada a esta biblioteca.

ST X CUBE MEMS1 MotionEC é unha biblioteca de Middleware-Compás

A figura anterior mostra un modelo gráfico STM32 Nucleo. A orientación e rotación do modelo baséanse nos datos de E-Compass (cuaternións) calculados polo algoritmo.
Para aliñar o movemento real do dispositivo co modelo gráfico, apunte o dispositivo cara á pantalla e prema [Restablecer modelo].
O valor do título representa o título real do dispositivo.
Apuntar o dispositivo directamente cara arriba ou abaixo (ao longo do eixe Arriba do marco de referencia ENU, cunha tolerancia de ± 5 graos) dá un valor N/A para o título: non é posible distinguir a que punto cardinal apunta o dispositivo.
O valor de bondade dá de 0 a 3 valores e está relacionado coa calibración do magnetómetro: canto maior sexa o valor, mellores serán os resultados do algoritmo de datos E-Compass.
Paso 5. Fai clic en [Gardar en File] para abrir a xanela de configuración do rexistro de datos. Seleccione o sensor e os datos da brújula electrónica que se van gardar no ficheiro file. Podes iniciar ou deixar de gardar facendo clic no botón correspondente.

ST X CUBE MEMS1 MotionEC é unha biblioteca de middleware: gardar en File

Paso 6. O modo de inxección de datos pódese utilizar para enviar os datos adquiridos previamente á biblioteca e recibir o resultado. Seleccione a pestana [Inxección de datos] na barra de ferramentas vertical para abrir a páxina dedicada view para esta funcionalidade.

ST X CUBE MEMS1 MotionEC é unha biblioteca de middleware de inxección de datos

Paso 7. Fai clic no botón [Examinar] para seleccionar file cos datos capturados previamente en formato CSV.
Os datos cargaranse na táboa na actualidade view.
Outros botóns activaranse. Podes facer clic en:
– Botón [Modo sen conexión] para activar/desactivar o modo sen conexión do firmware (modo que utiliza os datos capturados anteriormente).
– Botóns [Inicio]/[Parar]/[Paso]/[Repetir] para controlar a fonte de datos de MEMS-Studio á biblioteca.

Referencias

Todos os seguintes recursos están dispoñibles gratuitamente en www.st.com.

  1. UM1859: iniciación co MEMS de movemento X-CUBE-MEMS1 e a expansión do software do sensor ambiental para STM32Cube
  2.  UM1724: placas STM32 Nucleo-64 (MB1136)
  3. UM3233: Iniciación a MEMS-Studio

Historial de revisións

Táboa 4. Historial de revisión de documentos

Data Versión Cambios
18-maio-17 1 Lanzamento inicial.
25-Xaneiro-18 2 Engadiron referencias á tarxeta de desenvolvemento NUCLEO-L152RE e á táboa 2.
Algoritmo de tempo transcorrido (μs).
21-mar-18 3 Actualización da introdución e da sección 2.1 de MotionECview.
26-novembro-18 4 Engadida a táboa 3. Cortex -M0+: algoritmo de tempo transcorrido (µs). Engadíronse referencias a ARM®
Placa de desenvolvemento Cortex® – M0+ e NUCLEO-L073RZ.
19-Feb-19 5 Actualizada Figura 1. Marco de referencia ENU, Táboa 2. Cortex -M4 e Cortex-M3: algoritmo de tempo transcorrido (µs), Táboa 3.
Cortex -M0+: algoritmo de tempo transcorrido (µs), Figura 3. Adaptador da placa de expansión do sensor conectado ao STM32
Nucleo, Figura 4. Fiestra principal de Unicleo, Figura 5. Pestana Mensaxes do usuario, Figura 6. Ventá E-Compass e Figura 7. Fiestra Datalog. Engadiuse información de compatibilidade da placa de expansión X-NUCLEO-IKS01A3.
25-mar-20 6 Introdución actualizada, Sección 2.2.1: Descrición da biblioteca MotionEC e Sección 2.2.5: Rendemento do algoritmo.
Engadida información de compatibilidade da arquitectura ARM Cortex-M7.
17-set-24 7 Sección actualizada Introdución,
Sección 2.1: MotionEC acabadoview,
Sección 2.2.1: Biblioteca MotionEC
descrición, Sección 2.2.2: MotionEC
APIs, Sección 2.2.5: Algoritmo
actuación, Sección 3: Sample
aplicación, Sección 3.1: Aplicación MEMS-Studio

AVISO IMPORTANTE - LEA ATENTAMENTE
STMicroelectronics NV e as súas subsidiarias (“ST”) resérvanse o dereito de realizar cambios, correccións, melloras, modificacións e melloras nos produtos ST e/ou neste documento en calquera momento sen previo aviso. Os compradores deben obter a información relevante máis recente sobre produtos ST antes de facer pedidos. Os produtos ST véndense de acordo cos termos e condicións de venda de ST existentes no momento do recoñecemento da orde.
Os compradores son os únicos responsables da elección, selección e uso dos produtos ST e ST non asume ningunha responsabilidade pola asistencia á aplicación ou o deseño dos produtos dos compradores.
ST non concede ningunha licenza, expresa ou implícita, a ningún dereito de propiedade intelectual.
A revenda de produtos ST con disposicións diferentes da información aquí establecida anulará calquera garantía concedida por ST para tal produto.
ST e o logotipo de ST son marcas comerciais de ST. Para obter información adicional sobre as marcas rexistradas ST, consulte www.st.com/trademarks. Todos os outros nomes de produtos ou servizos son propiedade dos seus respectivos propietarios.
A información deste documento substitúe e substitúe a información proporcionada anteriormente en calquera versión anterior deste documento.

© 2024 STMicroelectronics – Todos os dereitos reservados

Documentos/Recursos

ST X-CUBE-MEMS1 MotionEC é unha biblioteca de middleware [pdfManual do propietario
X-CUBE-MEMS1 MotionEC é unha biblioteca de middleware, X-CUBE-MEMS1, MotionEC é unha biblioteca de middleware, biblioteca de middleware, biblioteca

Referencias

Deixa un comentario

O teu enderezo de correo electrónico non será publicado. Os campos obrigatorios están marcados *