UM2225
Gebruikershandleiding
Aan die gang met MotionEC-intydse E-Compass-biblioteek in X-CUBE-MEMS1-uitbreiding vir STM32Cube
Inleiding
Die MotionEC is 'n middelware-biblioteekkomponent van die X-CUBE-MEMS1-sagteware en loop op STM3z2. Dit verskaf intydse inligting oor die toestel se oriëntasie en bewegingstatus gebaseer op data vanaf 'n toestel.
Dit verskaf die volgende uitsette: toesteloriëntasie (quaternions, Euler-hoeke), toestelrotasie (virtuele giroskoopfunksionaliteit), swaartekragvektor en lineêre versnelling.
Hierdie biblioteek is bedoel om slegs met ST MEMS te werk.
Die algoritme word in statiese biblioteekformaat verskaf en is ontwerp om gebruik te word op STM32 mikrobeheerders gebaseer op die ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 en ARM® Cortex®-M7-argitekture.
Dit is bo-op STM32Cube-sagtewaretegnologie gebou om oordraagbaarheid oor verskillende STM32-mikrobeheerders te vergemaklik.
Die sagteware kom met sample implementering loop op X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 of X-NUCLEO-IKS02A1 uitbreidingsbord op 'n NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE of NUCLEO-L073RZ ontwikkelingsbord.
Akronieme en afkortings
Tabel 1. Lys van akronieme
Akroniem | Beskrywing |
API | Toepassingsprogrammeringskoppelvlak |
BSP | Raadsondersteuningspakket |
GUI | Grafiese gebruikerskoppelvlak |
HAL | Hardeware-abstraksie-laag |
IDE | Geïntegreerde ontwikkelings omgewing |
MotionEC middelware-biblioteek in X-CUBE-MEMS1 sagteware-uitbreiding vir STM32Cube
2.1 MotionEC verbyview
Die MotionEC-biblioteek brei die funksionaliteit van die X-CUBE-MEMS1-sagteware uit.
Die biblioteek verkry data van die versnellingsmeter en magnetometer en verskaf inligting oor die toestel se oriëntasie en bewegingstatus gebaseer op data van 'n toestel.
Die biblioteek is slegs vir ST MEMS ontwerp. Funksionaliteit en werkverrigting wanneer ander MEMS-sensors gebruik word, word nie ontleed nie en kan aansienlik verskil van wat in die dokument beskryf word.
A sample implementering is beskikbaar op X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 en X-NUCLEO-IKS02A1 uitbreidingsbord, gemonteer op 'n NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE of NUCLEO-L073REZ.
2.2 MotionEC-biblioteek
Tegniese inligting wat die funksies en parameters van die MotionEC API's volledig beskryf, kan gevind word in die MotionEC_Package.chm saamgestelde HTML file geleë in die Documentation-lêergids.
2.2.1 MotionEC-biblioteekbeskrywing
Die MotionEC E-Compass-biblioteek bestuur data verkry vanaf die versnellingsmeter en magnetometer; dit bevat:
- toesteloriëntasie (quaternions, Euler-hoeke), toestelrotasie (virtuele gyroskoopfunksionaliteit), swaartekragvektor en lineêre versnellingsuitsette
- funksionaliteit slegs gebaseer op die versnellingsmeter en magnetometerdata
- vereiste versnellingsmeter en magnetometer data sampling frekwensie van tot 100 Hz
- hulpbronne vereistes:
– Cortex-M0+: 3.7 kB kode en 0.1 kB datageheue
– Cortex-M3: 3.8 kB kode en 0.1 kB datageheue
– Cortex-M33: 2.8 kB kode en 0.1 kB datageheue
– Cortex-M4: 2.9 kB kode en 0.1 kB datageheue
– Cortex-M7: 2.8 kB kode en 0.1 kB datageheue - beskikbaar vir ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 en Cortex M7 argitekture
2.2.2 MotionEC API's
Die MotionEC API's is:
- uint8_t MotionEC_GetLibVersion(char *weergawe)
– haal die weergawe van die biblioteek op
– *weergawe is 'n wyser na 'n skikking van 35 karakters
– gee die aantal karakters in die weergawestring terug
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
- voer MotionEC biblioteek inisialisering en opstelling van die interne meganisme uit.
– mcu_type is die tipe MCU:
◦ MFX_CM0P_MCU_STM32 is 'n standaard STM32 MCU
◦ MFX_CM0P_MCU_BLUE_NRG1 is BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 is BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP is BlueNRG -LP
– frek is die sensor sampling frekwensie [Hz]
Let wel: Hierdie funksie moet geroep word voordat die E-Compass-biblioteek gebruik word en die CRC-module in STM32-mikrobeheerder (in RCC perifere klok-aktiveerregister) moet geaktiveer word voordat die biblioteek gebruik word
- void MotionEC_SetFrequency(float freq)
– stel die sampling frekwensie (wysiging van die filter parameters)
– frek is die sensor sampling frekwensie [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
- loop die E-Compass-algoritme (versneller- en magnetometerdatasamesmelting)
– *data_in is 'n wyser na 'n struktuur met invoerdata
– die parameters vir die struktuurtipe MEC_input_t is:
◦ acc[3] is 'n reeks versnellingsmeterdata in ENU-konvensie, gemeet in g
◦ mag[3] is 'n reeks magnetometer-gekalibreerde data in ENU-konvensie, gemeet in μT/50
◦ deltatyd s is die deltatyd (dws tydsvertraging tussen ou en nuwe datastel) gemeet in s
– *data_out is 'n wyser na 'n struktuur met uitsetdata
– die parameters vir die struktuurtipe MEC_output_t is:
◦ quaternion[4] is 'n skikking wat quaternion in ENU-konvensie bevat, wat die 3Dangular-oriëntasie van die toestel in die ruimte verteenwoordig; volgorde van elemente is: X, Y, Z, W, met altyd positiewe element W
◦ euler[3] is 'n reeks Euler-hoeke in ENU-konvensie, wat die 3D-hoekoriëntasie van die toestel in die ruimte voorstel; die volgorde van die elemente is: swaai, steek, rol, gemeet in deg
◦ i_gyro[3] is 'n reeks hoektempo's in ENU-konvensie, wat 'n virtuele giroskoopsensor verteenwoordig, gemeet in dps
◦ swaartekrag[3] is 'n reeks versnellings in ENU-konvensie, wat die swaartekragvektor voorstel, gemeet in g
◦ lineêr[3] is 'n reeks versnellings in ENU-konvensie, wat die toestel lineêre versnelling verteenwoordig, gemeet in g
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– kry die aktiveer/deaktiveer toestand van die Euler-hoekberekening
– *toestand is 'n wyser na die huidige aktiveer/deaktiveer toestand - void MotionEC_SetOrientationEnable(MEC_state_t state)
– stel die aktiveer/deaktiveer toestand van die Euler-hoekberekening
– toestand is die nuwe aktiveer/deaktiveer toestand wat ingestel moet word - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– kry die aktiveer/deaktiveer toestand van die virtuele gyroskoopberekening
– *toestand is 'n wyser na die huidige aktiveer/deaktiveer toestand - void MotionEC_SetVirtualGyroEnable(MEC_state_t state)
– stel die aktiveer/deaktiveer toestand van die virtuele gyroskoopberekening in
– toestand is die nuwe aktiveer/deaktiveer toestand wat ingestel moet word - void MotionEC_GetGravityEnable(MEC_state_t *state)
– kry die aktiveer/deaktiveer toestand van die gravitasievektorberekening
– *toestand is 'n wyser na die huidige aktiveer/deaktiveer toestand - void MotionEC_SetGravityEnable(MEC_state_t state)
– stel die aktiveer/deaktiveer toestand van die gravitasievektorberekening
– toestand is die nuwe aktiveer/deaktiveer toestand wat ingestel moet word - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– kry die aktiveer/deaktiveer toestand van die lineêre versnelling berekening
– *toestand is 'n wyser na die huidige aktiveer/deaktiveer toestand - void MotionEC_SetLinearAccEnable(MEC_state_t state)
– stel die aktiveer/deaktiveer toestand van die lineêre versnelling berekening
– toestand is die nuwe aktiveer/deaktiveer toestand wat ingestel moet word
2.2.3 API-vloeidiagram
2.2.4 Demo-kode
Die volgende demonstrasiekode lees data van die versnellingsmeter- en magnetometersensors en kry die ECompass-data (dws quaternion, Euler-hoeke, ens.).
2.2.5 Algoritmeprestasie
Die E-Kompas-algoritme gebruik slegs data van die versnellingsmeter en magnetometer. Dit werk teen 'n lae frekwensie (tot 100 Hz) om kragverbruik te verminder.
Sample aansoek
Die MotionEC-middelware kan maklik gemanipuleer word om gebruikerstoepassings te bou; asampDie toepassing word in die toepassingslêergids verskaf.
Dit is ontwerp om te loop op 'n NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE of NUCLEO-L073RZ ontwikkelingsbord gekoppel aan 'n X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 of X-NUCLEO-IKS02A1extensie.
Die toepassing herken die toesteloriëntasie en -rotasie intyds. Die data kan deur 'n GUI vertoon word.
Die algoritme verskaf die volgende uitsette: toesteloriëntasie (quaternions, Euler-hoeke), toestelrotasie (virtuele giroskoopfunksionaliteit), swaartekragvektor en lineêre versnelling.
3.1 MEMS-Studio-toepassing
Die sample toepassing gebruik die MEMS-Studio toepassing, wat afgelaai kan word vanaf www.st.com.
Stap 1. Maak seker dat die nodige drywers geïnstalleer is en dat die STM32 Nucleo-bord met toepaslike uitbreidingsbord aan die rekenaar gekoppel is.
Stap 2. Begin die MEMS-Studio-toepassing om die hooftoepassingsvenster oop te maak.
As 'n STM32 Nucleo-bord met ondersteunde firmware aan die rekenaar gekoppel is, word die toepaslike COM-poort outomaties opgespoor. Druk die [Connect]-knoppie om verbinding met die evalueringsbord te bewerkstellig.
Stap 3. Wanneer gekoppel aan 'n STM32 Nucleo-bord met ondersteunde firmware, word [Biblioteek-evaluering]-oortjie oopgemaak.
Om datastroom te begin en te stop, skakel die toepaslike [Begin] of [Stop]
knoppie op die buitenste vertikale nutsbalk.
Die data wat van die gekoppelde sensor kom, kan wees viewed deur die [Datatabel]-oortjie op die binneste vertikale nutsbalk te kies.
Stap 4. Klik op die [E-Compass] om die toegewyde bladsy vir hierdie biblioteek oop te maak.
Die figuur hierbo toon 'n STM32 Nucleo grafiese model. Die modeloriëntasie en -rotasie is gebaseer op E-Compass-data (quaternions) wat deur die algoritme bereken is.
Om die werklike toestelbeweging met die grafiese model in lyn te bring, wys die toestel na die skerm en druk die [Herstel model].
Die opskrifwaarde verteenwoordig die werklike toestelopskrif.
Deur die toestel reguit op of af te wys (langs Op-as van ENU-verwysingsraamwerk, met ±5 grade toleransie) gee NVT-waarde vir die opskrif: dit is nie moontlik om te onderskei na watter kardinale punt die toestel wys nie.
Die goedheidswaarde gee 0 tot 3 waardes en hou verband met die magnetometerkalibrasie: hoe hoër die waarde, hoe beter is die resultate van die E-Compass-dataalgoritme.
Stap 5. Klik op [Stoor na File] om die datalogering-konfigurasievenster oop te maak. Kies die sensor en E-Kompas data wat gestoor moet word in die file. U kan stoor begin of stop deur op die ooreenstemmende knoppie te klik.
Stap 6. Data-inspuitmodus kan gebruik word om die voorheen verkry data na die biblioteek te stuur en die resultaat te ontvang. Kies die [Data-inspuiting]-oortjie op die vertikale nutsbalk om die toegewyde oop te maak view vir hierdie funksionaliteit.
Stap 7. Klik op die [Blaai]-knoppie om die file met die voorheen vasgelê data in CSV-formaat.
Die data sal in die huidige in die tabel gelaai word view.
Ander knoppies sal aktief word. Jy kan klik op:
– [Vanlynmodus]-knoppie om die firmware-aflynmodus aan/af te skakel (modus wat die voorheen vasgelê data gebruik).
– [Begin]/[Stop]/[Stap]/[Herhaal]-knoppies om die datatoevoer vanaf MEMS-Studio na die biblioteek te beheer.
Verwysings
Al die volgende hulpbronne is vrylik beskikbaar op www.st.com.
- UM1859: Aan die gang met die X-CUBE-MEMS1 beweging MEMS en omgewingsensor sagteware uitbreiding vir STM32Cube
- UM1724: STM32 Nucleo-64-borde (MB1136)
- UM3233: Aan die gang met MEMS-Studio
Hersieningsgeskiedenis
Tabel 4. Dokument hersieningsgeskiedenis
Datum | Weergawe | Veranderinge |
18-Mei-17 | 1 | Aanvanklike vrystelling. |
25-Jan-18 | 2 | Verwysings by NUCLEO-L152RE-ontwikkelingsbord en Tabel 2 gevoeg. Verstreke tyd (μs) algoritme. |
21-Mrt-18 | 3 | Opgedateerde inleiding en afdeling 2.1 MotionEC verbyview. |
26-Nov-18 | 4 | Bygevoeg Tabel 3. Korteks -M0+: verstreke tyd (µs) algoritme. Bygevoeg verwysings na ARM® Cortex® – M0+ en NUCLEO-L073RZ ontwikkelingsbord. |
19-19 Feb | 5 | Bygewerkte Figuur 1. ENU-verwysingsraamwerk, Tabel 2. Korteks -M4 en Korteks-M3: verstreke tyd (µs) algoritme, Tabel 3. Cortex -M0+: algoritme vir verstreke tyd (µs), Figuur 3. Sensoruitbreidingsbordadapter gekoppel aan die STM32 Nucleo, Figuur 4. Unicleo-hoofvenster, Figuur 5. Gebruikersboodskappe-oortjie, Figuur 6. E-Kompas-venster en Figuur 7. Datalog-venster. Bygevoeg X-NUCLEO-IKS01A3 uitbreiding bord verenigbaarheid inligting. |
25-Mrt-20 | 6 | Opgedateerde Inleiding, Afdeling 2.2.1: MotionEC-biblioteekbeskrywing en Afdeling 2.2.5: Algoritmeprestasie. Bygevoeg ARM Cortex-M7 argitektuur verenigbaarheid inligting. |
17-Sep-24 | 7 | Opgedateerde afdeling-inleiding, Afdeling 2.1: MotionEC verbyview, Afdeling 2.2.1: MotionEC-biblioteek beskrywing, Afdeling 2.2.2: MotionEC API's, Afdeling 2.2.5: Algoritme prestasie, Afdeling 3: Sample toepassing, Afdeling 3.1: MEMS-Studio-toepassing |
BELANGRIKE KENNISGEWING – LEES SORGVULDIG
STMicroelectronics NV en sy filiale (“ST”) behou die reg voor om enige tyd sonder kennisgewing veranderinge, regstellings, verbeterings, wysigings en verbeterings aan ST-produkte en/of hierdie dokument aan te bring. Kopers moet die nuutste relevante inligting oor ST-produkte bekom voordat hulle bestellings plaas. ST-produkte word verkoop ingevolge ST se verkoopsbepalings en -voorwaardes wat ten tyde van bestellingserkenning in plek is.
Kopers is alleen verantwoordelik vir die keuse, seleksie en gebruik van ST-produkte en ST aanvaar geen aanspreeklikheid vir aansoekbystand of die ontwerp van kopers se produkte nie.
Geen lisensie, uitdruklik of geïmpliseer, tot enige intellektuele eiendomsreg word hierin deur ST toegestaan nie.
Herverkoop van ST-produkte met bepalings anders as die inligting wat hierin uiteengesit word, sal enige waarborg wat deur ST vir sodanige produk verleen word, nietig verklaar.
ST en die ST-logo is handelsmerke van ST. Vir bykomende inligting oor ST-handelsmerke, verwys na www.st.com/handelsmerke. Alle ander produk- of diensname is die eiendom van hul onderskeie eienaars.
Inligting in hierdie dokument vervang en vervang inligting wat voorheen in enige vorige weergawes van hierdie dokument verskaf is.
© 2024 STMicroelectronics – Alle regte voorbehou
Dokumente / Hulpbronne
![]() |
ST X-CUBE-MEMS1 MotionEC is 'n middelware-biblioteek [pdf] Eienaar se Handleiding X-CUBE-MEMS1 MotionEC is 'n middelware-biblioteek, X-CUBE-MEMS1, MotionEC is 'n middelware-biblioteek, middelware-biblioteek, biblioteek |