UM2225
Brukerhåndbok
Komme i gang med MotionEC sanntids E-Compass-bibliotek i X-CUBE-MEMS1 utvidelse for STM32Cube
Introduksjon
MotionEC er en mellomvarebibliotekskomponent i X-CUBE-MEMS1-programvaren og kjører på STM3z2. Den gir sanntidsinformasjon om enhetens orientering og bevegelsesstatus basert på data fra en enhet.
Den gir følgende utganger: enhetsorientering (kvaternioner, Euler-vinkler), enhetsrotasjon (virtuell gyroskopfunksjonalitet), gravitasjonsvektor og lineær akselerasjon.
Dette biblioteket er kun ment å fungere med ST MEMS.
Algoritmen leveres i statisk biblioteksformat og er designet for å brukes på STM32 mikrokontrollere basert på ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 og ARM® Cortex®-M7-arkitekturer.
Den er bygget på toppen av STM32Cube programvareteknologi for å lette portabiliteten på tvers av forskjellige STM32 mikrokontrollere.
Programvaren kommer med sampen implementering som kjører på X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 eller X-NUCLEO-IKS02A1 utvidelseskort på et NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RZ utviklingskort.
Akronymer og forkortelser
Tabell 1. Liste over akronymer
Akronym | Beskrivelse |
API | Applikasjonsprogrammeringsgrensesnitt |
BSP | Styrestøttepakke |
GUI | Grafisk brukergrensesnitt |
HAL | Maskinvareabstraksjonslag |
IDE | Integrert utviklingsmiljø |
MotionEC mellomvarebibliotek i X-CUBE-MEMS1 programvareutvidelse for STM32Cube
2.1 MotionEC overview
MotionEC-biblioteket utvider funksjonaliteten til X-CUBE-MEMS1-programvaren.
Biblioteket henter inn data fra akselerometeret og magnetometeret og gir informasjon om enhetens orientering og bevegelsesstatus basert på data fra en enhet.
Biblioteket er kun designet for ST MEMS. Funksjonalitet og ytelse ved bruk av andre MEMS-sensorer blir ikke analysert og kan være vesentlig forskjellig fra det som er beskrevet i dokumentet.
A sampimplementeringen er tilgjengelig på X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 og X-NUCLEO-IKS02A1 utvidelseskort, montert på et NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RE.
2.2 MotionEC-bibliotek
Teknisk informasjon som fullstendig beskriver funksjonene og parametrene til MotionEC API-ene finnes i MotionEC_Package.chm kompilerte HTML file ligger i dokumentasjonsmappen.
2.2.1 MotionEC-bibliotekbeskrivelse
MotionEC E-Compass-biblioteket administrerer data hentet fra akselerometeret og magnetometeret; den har:
- enhetsorientering (kvarternioner, Euler-vinkler), enhetsrotasjon (virtuell gyroskopfunksjonalitet), gravitasjonsvektor og lineære akselerasjonsutganger
- funksjonalitet kun basert på akselerometer- og magnetometerdata
- nødvendige akselerometer- og magnetometerdata samplingfrekvens på opptil 100 Hz
- ressurskrav:
– Cortex-M0+: 3.7 kB kode og 0.1 kB dataminne
– Cortex-M3: 3.8 kB kode og 0.1 kB dataminne
– Cortex-M33: 2.8 kB kode og 0.1 kB dataminne
– Cortex-M4: 2.9 kB kode og 0.1 kB dataminne
– Cortex-M7: 2.8 kB kode og 0.1 kB dataminne - tilgjengelig for ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 og Cortex M7 arkitekturer
2.2.2 MotionEC APIer
MotionEC API-ene er:
- uint8_t MotionEC_GetLibVersion(tegn *versjon)
– henter versjonen av biblioteket
– *versjon er en peker til en matrise på 35 tegn
– returnerer antall tegn i versjonsstrengen
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– utfører MotionEC-bibliotekinitialisering og oppsett av den interne mekanismen.
– mcu_type er typen MCU:
◦ MFX_CM0P_MCU_STM32 er en standard STM32 MCU
◦ MFX_CM0P_MCU_BLUE_NRG1 er BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 er BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP er BlueNRG -LP
– freq er sensoren samplingfrekvens [Hz]
Note: Denne funksjonen må kalles opp før du bruker E-Compass-biblioteket, og CRC-modulen i STM32 mikrokontroller (i RCC perifer klokke aktiveringsregister) må aktiveres før du bruker biblioteket
- void MotionEC_SetFrequency(float freq)
– setter sampling-frekvens (endringer av filtreringsparametrene)
– freq er sensoren samplingfrekvens [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
- kjører E-Compass-algoritmen (akselerometer og magnetometer datafusjon)
– *data_in er en peker til en struktur med inndata
– parametrene for strukturtypen MEC_input_t er:
◦ acc[3] er en rekke akselerometerdata i ENU-konvensjonen, målt i g
◦ mag[3] er en rekke magnetometerkalibrerte data i ENU-konvensjonen, målt i μT/50
◦ deltatid s er deltatiden (dvs. tidsforsinkelse mellom gammelt og nytt datasett) målt i s
– *data_out er en peker til en struktur med utdata
– parametrene for strukturtypen MEC_output_t er:
◦ quaternion[4] er array som inneholder quaternion i ENU-konvensjonen, som representerer 3Dangular-orienteringen til enheten i rommet; rekkefølgen av elementer er: X, Y, Z, W, med alltid positivt element W
◦ euler[3] er en rekke Euler-vinkler i ENU-konvensjonen, som representerer 3D-vinkelorienteringen til enheten i rommet; rekkefølgen på elementene er: yaw, pitch, roll, målt i grader
◦ i_gyro[3] er en rekke vinkelhastigheter i ENU-konvensjonen, som representerer en virtuell gyroskopsensor, målt i dps
◦ gravitasjon[3] er en rekke akselerasjoner i ENU-konvensjonen, som representerer gravitasjonsvektoren, målt i g
◦ lineær[3] er en rekke akselerasjoner i ENU-konvensjonen, som representerer enhetens lineære akselerasjon, målt i g
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– får aktiverings-/deaktiveringstilstanden til Euler-vinkelberegningen
– *tilstand er en peker til gjeldende aktiverings-/deaktiveringstilstand - void MotionEC_SetOrientationEnable(MEC_state_t state)
– setter aktiverings-/deaktiveringstilstanden for Euler-vinkelberegningen
– tilstand er den nye aktiverings-/deaktiveringstilstanden som skal settes - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– får aktiverings-/deaktiveringstilstanden for beregningen av det virtuelle gyroskopet
– *tilstand er en peker til gjeldende aktiverings-/deaktiveringstilstand - void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
– setter aktiverings-/deaktiveringstilstanden for beregningen av det virtuelle gyroskopet
– tilstand er den nye aktiverings-/deaktiveringstilstanden som skal settes - void MotionEC_GetGravityEnable(MEC_state_t *state)
– får aktiverings-/deaktiveringstilstanden til gravitasjonsvektorberegningen
– *tilstand er en peker til gjeldende aktiverings-/deaktiveringstilstand - void MotionEC_SetGravityEnable(MEC_state_t state)
– setter aktiverings-/deaktiveringstilstanden til gravitasjonsvektorberegningen
– tilstand er den nye aktiverings-/deaktiveringstilstanden som skal settes - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– får aktiverings-/deaktiveringstilstanden til beregningen av lineær akselerasjon
– *tilstand er en peker til gjeldende aktiverings-/deaktiveringstilstand - void MotionEC_SetLinearAccEnable(MEC_state_t state)
– setter aktiverings-/deaktiveringstilstanden for beregningen av lineær akselerasjon
– tilstand er den nye aktiverings-/deaktiveringstilstanden som skal settes
2.2.3 API-flytskjema
2.2.4 Demokode
Følgende demonstrasjonskode leser data fra akselerometer- og magnetometersensorene og henter ECompass-dataene (dvs. quaternion, Euler-vinkler osv.).
2.2.5 Algoritmeytelse
E-Compass-algoritmen bruker kun data fra akselerometeret og magnetometeret. Den kjører på en lav frekvens (opptil 100 Hz) for å redusere strømforbruket.
Sample søknaden
MotionEC-mellomvaren kan enkelt manipuleres for å bygge brukerapplikasjoner; somampapplikasjonen finnes i applikasjonsmappen.
Den er designet for å kjøre på et NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE eller NUCLEO-L073RZ utviklingskort koblet til et X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 eller X-NUCLEO-IKS02A1ex.
Applikasjonen gjenkjenner enhetens orientering og rotasjon i sanntid. Dataene kan vises gjennom en GUI.
Algoritmen gir følgende utganger: enhetsorientering (kvaternioner, Euler-vinkler), enhetsrotasjon (virtuell gyroskopfunksjonalitet), gravitasjonsvektor og lineær akselerasjon.
3.1 MEMS-Studio-applikasjon
Sample-applikasjonen bruker MEMS-Studio-applikasjonen, som kan lastes ned fra www.st.com.
Trinn 1. Sørg for at de nødvendige driverne er installert og at STM32 Nucleo-kortet med passende utvidelseskort er koblet til PC-en.
Trinn 2. Start MEMS-Studio-applikasjonen for å åpne hovedprogramvinduet.
Hvis et STM32 Nucleo-kort med støttet fastvare er koblet til PC-en, oppdages den riktige COM-porten automatisk. Trykk på [Koble til]-knappen for å opprette forbindelse til evalueringstavlen.
Trinn 3. Når den er koblet til et STM32 Nucleo-kort med støttet fastvare, åpnes [Library Evaluation]-fanen.
For å starte og stoppe datastrømming, veksle mellom passende [Start] eller [Stopp]
knappen på den ytre vertikale verktøylinjen.
Dataene som kommer fra den tilkoblede sensoren kan være viewed å velge kategorien [Data Table] på den indre vertikale verktøylinjen.
Trinn 4. Klikk på [E-Compass] for å åpne den dedikerte siden for dette biblioteket.
Figuren over viser en STM32 Nucleo grafisk modell. Modellorienteringen og rotasjonen er basert på E-Compass-data (quaternioner) beregnet av algoritmen.
For å justere den virkelige enhetens bevegelse med den grafiske modellen, pek enheten mot skjermen og trykk på [Reset model].
Overskriftsverdien representerer den virkelige enhetsoverskriften.
Å peke enheten rett opp eller ned (langs opp-aksen til ENU-referanserammen, med ±5 graders toleranse) gir N/A verdi for overskriften: det er ikke mulig å skille til hvilket kardinalpunkt enheten peker til.
Godhetsverdien gir 0 til 3 verdier og er relatert til magnetometerkalibreringen: jo høyere verdi, desto bedre blir resultatene av E-Compass-dataalgoritmen.
Trinn 5. Klikk på [Lagre til File] for å åpne konfigurasjonsvinduet for datalogging. Velg sensor- og E-kompassdata som skal lagres i file. Du kan starte eller slutte å lagre ved å klikke på den tilsvarende knappen.
Trinn 6. Datainjeksjonsmodus kan brukes til å sende tidligere innhentede data til biblioteket og motta resultatet. Velg kategorien [Datainjeksjon] på den vertikale verktøylinjen for å åpne den dedikerte view for denne funksjonaliteten.
Trinn 7. Klikk på [Bla gjennom]-knappen for å velge file med tidligere innhentede data i CSV-format.
Dataene vil bli lastet inn i tabellen i gjeldende view.
Andre knapper blir aktive. Du kan klikke på:
– [Frakoblet modus]-knapp for å slå fastvaren frakoblet modus på/av (modus som bruker tidligere innhentede data).
– [Start]/[Stopp]/[Step]/[Gjenta]-knapper for å kontrollere datamatingen fra MEMS-Studio til biblioteket.
Referanser
Alle de følgende ressursene er fritt tilgjengelig på www.st.com.
- UM1859: Komme i gang med X-CUBE-MEMS1 motion MEMS og miljøsensorprogramvareutvidelse for STM32Cube
- UM1724: STM32 Nucleo-64-kort (MB1136)
- UM3233: Komme i gang med MEMS-Studio
Revisjonshistorikk
Tabell 4. Dokumentrevisjonshistorikk
Dato | Versjon | Endringer |
18. mai-17 | 1 | Første utgivelse. |
25-jan-18 | 2 | Lagt til referanser til NUCLEO-L152RE utviklingsbrett og tabell 2. Algoritme for medgått tid (μs). |
21. mars 18 | 3 | Oppdatert introduksjon og avsnitt 2.1 MotionEC overview. |
26. nov. 18 | 4 | Lagt til tabell 3. Cortex -M0+: algoritme for medgått tid (µs). Lagt til referanser til ARM® Cortex® – M0+ og NUCLEO-L073RZ utviklingskort. |
19-19 februar | 5 | Oppdatert figur 1. ENU-referanseramme, tabell 2. Cortex -M4 og Cortex-M3: algoritme for medgått tid (µs), tabell 3. Cortex -M0+: algoritme for medgått tid (µs), figur 3. Adapter for sensorutvidelseskort koblet til STM32 Nucleo, Figur 4. Unicleo hovedvindu, Figur 5. Brukermeldinger-fanen, Figur 6. E-Compass-vindu og Figur 7. Datalog-vindu. Lagt til X-NUCLEO-IKS01A3 utvidelseskortkompatibilitetsinformasjon. |
25. mars 20 | 6 | Oppdatert introduksjon, del 2.2.1: MotionEC-bibliotekbeskrivelse og del 2.2.5: Algoritmeytelse. Lagt til ARM Cortex-M7-arkitekturkompatibilitetsinformasjon. |
17. september 24 | 7 | Oppdatert seksjonsintroduksjon, Seksjon 2.1: MotionEC overview, Seksjon 2.2.1: MotionEC-bibliotek beskrivelse, avsnitt 2.2.2: MotionEC APIer, del 2.2.5: Algoritme ytelse, del 3: Sample applikasjon, avsnitt 3.1: MEMS-Studio applikasjon |
VIKTIG MERKNAD – LES NØYE
STMicroelectronics NV og dets datterselskaper ("ST") forbeholder seg retten til å gjøre endringer, rettelser, forbedringer, modifikasjoner og forbedringer av ST-produkter og/eller dette dokumentet når som helst uten varsel. Kjøpere bør innhente den nyeste relevante informasjonen om ST-produkter før de legger inn bestillinger. ST-produkter selges i henhold til STs salgsvilkår som er på plass på tidspunktet for ordrebekreftelse.
Kjøpere er alene ansvarlige for valg, valg og bruk av ST-produkter og ST påtar seg intet ansvar for søknadshjelp eller utforming av kjøpers produkter.
Ingen lisens, uttrykt eller underforstått, til noen immaterielle rettigheter er gitt av ST heri.
Videresalg av ST-produkter med andre bestemmelser enn informasjonen som er angitt her, vil ugyldiggjøre enhver garanti gitt av ST for slikt produkt.
ST og ST-logoen er varemerker for ST. For ytterligere informasjon om ST-varemerker, se www.st.com/trademarks. Alle andre produkt- eller tjenestenavn tilhører sine respektive eiere.
Informasjonen i dette dokumentet erstatter og erstatter informasjon som tidligere er gitt i tidligere versjoner av dette dokumentet.
© 2024 STMicroelectronics – Alle rettigheter forbeholdt
Dokumenter / Ressurser
![]() |
ST X-CUBE-MEMS1 MotionEC er et mellomvarebibliotek [pdf] Brukerhåndbok X-CUBE-MEMS1 MotionEC er et mellomvarebibliotek, X-CUBE-MEMS1, MotionEC er et mellomvarebibliotek, mellomvarebibliotek, bibliotek |