UM2225
Instrukcja obsługi
Rozpoczęcie pracy z biblioteką MotionEC E-Compass w czasie rzeczywistym w rozszerzeniu X-CUBE-MEMS1 dla STM32Cube
Wstęp
MotionEC to biblioteka middleware oprogramowania X-CUBE-MEMS1, która działa na STM3z2. Dostarcza informacji w czasie rzeczywistym o orientacji urządzenia i stanie ruchu na podstawie danych z urządzenia.
Zapewnia następujące dane wyjściowe: orientacja urządzenia (kwaterniony, kąty Eulera), obrót urządzenia (funkcjonalność wirtualnego żyroskopu), wektor grawitacji i przyspieszenie liniowe.
Ta biblioteka jest przeznaczona do pracy wyłącznie z ST MEMS.
Algorytm jest dostępny w formacie biblioteki statycznej i przeznaczony jest do stosowania w mikrokontrolerach STM32 opartych na architekturach ARM® Cortex®-M0+, ARM® Cortex®-M3, ARM® Cortex®-M33, ARM® Cortex®-M4 i ARM® Cortex®-M7.
Został zbudowany na bazie technologii oprogramowania STM32Cube, aby ułatwić przenoszenie między różnymi mikrokontrolerami STM32.
Oprogramowanie jest dostarczane z sampImplementacja pliku le uruchomiona na karcie rozszerzeń X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 lub X-NUCLEO-IKS02A1 na płycie rozwojowej NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE lub NUCLEO-L073RZ.
Akronimy i skróty
Tabela 1. Lista akronimów
Akronim | Opis |
API | Interfejs programowania aplikacji |
BSP | Pakiet wsparcia zarządu |
Interfejs graficzny | Graficzny interfejs użytkownika |
HAL | Warstwa abstrakcji sprzętu |
Środowisko programistyczne (IDE) | Zintegrowane środowisko programistyczne |
Biblioteka oprogramowania pośredniczącego MotionEC w rozszerzeniu oprogramowania X-CUBE-MEMS1 dla STM32Cube
2.1 MotionEC ponadview
Biblioteka MotionEC rozszerza funkcjonalność oprogramowania X-CUBE-MEMS1.
Biblioteka pobiera dane z akcelerometru i magnetometru i na podstawie danych z urządzenia dostarcza informacji o orientacji i stanie ruchu urządzenia.
Biblioteka jest przeznaczona wyłącznie dla ST MEMS. Funkcjonalność i wydajność podczas korzystania z innych czujników MEMS nie są analizowane i mogą znacznie różnić się od opisanych w dokumencie.
JakampImplementacja jest dostępna na kartach rozszerzeń X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 i X-NUCLEO-IKS02A1 zamontowanych na płytach deweloperskich NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE lub NUCLEO-L073RZ.
2.2 Biblioteka MotionEC
Pełne informacje techniczne opisujące funkcje i parametry interfejsów API MotionEC można znaleźć w skompilowanym pliku HTML MotionEC_Package.chm file znajduje się w folderze Dokumentacja.
2.2.1 Opis biblioteki MotionEC
Biblioteka MotionEC E-Compass zarządza danymi pozyskanymi z akcelerometru i magnetometru. Oferuje ona:
- orientacja urządzenia (kwaterniony, kąty Eulera), obrót urządzenia (funkcjonalność wirtualnego żyroskopu), wektor grawitacji i wyjścia przyspieszenia liniowego
- funkcjonalność oparta wyłącznie na danych z akcelerometru i magnetometru
- wymagane dane akcelerometru i magnetometruampczęstotliwość ling do 100 Hz
- wymagania dotyczące zasobów:
– Cortex-M0+: 3.7 kB kodu i 0.1 kB pamięci danych
– Cortex-M3: 3.8 kB kodu i 0.1 kB pamięci danych
– Cortex-M33: 2.8 kB kodu i 0.1 kB pamięci danych
– Cortex-M4: 2.9 kB kodu i 0.1 kB pamięci danych
– Cortex-M7: 2.8 kB kodu i 0.1 kB pamięci danych - dostępne dla architektur ARM Cortex M0+, Cortex-M3, Cortex-M33, Cortex-M4 i Cortex M7
2.2.2 Interfejsy API MotionEC
Interfejsy API MotionEC to:
- uint8_t MotionEC_GetLibVersion(char *wersja)
– pobiera wersję biblioteki
– *wersja jest wskaźnikiem do tablicy 35 znaków
– zwraca liczbę znaków w ciągu wersji
• void MotionEC_Initialize(MEC_mcu_type_t mcu_type, float freq)
– wykonuje inicjalizację biblioteki MotionEC i konfigurację wewnętrznego mechanizmu.
– mcu_type to typ MCU:
◦ MFX_CM0P_MCU_STM32 to standardowy mikrokontroler STM32
◦ MFX_CM0P_MCU_BLUE_NRG1 to BlueNRG-1
◦ MFX_CM0P_MCU_BLUE_NRG2 to BlueNRG-2
◦ MFX_CM0P_MCU_BLUE_NRG_LP to BlueNRG -LP
– częstotliwość to czujnik sampczęstotliwość ling [Hz]
Notatka: Tę funkcję należy wywołać przed użyciem biblioteki E-Compass, a moduł CRC w mikrokontrolerze STM32 (w rejestrze włączania zegara peryferyjnego RCC) musi zostać włączony przed użyciem biblioteki.
- void MotionEC_SetFrequency(float częstotliwość)
– ustawia sampczęstotliwość ling (modyfikacja parametrów filtrowania)
– częstotliwość to czujnik sampczęstotliwość ling [Hz] • void MotionEC_Run(MEC_input_t *data_in, MEC_output_t *data_out)
– uruchamia algorytm E-Compass (połączenie danych z akcelerometru i magnetometru)
– *data_in to wskaźnik do struktury z danymi wejściowymi
– parametry dla typu struktury MEC_input_t to:
◦ acc[3] to tablica danych akcelerometru w konwencji ENU, mierzona w g
◦ mag[3] to tablica skalibrowanych danych magnetometru w konwencji ENU, mierzona w μT/50
◦ deltatime s to czas delta (czyli opóźnienie czasowe między starym a nowym zestawem danych) mierzony w s
– *data_out to wskaźnik do struktury z danymi wyjściowymi
– parametry typu struktury MEC_output_t to:
◦ quaternion[4] to tablica zawierająca kwaternion w konwencji ENU, reprezentująca orientację kątową urządzenia w przestrzeni; kolejność elementów to: X, Y, Z, W, przy czym element W jest zawsze dodatni
◦ euler[3] to tablica kątów Eulera w konwencji ENU, reprezentująca trójwymiarową orientację kątową urządzenia w przestrzeni; kolejność elementów jest następująca: odchylenie, pochylenie, przechylenie, mierzone w stopniach
◦ i_gyro[3] to tablica prędkości kątowych w konwencji ENU, reprezentująca wirtualny czujnik żyroskopu, mierzona w dps
◦ grawitacja[3] to tablica przyspieszeń w konwencji ENU, reprezentująca wektor grawitacji mierzony w g
◦ linear[3] to tablica przyspieszeń w konwencji ENU, reprezentująca liniowe przyspieszenie urządzenia mierzone w g
- void MotionEC_GetOrientationEnable(MEC_state_t *state)
– pobiera stan włączenia/wyłączenia obliczenia kąta Eulera
– *state jest wskaźnikiem do bieżącego stanu włączania/wyłączania - void MotionEC_SetOrientationEnable(stan MEC_state_t)
– ustawia stan włączenia/wyłączenia obliczania kąta Eulera
– stan to nowy stan włączania/wyłączania, który należy ustawić - void MotionEC_GetVirtualGyroEnable(MEC_state_t *state)
– pobiera stan włączania/wyłączania obliczeń wirtualnego żyroskopu
– *state jest wskaźnikiem do bieżącego stanu włączania/wyłączania - void MotionEC_SetVirtualGyroEnable(stan MEC_state_t)
– ustawia stan włączania/wyłączania obliczeń wirtualnego żyroskopu
– stan to nowy stan włączania/wyłączania, który należy ustawić - void MotionEC_GetGravityEnable(MEC_state_t *state)
– pobiera stan włączania/wyłączania obliczeń wektora grawitacji
– *state jest wskaźnikiem do bieżącego stanu włączania/wyłączania - void MotionEC_SetGravityEnable(stan MEC_state_t)
– ustawia stan włączenia/wyłączenia obliczeń wektora grawitacji
– stan to nowy stan włączania/wyłączania, który należy ustawić - void MotionEC_GetLinearAccEnable(MEC_state_t *state)
– pobiera stan włączenia/wyłączenia obliczeń przyspieszenia liniowego
– *state jest wskaźnikiem do bieżącego stanu włączania/wyłączania - void MotionEC_SetLinearAccEnable(stan MEC_state_t)
– ustawia stan włączenia/wyłączenia obliczeń przyspieszenia liniowego
– stan to nowy stan włączania/wyłączania, który należy ustawić
2.2.3 Schemat przepływu API
2.2.4 Kod demonstracyjny
Poniższy kod demonstracyjny odczytuje dane z czujników akcelerometru i magnetometru i pobiera dane ECompass (tj. kwaterniony, kąty Eulera itp.).
2.2.5 Wydajność algorytmu
Algorytm E-Compass wykorzystuje dane tylko z akcelerometru i magnetometru. Działa na niskiej częstotliwości (do 100 Hz), aby zmniejszyć zużycie energii.
Sampplik aplikacji
Oprogramowanie pośredniczące MotionEC można łatwo modyfikować w celu tworzenia aplikacji użytkownika;ampPlik aplikacji znajduje się w folderze aplikacji.
Jest przeznaczony do działania na płycie rozwojowej NUCLEO-F401RE, NUCLEO-U575ZI-Q, NUCLEO-L152RE lub NUCLEO-L073RZ podłączonej do płyty rozszerzeń X-NUCLEO-IKS01A3, X-NUCLEO-IKS4A1 lub X-NUCLEO-IKS02A1.
Aplikacja rozpoznaje orientację i obrót urządzenia w czasie rzeczywistym. Dane mogą być wyświetlane za pomocą GUI.
Algorytm zapewnia następujące dane wyjściowe: orientacja urządzenia (kwaterniony, kąty Eulera), obrót urządzenia (funkcjonalność wirtualnego żyroskopu), wektor grawitacji i przyspieszenie liniowe.
3.1 Aplikacja MEMS-Studio
SampAplikacja korzysta z aplikacji MEMS-Studio, którą można pobrać ze strony www.st.com.
Krok 1. Upewnij się, że niezbędne sterowniki są zainstalowane i płyta STM32 Nucleo z odpowiednią kartą rozszerzeń jest podłączona do komputera.
Krok 2. Uruchom aplikację MEMS-Studio, aby otworzyć główne okno aplikacji.
Jeśli do komputera podłączona jest płytka STM32 Nucleo z obsługiwanym oprogramowaniem układowym, odpowiedni port COM jest automatycznie wykrywany. Naciśnij przycisk [Connect], aby nawiązać połączenie z płytką ewaluacyjną.
Krok 3. Po podłączeniu do płytki STM32 Nucleo z obsługiwanym oprogramowaniem sprzętowym otwiera się zakładka [Ocena biblioteki].
Aby rozpocząć i zatrzymać przesyłanie strumieniowe danych, przełącz odpowiedni przycisk [Start]. lub [Zatrzymaj]
przycisk na zewnętrznym pionowym pasku narzędzi.
Dane pochodzące z podłączonego czujnika mogą być viewwybierając kartę [Tabela danych] na wewnętrznym pionowym pasku narzędzi.
Krok 4Kliknij na [E-Kompas], aby otworzyć dedykowaną stronę dla tej biblioteki.
Powyższy rysunek przedstawia graficzny model STM32 Nucleo. Orientacja i obrót modelu są oparte na danych E-Compass (kwaternionach) obliczonych przez algorytm.
Aby dopasować rzeczywisty ruch urządzenia do modelu graficznego, skieruj urządzenie w stronę ekranu i naciśnij przycisk [Resetuj model].
Wartość nagłówka reprezentuje rzeczywisty nagłówek urządzenia.
Skierowanie urządzenia prosto w górę lub w dół (wzdłuż osi górnej układu odniesienia ENU, z tolerancją ±5 stopni) powoduje wyświetlenie wartości N/A dla kierunku: nie da się określić, na który punkt kardynalny wskazuje urządzenie.
Wartość dobroci przyjmuje wartości od 0 do 3 i jest związana z kalibracją magnetometru: im wyższa wartość, tym lepsze wyniki algorytmu danych E-Compass.
Krok 5Kliknij na [Zapisz do File] aby otworzyć okno konfiguracji rejestrowania danych. Wybierz dane czujnika i kompasu elektronicznego, które mają zostać zapisane w fileMożesz rozpocząć lub zatrzymać zapisywanie, klikając odpowiedni przycisk.
Krok 6. Tryb Data Injection można wykorzystać do wysłania wcześniej pozyskanych danych do biblioteki i otrzymania wyniku. Wybierz kartę [Data Injection] na pasku narzędzi pionowych, aby otworzyć dedykowany view dla tej funkcjonalności.
Krok 7. Kliknij przycisk [Przeglądaj], aby wybrać file z wcześniej przechwyconymi danymi w formacie CSV.
Dane zostaną załadowane do tabeli w bieżącym view.
Inne przyciski staną się aktywne. Możesz kliknąć na:
– Przycisk [Tryb offline] służący do włączania/wyłączania trybu offline oprogramowania sprzętowego (tryb wykorzystujący wcześniej przechwycone dane).
– Przyciski [Start]/[Stop]/[Krok]/[Powtórz] służące do sterowania przesyłaniem danych z MEMS-Studio do biblioteki.
Odniesienia
Wszystkie poniższe zasoby są dostępne bezpłatnie na stronie www.st.com.
- UM1859: Pierwsze kroki z rozszerzeniem oprogramowania MEMS ruchu X-CUBE-MEMS1 i czujnika środowiskowego dla STM32Cube
- UM1724: Płyty STM32 Nucleo-64 (MB1136)
- UM3233: Pierwsze kroki z MEMS-Studio
Historia rewizji
Tabela 4. Historia zmian dokumentów
Data | Wersja | Zmiany |
18-maj-17 | 1 | Pierwsze wydanie. |
25-sty-18 | 2 | Dodano odniesienia do płyty rozwojowej NUCLEO-L152RE i Tabeli 2. Algorytm czasu upłyniętego (μs). |
21-marca-18 | 3 | Zaktualizowany wstęp i sekcja 2.1 MotionECview. |
26-lis-18 | 4 | Dodano tabelę 3. Cortex -M0+: algorytm czasu upłyniętego (µs). Dodano odniesienia do ARM® Cortex® – płyta rozwojowa M0+ i NUCLEO-L073RZ. |
19-lut-19 | 5 | Zaktualizowany rysunek 1. Układ odniesienia ENU, tabela 2. Cortex-M4 i Cortex-M3: algorytm czasu upłyniętego (µs), tabela 3. Cortex -M0+: algorytm czasu upłyniętego (µs), Rysunek 3. Adapter płytki rozszerzeń czujników podłączony do STM32 Nucleo, Rysunek 4. Główne okno Unicleo, Rysunek 5. Karta User Messages, Rysunek 6. Okno E-Compass i Rysunek 7. Okno Datalog. Dodano informacje o zgodności płyty rozszerzeń X-NUCLEO-IKS01A3. |
25-marca-20 | 6 | Zaktualizowany wstęp, sekcja 2.2.1: Opis biblioteki MotionEC i sekcja 2.2.5: Wydajność algorytmu. Dodano informacje o zgodności architektury ARM Cortex-M7. |
17-wrz-24 | 7 | Zaktualizowany wstęp do sekcji, Sekcja 2.1: MotionEC ponadview, Sekcja 2.2.1: Biblioteka MotionEC Opis, Sekcja 2.2.2: MotionEC API, Sekcja 2.2.5: Algorytm wydajność, Sekcja 3: Sample aplikacja, Sekcja 3.1: Aplikacja MEMS-Studio |
WAŻNA INFORMACJA – PRZECZYTAJ UWAŻNIE
STMicroelectronics NV i jej spółki zależne („ST”) zastrzegają sobie prawo do wprowadzania zmian, poprawek, ulepszeń, modyfikacji i udoskonaleń produktów ST i/lub niniejszego dokumentu w dowolnym momencie bez powiadomienia. Nabywcy powinni uzyskać najnowsze istotne informacje o produktach ST przed złożeniem zamówienia. Produkty ST są sprzedawane zgodnie z warunkami sprzedaży ST obowiązującymi w momencie potwierdzenia zamówienia.
Nabywcy ponoszą wyłączną odpowiedzialność za wybór, selekcję i użytkowanie produktów ST. ST nie ponosi żadnej odpowiedzialności za pomoc w stosowaniu ani za konstrukcję produktów nabywców.
ST nie udziela żadnej licencji, wyraźnej ani dorozumianej, na jakiekolwiek prawa własności intelektualnej.
Odsprzedaż produktów ST z postanowieniami różniącymi się od informacji zawartych w niniejszym dokumencie powoduje unieważnienie gwarancji udzielonej przez ST na taki produkt.
ST i logo ST są znakami towarowymi ST. Aby uzyskać dodatkowe informacje o znakach towarowych ST, zapoznaj się z www.st.com/trademarks. Wszystkie inne nazwy produktów lub usług są własnością ich odpowiednich właścicieli.
Informacje zawarte w niniejszym dokumencie zastępują informacje podane wcześniej w jakiejkolwiek poprzedniej wersji tego dokumentu.
© 2024 STMicroelectronics – Wszelkie prawa zastrzeżone
Dokumenty / Zasoby
![]() |
ST X-CUBE-MEMS1 MotionEC jest biblioteką middleware [plik PDF] Instrukcja obsługi X-CUBE-MEMS1 MotionEC to biblioteka middleware, X-CUBE-MEMS1, MotionEC to biblioteka middleware, biblioteka middleware, biblioteka |