UM2225
Manual d'usuari
Com començar amb la biblioteca E-Compass en temps real de MotionEC a l'expansió X-CUBE-MEMS1 per a STM32Cube
Introducció
El MotionEC és un component de la biblioteca de middleware del programari X-CUBE-MEMS1 i s'executa a STM3z2. Proporciona informació en temps real sobre l'orientació del dispositiu i l'estat del moviment basat en les dades d'un dispositiu.
Proporciona les següents sortides: orientació del dispositiu (quaternions, angles d'Euler), rotació del dispositiu (funcionalitat de giroscopi virtual), vector de gravetat i acceleració lineal.
Aquesta biblioteca està pensada per funcionar només amb ST MEMS.
L'algorisme es proporciona en format de biblioteca estàtica i està dissenyat per utilitzar-se en microcontroladors STM32 basats en ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 i ARM® Arquitectures Cortex®-M7.
Està construït sobre la tecnologia de programari STM32Cube per facilitar la portabilitat entre diferents microcontroladors STM32.
El programari ve amb sampimplementació del fitxer que s'executa a la placa d'expansió X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 o X-NUCLEO-IKS02A1 en una placa de desenvolupament NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ.
Acrònims i abreviatures
Taula 1. Llistat d'acrònims
Acrònim | Descripció |
API | Interfície de programació d'aplicacions |
BSP | Paquet de suport de la junta |
GUI | Interfície gràfica d'usuari |
HAL | Capa d'abstracció de maquinari |
IDE | Entorn de desenvolupament integrat |
Biblioteca de programari intermedi MotionEC a l'expansió de programari X-CUBE-MEMS1 per a STM32Cube
2.1 MotionEC acabatview
La biblioteca MotionEC amplia la funcionalitat del programari X-CUBE-MEMS1.
La biblioteca adquireix dades de l'acceleròmetre i del magnetòmetre i proporciona informació sobre l'orientació del dispositiu i l'estat del moviment en funció de les dades d'un dispositiu.
La biblioteca està dissenyada només per a ST MEMS. La funcionalitat i el rendiment quan s'utilitzen altres sensors MEMS no s'analitzen i poden ser molt diferents del que es descriu al document.
A sampLa implementació del fitxer està disponible a la placa d'expansió X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 i X-NUCLEO-IKS02A1, muntada en una placa de desenvolupament NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073R.
2.2 Biblioteca MotionEC
La informació tècnica que descriu completament les funcions i els paràmetres de les API de MotionEC es pot trobar a l'HTML compilat de MotionEC_Package.chm. file situat a la carpeta Documentació.
2.2.1 Descripció de la biblioteca MotionEC
La biblioteca MotionEC E-Compass gestiona les dades adquirides de l'acceleròmetre i el magnetòmetre; compta amb:
- orientació del dispositiu (quaternions, angles d'Euler), rotació del dispositiu (funcionalitat de giroscopi virtual), vector de gravetat i sortides d'acceleració lineal
- funcionalitat basada només en les dades de l'acceleròmetre i el magnetòmetre
- dades necessàries d'acceleròmetre i magnetòmetre sampfreqüència de fins a 100 Hz
- Recursos requerits:
– Cortex-M0+: 3.7 kB de codi i 0.1 kB de memòria de dades
– Cortex-M3: 3.8 kB de codi i 0.1 kB de memòria de dades
– Cortex-M33: 2.8 kB de codi i 0.1 kB de memòria de dades
– Cortex-M4: 2.9 kB de codi i 0.1 kB de memòria de dades
– Cortex-M7: 2.8 kB de codi i 0.1 kB de memòria de dades - disponible per a arquitectures ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 i Cortex M7
2.2.2 API de MotionEC
Les API de MotionEC són:
- uint8_t MotionEC_GetLibVersion(char *versió)
– recupera la versió de la biblioteca
– *la versió és un punter a una matriu de 35 caràcters
– retorna el nombre de caràcters de la cadena de versió
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, freq. flotant)
– realitza la inicialització de la biblioteca MotionEC i la configuració del mecanisme intern.
– mcu_type és el tipus de MCU:
◦ MFX_CM0P_MCU_STM32 és un MCU STM32 estàndard
◦ MFX_CM0P_MCU_BLUE_NRG1 és BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 és BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP és BlueNRG -LP
– freq és el sensor sampfreqüència ling [Hz]
Nota: Aquesta funció s'ha de cridar abans d'utilitzar la biblioteca E-Compass i el mòdul CRC del microcontrolador STM32 (al registre d'habilitació del rellotge perifèric RCC) s'ha d'habilitar abans d'utilitzar la biblioteca.
- void MotionEC_SetFrequency (freqüència flotant)
– estableix el sampfreqüència de ling (modificant els paràmetres de filtratge)
– freq és el sensor sampfreqüència ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
- executa l'algoritme E-Compass (fusió de dades de l'acceleròmetre i el magnetòmetre)
– *data_in és un punter a una estructura amb dades d'entrada
– els paràmetres per al tipus d'estructura MEC_input_t són:
◦ acc[3] és una matriu de dades de l'acceleròmetre en la convenció ENU, mesurada en g
◦ mag[3] és una matriu de dades calibrades del magnetòmetre en la convenció ENU, mesurades en μT/50
◦ deltatime s és el temps delta (és a dir, el retard entre el conjunt de dades antic i el nou) mesurat en s
– *data_out és un punter a una estructura amb dades de sortida
– els paràmetres per al tipus d'estructura MEC_output_t són:
◦ quaternion[4] és una matriu que conté quaternions en la convenció ENU, que representa l'orientació 3Dangular del dispositiu a l'espai; L'ordre dels elements és: X, Y, Z, W, amb l'element W sempre positiu
◦ euler[3] és una matriu d'angles d'Euler en la convenció ENU, que representa l'orientació angular 3D del dispositiu a l'espai; l'ordre dels elements és: guiñada, cabecejada, gir, mesurat en graus
◦ i_gyro[3] és una matriu de velocitats angulars en la convenció ENU, que representa un sensor de giroscopi virtual, mesurat en dps
◦ gravetat[3] és una matriu d'acceleracions en la convenció ENU, que representa el vector de gravetat, mesurat en g
◦ lineal[3] és una matriu d'acceleracions en la convenció ENU, que representa l'acceleració lineal del dispositiu, mesurada en g
- void MotionEC_GetOrientationEnable(MEC_state_t *estat)
– obté l'estat d'activació/desactivació del càlcul de l'angle d'Euler
– *estat és un punter a l'estat d'activació/desactivació actual - void MotionEC_SetOrientationEnable(MEC_state_t state)
– estableix l'estat d'activació/desactivació del càlcul de l'angle d'Euler
– estat és el nou estat d'activació/desactivació que s'ha d'establir - void MotionEC_GetVirtualGyroEnable(MEC_state_t *estat)
– obté l'estat d'activació/desactivació del càlcul del giroscopi virtual
– *estat és un punter a l'estat d'activació/desactivació actual - void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
– estableix l'estat d'activació/desactivació del càlcul del giroscopi virtual
– estat és el nou estat d'activació/desactivació que s'ha d'establir - void MotionEC_GetGravityEnable(MEC_state_t *estat)
– obté l'estat d'activació/desactivació del càlcul del vector de gravetat
– *estat és un punter a l'estat d'activació/desactivació actual - void MotionEC_SetGravityEnable(MEC_state_t state)
– estableix l'estat d'activació/desactivació del càlcul del vector de gravetat
– estat és el nou estat d'activació/desactivació que s'ha d'establir - void MotionEC_GetLinearAccEnable(MEC_state_t *estat)
– obté l'estat d'activació/desactivació del càlcul d'acceleració lineal
– *estat és un punter a l'estat d'activació/desactivació actual - void MotionEC_SetLinearAccEnable(MEC_state_t state)
– estableix l'estat d'activació/desactivació del càlcul d'acceleració lineal
– estat és el nou estat d'activació/desactivació que s'ha d'establir
2.2.3 Diagrama de flux de l'API
2.2.4 Codi de demostració
El següent codi de demostració llegeix les dades dels sensors de l'acceleròmetre i del magnetòmetre i obté les dades de l'ECompass (és a dir, el quaternió, els angles d'Euler, etc.).
2.2.5 Rendiment de l'algorisme
L'algoritme de la brúixola electrònica només utilitza dades de l'acceleròmetre i del magnetòmetre. Funciona a baixa freqüència (fins a 100 Hz) per reduir el consum d'energia.
Sampl'aplicació
El programari intermedi MotionEC es pot manipular fàcilment per crear aplicacions d'usuari; comampl'aplicació es proporciona a la carpeta Aplicació.
Està dissenyat per funcionar en una placa de desenvolupament NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE o NUCLEO-L073RZ connectada a una placa d'expansió X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 o X-NUCLEO-IKS02A1.
L'aplicació reconeix l'orientació i la rotació del dispositiu en temps real. Les dades es poden mostrar mitjançant una GUI.
L'algorisme proporciona les següents sortides: orientació del dispositiu (quaternions, angles d'Euler), rotació del dispositiu (funcionalitat de giroscopi virtual), vector de gravetat i acceleració lineal.
3.1 Aplicació MEMS-Studio
El sampl'aplicació utilitza l'aplicació MEMS-Studio, que es pot descarregar des de www.st.com.
Pas 1. Assegureu-vos que els controladors necessaris estiguin instal·lats i que la placa STM32 Nucleo amb la placa d'expansió adequada estigui connectada a l'ordinador.
Pas 2. Inicieu l'aplicació MEMS-Studio per obrir la finestra principal de l'aplicació.
Si una placa STM32 Nucleo amb microprogramari compatible està connectada a l'ordinador, es detecta automàticament el port COM adequat. Premeu el botó [Connexió] per establir la connexió amb el tauler d'avaluació.
Pas 3. Quan es connecta a una placa STM32 Nucleo amb firmware compatible, s'obre la pestanya [Avaluació de la biblioteca].
Per iniciar i aturar la transmissió de dades, canvieu el [Inici] adequat. o [Aturar]
botó de la barra d'eines vertical exterior.
Les dades que provenen del sensor connectat poden ser viewi seleccionant la pestanya [Taula de dades] a la barra d'eines vertical interior.
Pas 4. Feu clic a [E-Compass] per obrir la pàgina dedicada a aquesta biblioteca.
La figura anterior mostra un model gràfic STM32 Nucleo. L'orientació i la rotació del model es basen en dades d'E-Compass (quaternions) calculades per l'algorisme.
Per alinear el moviment real del dispositiu amb el model gràfic, apunteu el dispositiu cap a la pantalla i premeu [Restablir model].
El valor de l'encapçalament representa l'encapçalament real del dispositiu.
Apuntar el dispositiu cap amunt o cap avall (al llarg de l'eix amunt del marc de referència ENU, amb una tolerància de ± 5 graus) dóna un valor N/A per a l'encapçalament: no és possible distingir a quin punt cardinal apunta el dispositiu.
El valor de bondat dóna de 0 a 3 valors i està relacionat amb el calibratge del magnetòmetre: com més alt sigui el valor, millors són els resultats de l'algorisme de dades de la brúixola electrònica.
Pas 5. Feu clic a [Desa a File] per obrir la finestra de configuració de registre de dades. Seleccioneu el sensor i les dades de la brúixola electrònica que voleu desar al fitxer file. Podeu iniciar o aturar l'estalvi fent clic al botó corresponent.
Pas 6. El mode d'injecció de dades es pot utilitzar per enviar les dades adquirides prèviament a la biblioteca i rebre el resultat. Seleccioneu la pestanya [Injecció de dades] a la barra d'eines vertical per obrir la pestanya dedicada view per a aquesta funcionalitat.
Pas 7. Feu clic al botó [Navega] per seleccionar-lo file amb les dades capturades prèviament en format CSV.
Les dades es carregaran a la taula en el moment actual view.
Altres botons estaran actius. Podeu fer clic a:
– Botó [Mode fora de línia] per activar/desactivar el mode fora de línia del microprogramari (mode que utilitza les dades capturades anteriorment).
– Botons [Inici]/[Aturar]/[Pas]/[Repetir] per controlar l'alimentació de dades des de MEMS-Studio a la biblioteca.
Referències
Tots els recursos següents estan disponibles gratuïtament a www.st.com.
- UM1859: Primers passos amb els MEMS de moviment X-CUBE-MEMS1 i l'expansió del programari del sensor ambiental per a STM32Cube
- UM1724: plaques STM32 Nucleo-64 (MB1136)
- UM3233: Primers passos amb MEMS-Studio
Historial de revisions
Taula 4. Historial de revisions de documents
Data | Versió | Canvis |
18-maig-17 | 1 | Alliberament inicial. |
25-gen-18 | 2 | S'han afegit referències a la placa de desenvolupament NUCLEO-L152RE i a la taula 2. Algorisme de temps transcorregut (μs). |
21-mar-18 | 3 | Introducció actualitzada i secció 2.1 MotionEC acabadaview. |
26-nov-18 | 4 | Taula afegida 3. Córtex -M0+: algorisme de temps transcorregut (µs). S'han afegit referències a ARM® Placa de desenvolupament Cortex® - M0+ i NUCLEO-L073RZ. |
19-feb-19 | 5 | Figura actualitzada 1. Marc de referència ENU, Taula 2. Algorisme de Cortex -M4 i Cortex-M3: temps transcorregut (µs), Taula 3. Cortex -M0+: algorisme de temps transcorregut (µs), Figura 3. Adaptador de placa d'expansió de sensor connectat a l'STM32 Nucleo, Figura 4. Finestra principal d'Unicleo, Figura 5. Pestanya Missatges d'usuari, Figura 6. Finestra E-Compass i Figura 7. Finestra Datalog. S'ha afegit informació de compatibilitat de la placa d'expansió X-NUCLEO-IKS01A3. |
25-mar-20 | 6 | Introducció actualitzada, Secció 2.2.1: Descripció de la biblioteca MotionEC i Secció 2.2.5: Rendiment de l'algoritme. S'ha afegit informació de compatibilitat amb l'arquitectura ARM Cortex-M7. |
17-set-24 | 7 | Introducció a la secció actualitzada, Secció 2.1: MotionEC acabatview, Secció 2.2.1: Biblioteca MotionEC descripció, Secció 2.2.2: MotionEC API, Secció 2.2.5: algorisme actuació, Secció 3: Sample aplicació, Secció 3.1: Aplicació MEMS-Studio |
AVÍS IMPORTANT - LLEGIU ATENCIÓ
STMicroelectronics NV i les seves filials ("ST") es reserven el dret de fer canvis, correccions, millores, modificacions i millores als productes ST i/o a aquest document en qualsevol moment sense previ avís. Els compradors haurien d'obtenir la informació rellevant més recent sobre els productes ST abans de fer comandes. Els productes ST es venen d'acord amb els termes i condicions de venda de ST vigents en el moment del reconeixement de la comanda.
Els compradors són els únics responsables de l'elecció, selecció i ús dels productes ST i ST no assumeix cap responsabilitat per l'assistència a l'aplicació o el disseny dels productes dels compradors.
ST no concedeix cap llicència, expressa o implícita, a cap dret de propietat intel·lectual.
La revenda de productes ST amb disposicions diferents de la informació que s'estableix aquí anul·larà qualsevol garantia concedida per ST per a aquest producte.
ST i el logotip de ST són marques comercials de ST. Per obtenir informació addicional sobre les marques comercials ST, consulteu www.st.com/trademarks. Tots els altres noms de productes o serveis són propietat dels seus respectius propietaris.
La informació d'aquest document substitueix i substitueix la informació proporcionada anteriorment en qualsevol versió anterior d'aquest document.
© 2024 STMicroelectronics – Tots els drets reservats
Documents/Recursos
![]() |
ST X-CUBE-MEMS1 MotionEC és una biblioteca de middleware [pdfManual del propietari X-CUBE-MEMS1 MotionEC és una biblioteca de middleware, X-CUBE-MEMS1, MotionEC és una biblioteca de middleware, biblioteca de middleware, biblioteca |