UM2225
Användarmanual
Komma igång med MotionEC realtids E-Compass-bibliotek i X-CUBE-MEMS1 expansion för STM32Cube
Introduktion
MotionEC är en middleware-bibliotekskomponent i programvaran X-CUBE-MEMS1 och körs på STM3z2. Det ger realtidsinformation om enhetens orientering och rörelsestatus baserat på data från en enhet.
Den ger följande utgångar: enhetsorientering (quaternioner, Euler-vinklar), enhetsrotation (virtuella gyroskopfunktioner), gravitationsvektor och linjär acceleration.
Detta bibliotek är endast avsett att fungera med ST MEMS.
Algoritmen tillhandahålls i statiskt biblioteksformat och är designad för att användas på STM32-mikrokontroller baserade på ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 och ARM® Cortex®-M7-arkitekturer.
Den är byggd ovanpå STM32Cube mjukvaruteknik för att underlätta portabilitet mellan olika STM32 mikrokontroller.
Programvaran kommer med sampen implementering som körs på X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 eller X-NUCLEO-IKS02A1 expansionskort på ett NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RZ utvecklingskort.
Akronymer och förkortningar
Tabell 1. Lista över akronymer
Akronym | Beskrivning |
API | Gränssnitt för applikationsprogrammering |
BSP | Styrelsestödspaket |
GUI | Grafiskt användargränssnitt |
HAL | Hårdvaruabstraktionslager |
ID | Integrerad utvecklingsmiljö |
MotionEC middleware-bibliotek i X-CUBE-MEMS1 mjukvaruexpansion för STM32Cube
2.1 MotionEC överview
MotionEC-biblioteket utökar funktionaliteten hos programvaran X-CUBE-MEMS1.
Biblioteket hämtar data från accelerometern och magnetometern och ger information om enhetens orientering och rörelsestatus baserat på data från en enhet.
Biblioteket är endast utformat för ST MEMS. Funktionalitet och prestanda vid användning av andra MEMS-sensorer analyseras inte och kan skilja sig väsentligt från vad som beskrivs i dokumentet.
A sampimplementeringen är tillgänglig på X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 och X-NUCLEO-IKS02A1 expansionskort, monterad på ett NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RE.
2.2 MotionEC-bibliotek
Teknisk information som fullständigt beskriver funktionerna och parametrarna för MotionEC API:erna finns i MotionEC_Package.chm kompilerade HTML file finns i mappen Dokumentation.
2.2.1 MotionEC-biblioteksbeskrivning
MotionEC E-Compass-biblioteket hanterar data som hämtas från accelerometern och magnetometern; den innehåller:
- enhetsorientering (quaternions, Euler-vinklar), enhetsrotation (virtuella gyroskopfunktioner), gravitationsvektor och linjära accelerationsutgångar
- funktionalitet endast baserad på accelerometern och magnetometerdata
- nödvändiga accelerometer- och magnetometerdata samplingfrekvens på upp till 100 Hz
- resurskrav:
– Cortex-M0+: 3.7 kB kod och 0.1 kB dataminne
– Cortex-M3: 3.8 kB kod och 0.1 kB dataminne
– Cortex-M33: 2.8 kB kod och 0.1 kB dataminne
– Cortex-M4: 2.9 kB kod och 0.1 kB dataminne
– Cortex-M7: 2.8 kB kod och 0.1 kB dataminne - tillgänglig för arkitekturerna ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 och Cortex M7
2.2.2 MotionEC API:er
MotionEC API:erna är:
- uint8_t MotionEC_GetLibVersion(char *version)
– hämtar versionen av biblioteket
– *version är en pekare till en array med 35 tecken
– returnerar antalet tecken i versionssträngen
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– utför MotionEC-biblioteksinitiering och inställning av den interna mekanismen.
– mcu_type är typen av MCU:
◦ MFX_CM0P_MCU_STM32 är en standard STM32 MCU
◦ MFX_CM0P_MCU_BLUE_NRG1 är BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 är BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP är BlueNRG -LP
– frekv är sensorns samplingfrekvens [Hz]
Notera: Denna funktion måste anropas innan du använder E-Compass-biblioteket och CRC-modulen i STM32-mikrokontroller (i RCC perifer klockaktiveringsregister) måste aktiveras innan du använder biblioteket
- void MotionEC_SetFrequency(float freq)
– ställer in sampling-frekvens (ändrar filtreringsparametrarna)
– frekv är sensorns samplingfrekvens [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– kör E-Compass-algoritmen (accelerometer och magnetometerdatafusion)
– *data_in är en pekare till en struktur med indata
– parametrarna för strukturtypen MEC_input_t är:
◦ acc[3] är en uppsättning accelerometerdata i ENU-konventionen, mätt i g
◦ mag[3] är en uppsättning magnetometerkalibrerade data i ENU-konventionen, mätt i μT/50
◦ deltatid s är deltatiden (dvs. tidsfördröjning mellan gammal och ny datamängd) mätt i s
– *data_out är en pekare till en struktur med utdata
– parametrarna för strukturtypen MEC_output_t är:
◦ quaternion[4] är en array som innehåller quaternion i ENU-konventionen, som representerar enhetens 3Dangular-orientering i rymden; ordningen av element är: X, Y, Z, W, med alltid positivt element W
◦ euler[3] är en matris av Euler-vinklar i ENU-konventionen, som representerar enhetens 3D-vinkelorientering i rymden; ordningen på elementen är: gir, stigning, rullning, mätt i grader
◦ i_gyro[3] är en array av vinkelhastigheter i ENU-konventionen, som representerar en virtuell gyroskopsensor, mätt i dps
◦ gravitation[3] är en uppsättning accelerationer i ENU-konventionen, som representerar gravitationsvektorn, mätt i g
◦ linjär[3] är en uppsättning av accelerationer i ENU-konventionen, som representerar enhetens linjära acceleration, mätt i g
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– får aktivera/avaktivera tillståndet för Euler-vinkelberäkningen
– *tillstånd är en pekare till det aktuella aktivera/avaktivera tillståndet - void MotionEC_SetOrientationEnable(MEC_state_t state)
– ställer in aktivera/avaktivera tillståndet för Euler-vinkelberäkningen
– tillstånd är det nya aktivera/avaktivera tillstånd som ska ställas in - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– får aktivera/avaktivera tillståndet för beräkningen av det virtuella gyroskopet
– *tillstånd är en pekare till det aktuella aktivera/avaktivera tillståndet - void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
– ställer in aktivera/avaktivera tillståndet för den virtuella gyroskopberäkningen
– tillstånd är det nya aktivera/avaktivera tillstånd som ska ställas in - void MotionEC_GetGravityEnable(MEC_state_t *state)
– får aktivera/avaktivera tillståndet för gravitationsvektorberäkningen
– *tillstånd är en pekare till det aktuella aktivera/avaktivera tillståndet - void MotionEC_SetGravityEnable(MEC_state_t state)
– ställer in aktivera/avaktivera tillståndet för gravitationsvektorberäkningen
– tillstånd är det nya aktivera/avaktivera tillstånd som ska ställas in - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– hämtar aktivera/avaktivera tillståndet för beräkningen av linjär acceleration
– *tillstånd är en pekare till det aktuella aktivera/avaktivera tillståndet - void MotionEC_SetLinearAccEnable(MEC_state_t state)
– ställer in aktivera/avaktivera tillståndet för beräkningen av linjär acceleration
– tillstånd är det nya aktivera/avaktivera tillstånd som ska ställas in
2.2.3 API-flödesschema
2.2.4 Demokod
Följande demonstrationskod läser data från accelerometer- och magnetometersensorerna och hämtar ECompass-data (dvs. quaternion, Euler-vinklar, etc.).
2.2.5 Algoritmprestanda
E-Compass-algoritmen använder endast data från accelerometern och magnetometern. Den körs på en låg frekvens (upp till 100 Hz) för att minska strömförbrukningen.
Sample ansökan
MotionEC-mellanvaran kan enkelt manipuleras för att bygga användarapplikationer; somampapplikationen finns i mappen Application.
Den är designad för att köras på ett NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RZ utvecklingskort kopplat till ett X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 eller X-NUCLEO-IKS02A1expansionskort.
Applikationen känner igen enhetens orientering och rotation i realtid. Data kan visas genom ett GUI.
Algoritmen ger följande utsignaler: enhetsorientering (quaternions, Euler-vinklar), enhetsrotation (virtuella gyroskopfunktioner), gravitationsvektor och linjär acceleration.
3.1 MEMS-Studio applikation
Sampapplikationen använder applikationen MEMS-Studio, som kan laddas ner från www.st.com.
Steg 1. Se till att nödvändiga drivrutiner är installerade och att STM32 Nucleo-kortet med lämpligt expansionskort är anslutet till datorn.
Steg 2. Starta programmet MEMS-Studio för att öppna programmets huvudfönster.
Om ett STM32 Nucleo-kort med stödd firmware är anslutet till datorn, upptäcks lämplig COM-port automatiskt. Tryck på [Connect]-knappen för att upprätta anslutning till utvärderingskortet.
Steg 3. När den är ansluten till ett STM32 Nucleo-kort med fast programvara som stöds öppnas fliken [Library Evaluation].
För att starta och stoppa dataströmning, växla till lämplig [Start] eller [Stopp]
knappen på den yttre vertikala verktygsfältet.
Data som kommer från den anslutna sensorn kan vara viewed välja fliken [Data Table] på den inre vertikala verktygsraden.
Steg 4. Klicka på [E-Compass] för att öppna den dedikerade sidan för detta bibliotek.
Figuren ovan visar en STM32 Nucleo grafisk modell. Modellens orientering och rotation baseras på E-kompassdata (quaternions) beräknade av algoritmen.
För att anpassa enhetens verkliga rörelse med den grafiska modellen, rikta enheten mot skärmen och tryck på [Återställ modell].
Rubrikvärdet representerar den verkliga enhetens rubrik.
Att peka enheten rakt uppåt eller nedåt (längs upp-axeln på ENU-referensramen, med ±5 graders tolerans) ger N/A-värde för rubriken: det är inte möjligt att särskilja till vilken kardinalpunkt enheten pekar mot.
Godhetsvärdet ger 0 till 3 värden och är relaterat till magnetometerns kalibrering: ju högre värde, desto bättre resultat av E-Compass dataalgoritmen.
Steg 5. Klicka på [Spara till File] för att öppna dataloggningskonfigurationsfönstret. Välj sensor- och E-kompassdata som ska sparas i file. Du kan börja eller sluta spara genom att klicka på motsvarande knapp.
Steg 6. Datainjektionsläget kan användas för att skicka tidigare inhämtade data till biblioteket och ta emot resultatet. Välj fliken [Datainjektion] på den vertikala verktygsfältet för att öppna den dedikerade view för denna funktion.
Steg 7. Klicka på knappen [Bläddra] för att välja file med tidigare insamlad data i CSV-format.
Data kommer att laddas in i tabellen i strömmen view.
Andra knappar blir aktiva. Du kan klicka på:
– Knappen [Offlineläge] för att slå på/av offlineläget för fast programvara (läge som använder tidigare insamlad data).
– Knapparna [Start]/[Stop]/[Step]/[Repeat] för att styra datamatningen från MEMS-Studio till biblioteket.
Referenser
Alla följande resurser är fritt tillgängliga på www.st.com.
- UM1859: Komma igång med X-CUBE-MEMS1 motion MEMS och miljösensorprogramexpansion för STM32Cube
- UM1724: STM32 Nucleo-64-kort (MB1136)
- UM3233: Komma igång med MEMS-Studio
Revisionshistorik
Tabell 4. Dokumentets revisionshistorik
Datum | Version | Ändringar |
18-17 maj | 1 | Initial release. |
25-18 januari | 2 | Lade till referenser till NUCLEO-L152RE utvecklingskort och Tabell 2. Algoritm för förfluten tid (μs). |
21-mars-18 | 3 | Uppdaterad introduktion och avsnitt 2.1 MotionEC överview. |
26-nov-18 | 4 | Tillagd tabell 3. Cortex -M0+: algoritm för förfluten tid (µs). Lade till referenser till ARM® Cortex® – M0+ och NUCLEO-L073RZ utvecklingskort. |
19-19 februari | 5 | Uppdaterad figur 1. ENU-referensram, tabell 2. Cortex -M4 och Cortex-M3: algoritm för förfluten tid (µs), Tabell 3. Cortex -M0+: algoritm för förfluten tid (µs), figur 3. Adapter för sensorexpansionskort ansluten till STM32 Nucleo, Figur 4. Unicleos huvudfönster, Figur 5. Fliken Användarmeddelanden, Figur 6. E-Compass-fönstret och Figur 7. Datalogfönster. Lade till X-NUCLEO-IKS01A3 kompatibilitetsinformation för expansionskort. |
25-mars-20 | 6 | Uppdaterad introduktion, avsnitt 2.2.1: MotionEC-biblioteksbeskrivning och avsnitt 2.2.5: Algoritmprestanda. Lade till ARM Cortex-M7-arkitekturkompatibilitetsinformation. |
17 september 24 | 7 | Uppdaterad avsnittsintroduktion, Avsnitt 2.1: MotionEC överview, Avsnitt 2.2.1: MotionEC-bibliotek beskrivning, avsnitt 2.2.2: MotionEC API:er, avsnitt 2.2.5: Algoritm prestanda, avsnitt 3: Sample applikation, avsnitt 3.1: MEMS-Studio applikation |
VIKTIGT MEDDELANDE – LÄS NOGGRANT
STMicroelectronics NV och dess dotterbolag (“ST”) förbehåller sig rätten att göra ändringar, korrigeringar, förbättringar, modifieringar och förbättringar av ST-produkter och/eller av detta dokument när som helst utan föregående meddelande. Köpare bör skaffa den senaste relevanta informationen om ST-produkter innan de lägger beställningar. ST-produkter säljs i enlighet med ST:s försäljningsvillkor som gäller vid tidpunkten för ordererkännande.
Köparen är ensam ansvarig för val, urval och användning av ST-produkter och ST tar inget ansvar för applikationshjälp eller design av köparens produkter.
Ingen licens, uttrycklig eller underförstådd, till någon immateriell rättighet beviljas av ST häri.
Återförsäljning av ST-produkter med bestämmelser som skiljer sig från den information som anges häri upphäver all garanti som beviljats av ST för sådan produkt.
ST och ST-logotypen är varumärken som tillhör ST. För ytterligare information om ST-varumärken, se www.st.com/trademarks. Alla andra produkt- eller tjänstnamn tillhör sina respektive ägare.
Informationen i detta dokument ersätter och ersätter information som tidigare tillhandahållits i tidigare versioner av detta dokument.
© 2024 STMicroelectronics – Alla rättigheter reserverade
Dokument/resurser
![]() |
ST X-CUBE-MEMS1 MotionEC är ett Middleware-bibliotek [pdf] Ägarmanual X-CUBE-MEMS1 MotionEC är ett Middleware Library, X-CUBE-MEMS1, MotionEC är ett Middleware Library, Middleware Library, Library |