ST X - loguUM 2225
Manuale d'usu

Accuminciamentu cù a biblioteca E-Compass in tempu reale MotionEC in l'espansione X-CUBE-MEMS1 per STM32Cube

Introduzione

U MotionEC hè un cumpunente di biblioteca di middleware di u software X-CUBE-MEMS1 è funziona in STM3z2. Parmette infurmazione in tempu reale nantu à l'orientazione di u dispusitivu è u statu di u muvimentu basatu nantu à e dati da un dispositivu.
Fornisce i seguenti outputs: orientazione di u dispositivu (quaternioni, anguli di Euler), rotazione di u dispositivu (funzionalità di giroscopiu virtuale), vettore di gravità è accelerazione lineale.
Questa biblioteca hè destinata à travaglià solu cù ST MEMS.
L'algoritmu hè furnitu in formatu di libreria statica è hè pensatu per esse utilizatu nantu à i microcontrollers STM32 basati nantu à ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 è ARM®. Architettura Cortex®-M7.
Hè custruitu nantu à a tecnulugia di u software STM32Cube per facilità a portabilità in diversi microcontrollers STM32.
U prugrammu vene cun sampl'implementazione di le esecuzione in X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1or X-NUCLEO-IKS02A1 scheda di espansione nantu à una scheda di sviluppu NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ.

Acronimi è abbreviazioni

Table 1. Lista di acronimi

Acronimu Descrizzione
API Interfaccia di prugrammazione di l'applicazione
BSP Pacchettu di supportu di bordu
GUI Interfaccia d'utilizatore grafica
HAL Stratu di astrazione di hardware
IDE Ambiente di sviluppu integratu

Biblioteca di middleware MotionEC in l'espansione di u software X-CUBE-MEMS1 per STM32Cube

2.1 MotionEC sopraview
A libreria MotionEC espande a funziunalità di u software X-CUBE-MEMS1.
A biblioteca acquista dati da l'accelerometru è magnetometru è furnisce infurmazioni nantu à l'orientazione di u dispusitivu è u statu di u muvimentu basatu nantu à e dati da un dispositivu.
A biblioteca hè pensata solu per ST MEMS. A funziunalità è u rendiment quandu si usanu altri sensori MEMS ùn sò micca analizati è ponu esse significativamente sfarente da ciò chì hè descrittu in u documentu.
A sampL'implementazione di u le hè dispunibule nantu à X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 è X-NUCLEO-IKS02A1 scheda di espansione, muntata nantu à una scheda di sviluppu NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073R.
2.2 Biblioteca MotionEC
L'infurmazione tecnica chì descrive cumpletamente e funzioni è i paràmetri di l'API MotionEC pò esse truvata in u HTML compilatu MotionEC_Package.chm. file situatu in u cartulare Documentazione.

2.2.1 Descrizzione di a biblioteca MotionEC
A libreria MotionEC E-Compass gestisce i dati acquistati da l'accelerometru è magnetometru; hà caratteristiche:

  • orientazione di u dispositivu (quaternioni, anguli di Eulero), rotazione di u dispositivu (funzionalità di giroscopiu virtuale), vettori di gravità è uscite di accelerazione lineari
  • funziunalità basatu solu nantu à i dati di l'accelerometru è magnetometru
  • acclerometer è magnetometer data necessaria sampfrequenza di ling finu à 100 Hz
  • esigenze di risorse:
    - Cortex-M0+: 3.7 kB di codice è 0.1 kB di memoria di dati
    - Cortex-M3: 3.8 kB di codice è 0.1 kB di memoria di dati
    - Cortex-M33: 2.8 kB di codice è 0.1 kB di memoria di dati
    - Cortex-M4: 2.9 kB di codice è 0.1 kB di memoria di dati
    - Cortex-M7: 2.8 kB di codice è 0.1 kB di memoria di dati
  • dispunibule per l'architetture ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 è Cortex M7

2.2.2 API MotionEC
L'API MotionEC sò:

  • uint8_t MotionEC_GetLibVersion(char *version)
    - ritruvà a versione di a biblioteca
    - * A versione hè un puntatore à una matrice di 35 caratteri
    - torna u numeru di caratteri in a stringa di versione
    • void MotionEC_Initialize (MEC_mcu_type_t mcu_type, float freq)
    - esegue l'inizializazione di a biblioteca MotionEC è a cunfigurazione di u mecanismu internu.
    - mcu_type hè u tipu di MCU:
    ◦ MFX_CM0P_MCU_STM32 hè un MCU STM32 standard
    ◦ MFX_CM0P_MCU_BLUE_NRG1 hè BlueNRG-1
    ◦ MFX_CM0P_MCU_BLUE_NRG2 hè BlueNRG-2
    ◦ MFX_CM0P_MCU_BLUE_NRG_LP hè BlueNRG -LP
    – freq hè u sensoru sampfrequenza ling [Hz]

Nota: Questa funzione deve esse chjamata prima di utilizà a biblioteca E-Compass è u modulu CRC in u microcontroller STM32 (in u registru di attivazione di l'orologio perifericu RCC) deve esse attivatu prima di utilizà a biblioteca.

  • void MotionEC_SetFrequency (frequenza flottante)
    – mette u sampfrequenza di ling (modificà i paràmetri di filtrazione)
    – freq hè u sensoru sampfrequenza di ling [Hz] • void MotionEC_Run (MEC_input_t *data_in, MEC_output_t *data_out)
    - esegue l'algoritmu E-Compass (fusione di dati di l'accelerometru è u magnetometru)
    - *data_in hè un punteru à una struttura cù dati di input
    - i paràmetri per u tipu di struttura MEC_input_t sò:
    ◦ acc[3] hè una matrice di dati di l'accelerometru in cunvenzione ENU, misurata in g
    ◦ mag[3] hè una matrice di dati calibrati magnetometru in cunvenzione ENU, misurata in μT/50
    ◦ deltatime s hè u tempu delta (vale à dì, ritardu di tempu trà u vechju è u novu set di dati) misuratu in s.
    - *data_out hè un punteru à una struttura cù dati di output
    - i paràmetri per u tipu di struttura MEC_output_t sò:
    ◦ quaternion[4] hè un array chì cuntene quaternion in cunvenzione ENU, chì rapprisenta l'orientazione 3Dangular di u dispusitivu in u spaziu; L'ordine di l'elementi hè: X, Y, Z, W, cù l'elementu W sempre pusitivu
    ◦ euler[3] hè un array di anguli di Euler in cunvenzione ENU, chì rapprisenta l'orientazione angulare 3D di u dispusitivu in u spaziu; l'ordine di l'elementi hè: imbardata, pitch, roll, misurata in gradi
    ◦ i_gyro[3] hè un array di freti angulari in cunvenzione ENU, chì rapprisenta un sensoru di giroscopiu virtuale, misuratu in dps
    ◦ gravità[3] hè una matrice di accelerazioni in a cunvenzione ENU, chì rapprisenta u vettore di gravità, misurata in g
    ◦ linear[3] hè un array di accelerazioni in cunvenzione ENU, chì rapprisenta l'accelerazione lineare di u dispusitivu, misurata in g
    ST X CUBE MEMS1 MotionEC hè una biblioteca di Middleware-
  • void MotionEC_GetOrientationEnable (MEC_state_t *state)
    - uttene u statu di attivazione / disattivazione di u calculu di l'angolo di Euler
    - *state hè un puntatore à u statu di attivazione / disattivazione attuale
  • void MotionEC_SetOrientationEnable (MEC_state_t state)
    - stabilisce u statu di attivazione / disattivazione di u calculu di l'angolo di Euler
    - u statu hè u novu statu di attivazione / disattivazione chì deve esse stabilitu
  •  void MotionEC_GetVirtualGyroEnable (MEC_state_t *state)
    - uttene u statu di attivazione / disattivazione di u calculu di u giroscopiu virtuale
    - *state hè un puntatore à u statu di attivazione / disattivazione attuale
  • void MotionEC_SetVirtualGyroEnable (MEC_state_t state)
    - stabilisce u statu di attivazione / disattivazione di u calculu di u giroscopiu virtuale
    - u statu hè u novu statu di attivazione / disattivazione chì deve esse stabilitu
  • void MotionEC_GetGravityEnable (MEC_state_t *state)
    - uttene u statu di attivazione / disattivazione di u calculu di vettore di gravità
    - *state hè un puntatore à u statu di attivazione / disattivazione attuale
  • void MotionEC_SetGravityEnable (MEC_state_t state)
    - stabilisce u statu di attivazione / disattivazione di u calculu di vettore di gravità
    - u statu hè u novu statu di attivazione / disattivazione chì deve esse stabilitu
  • void MotionEC_GetLinearAccEnable (MEC_state_t *state)
    - uttene u statu di attivazione / disattivazione di u calculu di l'accelerazione lineale
    - *state hè un puntatore à u statu di attivazione / disattivazione attuale
  • void MotionEC_SetLinearAccEnable (MEC_state_t state)
    - stabilisce u statu di attivazione / disattivazione di u calculu di accelerazione lineale
    - u statu hè u novu statu di attivazione / disattivazione chì deve esse stabilitu

2.2.3 Diagramma di flussu API

ST X CUBE MEMS1 MotionEC hè una sequenza di biblioteca di Middleware

2.2.4 Demo codice
U codice di dimostrazione seguente leghje e dati da i sensori di l'accelerometru è magnetometru è riceve i dati ECompass (ie, quaternion, anguli di Euler, etc.).

ST X CUBE MEMS1 MotionEC hè una biblioteca di Middleware - codice DemoST X CUBE MEMS1 MotionEC hè un Middleware Library- Demo code1

2.2.5 Prestazione di l'algoritmu
L'algoritmu E-Compass usa solu dati da l'accelerometru è u magnetometru. Funziona à una freccia bassa (finu à 100 Hz) per riduce u cunsumu di energia.

ST X CUBE MEMS1 MotionEC hè una libreria di Middleware - Data Injection1

Sampl'applicazione

U middleware MotionEC pò esse facilmente manipulatu per custruisce applicazioni d'utilizatori; cum'èampl'applicazione hè furnita in u cartulare Applicazioni.
Hè pensatu per eseguisce nantu à una scheda di sviluppu NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ cunnessa à una scheda di espansione X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 o X-NUCLEO-IKS02A1.

ST X CUBE MEMS1 MotionEC hè un adattatore per biblioteca di Middleware

L'applicazione ricunnosce l'orientazione è a rotazione di u dispusitivu in tempu reale. I dati ponu esse visualizati attraversu una GUI.
L'algoritmu furnisce i seguenti outputs: orientazione di u dispositivu (quaternioni, anguli di Euler), rotazione di u dispositivu (funzionalità di giroscopiu virtuale), vettore di gravità è accelerazione lineale.
3.1 Applicazione MEMS-Studio
U sampl'applicazione usa l'applicazione MEMS-Studio, chì pò esse scaricata da www.st.com.
Passu 1. Assicuratevi chì i drivers necessarii sò stallati è chì a scheda STM32 Nucleo cù a scheda di espansione adatta hè cunnessa à u PC.
Passu 2. Lanciari l'applicazione MEMS-Studio per apre a finestra principale di l'applicazione.
Se una scheda STM32 Nucleo cù firmware supportatu hè cunnessu à u PC, u portu COM appropritatu hè rilevatu automaticamente. Pulsà u buttone [Connect] per stabilisce a cunnessione à u cunsigliu di valutazione.

ST X CUBE MEMS1 MotionEC hè un Middleware Library- Connect

Passu 3. Quandu hè cunnessu à una scheda STM32 Nucleo cù firmware supportatu, a tabulazione [Valutazione di a Biblioteca] hè aperta.
Per inizià è piantà u flussu di dati, cambia u [Start] adattatu. ST X CUBE MEMS1 MotionEC hè una icona di Biblioteca di Middleware o [Stop] ST X CUBE MEMS1 MotionEC hè una libreria di Middleware - icona1 buttone nantu à a barra di strumenti verticale esterna.
I dati chì venenu da u sensoru cunnessu ponu esse viewed selezziunate a tabulazione [Table di Dati] nantu à a barra di strumenti verticale interna.

ST X CUBE MEMS1 MotionEC hè una Biblioteca di Middleware - Tavola di Dati

Passu 4. Cliccate nant'à [E-Compass] per apre a pagina dedicata à sta biblioteca.

ST X CUBE MEMS1 MotionEC hè una libreria Middleware-Bussola

A figura sopra mostra un mudellu graficu STM32 Nucleo. L'orientazione è a rotazione di u mudellu sò basati nantu à e dati E-Compass (quaternioni) calculati da l'algoritmu.
Per allineà u muvimentu di u veru dispositivu cù u mudellu gràficu, puntate u dispusitivu versu u screnu è spinghje u [Reset model].
U valore di l'intestazione rapprisenta l'intestazione reale di u dispusitivu.
Pointer l'appareil droit vers le haut ou vers le bas (le long de l'axe Up du cadre de référence ENU, avec une tolérance de ± 5°) donne une valeur N/A pour l'en-tête : il n'est pas possible de distinguer à quel point cardinale pointe l'appareil.
U valore di bontà dà 0 à 3 valori è hè in relazione cù a calibrazione di magnetometru: u più altu u valore, megliu i risultati di l'algoritmu di dati E-Compass.
Passu 5. Cliccate nant'à [Salvà à File] per apre a finestra di cunfigurazione di datalogging. Selezziunà u sensore è i dati E-Compass per esse salvatu in u file. Pudete principià o piantà di salvà clicchendu nant'à u buttone currispundenti.

ST X CUBE MEMS1 MotionEC hè una libreria di Middleware - Salvà in File

Passu 6. U modu di iniezione di dati pò esse usatu per mandà i dati acquistati prima à a biblioteca è riceve u risultatu. Selezziunà a tabulazione [Injection di Dati] nantu à a barra di strumenti verticale per apre u dedicatu view per sta funziunalità.

ST X CUBE MEMS1 MotionEC hè una libreria di Middleware - Data Injection

Passu 7. Cliccate nant'à u buttone [Browse] per selezziunate file cù i dati catturati prima in furmatu CSV.
I dati seranu carricati in a tavula in u currente view.
Altri buttoni diventeranu attivu. Pudete cliccà nant'à:
- U buttone [Modu Offline] per accende / disattiveghja u modu di firmware offline (modu utilizendu i dati catturati prima).
- Pulsanti [Start]/[Stop]/[Step]/[Repeat] per cuntrullà l'alimentazione di dati da MEMS-Studio à a biblioteca.

Referenze

Tutte e seguenti risorse sò liberamente dispunibili nantu à www.st.com.

  1. UM1859: Accuminciamentu cù i MEMS di muvimentu X-CUBE-MEMS1 è l'espansione di u software di sensori ambientali per STM32Cube
  2.  UM1724: schede STM32 Nucleo-64 (MB1136)
  3. UM3233: Accuminciari cù MEMS-Studio

Storia di rivisione

Tabella 4. Storia di rivisione di documenti

Data Versione Cambiamenti
18-maghju-17 1 Liberazione iniziale.
25-ghjennaghju-18 2 Aghjunghjite referenze à a scheda di sviluppu NUCLEO-L152RE è a Tabella 2.
Algoritmu di tempu passatu (μs).
21-mar-18 3 Introduzione aghjurnata è Sezione 2.1 MotionEC sopraview.
26-Nov-18 4 Added Table 3. Cortex -M0+: algoritmu di tempu trascurutu (µs). Aghjunghjite referenze à ARM®
Cortex® - M0+ è scheda di sviluppu NUCLEO-L073RZ.
19-Feb-19 5 Aggiornata Figura 1. Quadru di riferimentu ENU, Tabella 2. Cortex -M4 è Cortex-M3: algoritmu di tempu trascurutu (µs), Tabella 3.
Cortex -M0+ : algorithme de temps écoulé (µs), Figure 3. Adaptateur de carte d'expansion du capteur connecté à l'STM32
Nucleo, Figura 4. Finestra principale di Unicleo, Figura 5. Tabulazione User Messages, Figura 6. Finestra E-Compass è Figura 7. Finestra Datalog. Aggiunta infurmazione di cumpatibilità di a scheda di espansione X-NUCLEO-IKS01A3.
25-mar-20 6 Introduzione aghjurnata, Sezione 2.2.1: Descrizzione di a biblioteca MotionEC è Sezione 2.2.5: Prestazione di l'algoritmu.
Aggiunta infurmazione di cumpatibilità di l'architettura ARM Cortex-M7.
17-sep-24 7 Introduzione di a Sezione aghjurnata,
Sezione 2.1: MotionEC sopraview,
Sezione 2.2.1: Biblioteca MotionEC
description, Section 2.2.2: MotionEC
API, Sezione 2.2.5: Algoritmu
prestazione, Sezione 3: Sample
applicazione, Sezione 3.1: Applicazione MEMS-Studio

AVVISU IMPORTANTE - LEGGIU ATTENTAMENTE
STMicroelectronics NV è e so filiali ("ST") si riservanu u dirittu di fà cambiamenti, correzioni, miglioramenti, mudificazioni è migliure à i prudutti ST è / o à stu documentu in ogni mumentu senza avvisu. I cumpratori anu da ottene l'ultime informazioni pertinenti nantu à i prudutti ST prima di fà ordini. I prudutti ST sò venduti in cunfurmità cù i termini è e cundizioni di vendita di ST in vigore à u mumentu di a ricunniscenza di l'ordine.
I cumpratori sò solu rispunsevuli di a scelta, a selezzione è l'usu di i prudutti ST è ST ùn assume micca responsabilità per l'assistenza di l'applicazione o u disignu di i prudutti di l'acquirente.
Nisuna licenza, espressa o implicita, à qualsiasi dirittu di pruprietà intellettuale hè cuncessa da ST quì.
A rivendita di i prudutti ST cù disposizioni diverse da l'infurmazioni stabilite quì annullerà ogni garanzia accordata da ST per tali pruduttu.
ST è u logo ST sò marchi di ST. Per infurmazioni supplementari nantu à i marchi ST, riferite à www.st.com/trademarks. Tutti l'altri prudutti o nomi di serviziu sò a pruprietà di i so rispettivi pruprietarii.
L'infurmazioni in stu documentu rimpiazzanu è rimpiazzanu l'infurmazioni furnite prima in qualsiasi versione precedente di stu documentu.

© 2024 STMicroelectronics - Tutti i diritti riservati

Documenti / Risorse

ST X-CUBE-MEMS1 MotionEC hè una libreria di Middleware [pdfManuale di u pruprietariu
X-CUBE-MEMS1 MotionEC hè una Biblioteca di Middleware, X-CUBE-MEMS1, MotionEC hè una Biblioteca di Middleware, Biblioteca di Middleware, Biblioteca

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *