UM 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
- 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
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.).
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.
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.
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.
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. o [Stop]
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.
Passu 4. Cliccate nant'à [E-Compass] per apre a pagina dedicata à sta biblioteca.
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.
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à.
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.
- UM1859: Accuminciamentu cù i MEMS di muvimentu X-CUBE-MEMS1 è l'espansione di u software di sensori ambientali per STM32Cube
- UM1724: schede STM32 Nucleo-64 (MB1136)
- 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 |