Digilent Pmod i STM32 (cz. 9) – PmodNAV, PmodPMON1 i PmodTMP2

W dziewiątym i jednocześnie przedostatnim odcinku cyklu poświęconego modułom Pmod firmy Digilent przedstawione zostaną: PmodNAV z akcelerometrem, magnetometrem, żyroskopem i barometrem, PmodPMON1 służący do monitorowania mocy, a także PmodTMP2 z czujnikiem temperatury. Przykłady przedstawione w niniejszym artykule przygotowano dla środowiska Atollic TrueSTUDIO i zestawu uruchomieniowego KAmeleon (www.kameleonboard.org) z wykorzystaniem biblioteki STM32Cube_FW_L4.

PmodNAV

Moduł PmodNAV umożliwia wykonywanie pomiarów ruchu w dziewięciu osiach (3-osiowy akcelerometr, 3-osiowy żyroskop oraz 3-osiowy magnetometr), a także ciśnienia atmosferycznego. Jego sercem są dwa układy firmy ST: LSM9DS1 i LPS25HB. Zakresy pomiarowe poszczególnych wielkości są konfigurowalne i wynoszą:

  • akcelerometr: ±2/±4/±8/±16 g,
  • żyroskop: ±245/±500/±2000 dps,
  • magnetometr: ±4/±8/±12/±16 gauss,
  • barometr: 260-1260 hPa.
Pozostałe artykuły z cyklu dostępne są w zasobach portalu Mikrokontroler.pl

Rozdzielczość pomiaru ciśnienia wynosi 4096 LSB/hPa, natomiast dla pozostałych wielkości jest zależna od wybranego zakresu, a jej maksymalna wartość (dla najmniejszego zakresu) wynosi odpowiednio: 0,061 mg/LSB, 8,75 mdps/LSB i 0,14 mgauss/LSB.

Fotografia 1. Moduł PmodNAV

Możliwości czujników wbudowanych w moduł PmodNAV

Układ LSM9DS1 umożliwia generację przerwań po przekroczeniu ustawionych progów mierzonych wielkości na każdej z osi, po wykryciu aktywności, a także wówczas, gdy dostępne są nowe dane pomiarowe. Dodatkowo akcelerometr i żyroskop można skonfigurować w trybie FIFO, w którym dane pomiarowe obu czujników są buforowane w wewnętrznej kolejce. Do jej obsługi można użyć przerwań informujących o przekroczeniu zadanej liczby elementów. Czujnik ciśnienia LPS25HB charakteryzuje się podobną funkcjonalnością, pozwalającą na konfigurację progów do generacji przerwań. Posiada on także wewnętrzną kolejkę FIFO do buforowania danych pomiarowych.

Połączenie z zestawem KAmeleon

Oba układy mogą być obsługiwane za pośrednictwem interfejsów SPI oraz I2C, jednak w module PmodNAV udostępniony jest tylko pierwszy z nich. Znajduje się on na złączu Pmod typu 2A (J1), w którym oprócz linii danych oraz zegara znajdują są także trzy sygnały wybierające urządzenie (akcelerometr/żyroskop, magnetometr, barometr), wspólna linia przerwań i sygnał gotowości danych z magnetometru. Dwa ostatnie sygnały nie są używane w przykładzie, jednak ze względu na rozmieszczenie pozostałych sygnałów na złączu nie jest możliwe podłączenie modułu PmodNAV do złącza Pmod-SPI na płytce KAmeleon. Z tego względu moduł został podłączony do złącza ARDUINO według tabeli 1 i fotografii 2.

Tabela 1. Sygnały PmodNAV oraz odpowiadające im piny złącza ARDUINO i mikrokontrolera; w tabeli pominięto sygnały nieużywane w przykładzie (INT i DRDY) i linie zasilania występujące na złączu Pmod

Sygnał Numer pinu PmodNAV Numer pinu KAmeleon ARDUINO CONNECTOR Pin mikrokontrolera
CS_A/G 1 D10 PB12
MOSI 2 D11 PB15
MISO 3 D12 PB14
SCLK 4 D13 PB10
CS_M 9 D9 PB13
CS_ALT 10 D8 PD11

 

Fotografia 2. Moduł PmodNAV przyłączony do zestawu KAmeleon

Kod przykładu

Przykładowy kod do obsługi modułu PmodNAV został umieszczony w plikach PmodNAV.c i PmodNAV.h. Pierwsza z funkcji – PmodNAV_Config, znajdująca się na listingu 1, jest odpowiedzialna za konfigurację interfejsu SPI w trybie 3 (CPOL=1, CPHA=1) z programową kontrolą sygnału CS. Dodatkowo, uruchamia ciągłe pomiary we wszystkich czujnikach:

  • akcelerometr: 10 Hz,
  • żyroskop: 14,9 Hz,
  • magnetometr: 10 Hz (wartość domyślna),
  • barometr: 12,5 Hz.

Linie GPIO są ustawiane w funkcji HAL_SPI_MspInit wywoływanej przez bibliotekę STM32Cube wewnątrz funkcji HAL_SPI_Init. Piny podłączone do linii danych (MISO oraz MOSI) i zegara (SCLK) są konfigurowane jako funkcja alternatywna dla SPI2, natomiast wszystkie linie CS są ustawiane jako zwykłe wyjścia i będą kontrolowane programowo. Funkcję tę przedstawiono na listingu 2.

Kod programu z plikami projektowymi środowiska Atollic można pobrać w sekcji „Do pobrania”

Listing 1. Konfiguracja interfejsu SPI2 i konfiguracja modułu PmodNAV

Listing 2. Konfiguracja linii GPIO dla modułu PmodNAV

Komunikacja z czujnikami

Do komunikacji z czujnikami modułu PmodNAV przygotowano dwie funkcje pomocnicze: writeRegister i readRegister, pokazane na listingu 3. Realizują one zapis i odczyt rejestru o podanym adresie. Wszystkie czujniki wymagają podania kierunku transmisji na najstarszym bicie adresu (1– odczyt, 0 – zapis), a każda transakcja musi składać się z co najmniej dwóch bajtów. Opisywane funkcje operują na pojedynczych rejestrach, dlatego zawsze wykorzystują dwa bajty – adres oraz wartość rejestru.

Listing 3. Zapis i odczyt rejestru układów LSM9DS1 i LPS25HB

Z powyższych funkcji korzystają inne funkcje, realizujące zapis i odczyt rejestrów. Obsługują one dodatkowo odpowiednie sygnały CS, co przedstawiono na listingu 4. Pozostałe zestawy funkcji obsługujące magnetometr i barometr wyglądają analogicznie.

Listing 4. Zapis i odczyt rejestru akcelerometru i żyroskopu

Konwersja danych

Pozostałe funkcje zaimplementowane w pliku PmodNAV.c odpowiadają za konwersję odczytanych wartości z czujników na wartości wyrażone w odpowiednich jednostkach:

  • akcelerometr [mg],
  • żyroskop [mdps],
  • magnetometr [mG],
  • barometr [hPa].

Jako przykład, na listingu 5 przedstawiono funkcję konwertującą dane pomiarowe z akcelerometru, w której konwersja jest przeprowadzana dla zakresu ±2 g i rozdzielczości 0.061 mg/LSB. Funkcje obsługujące pozostałe czujniki zaimplementowano w analogiczny sposób.

Listing 5. Konwersja wyników pomiaru z akcelerometru

Główna funkcja przykładu – main, wykonuje konfigurację modułu PmodNAV, a następnie cyklicznie odczytuje wskazania wszystkich dostępnych czujników. Wyniki są wysyłane na port szeregowy LPUART1, dostępny jako wirtualny port szeregowy po podłączeniu KAmeleona do komputera. Obsługa portu znajduje się w plikach serial.c i serial.h.

Moduły PmodNAV, PmodPMON1 i PmodTMP2 a także zestaw KAmeleon oraz wiele innych płytek ewaluacyjnych i modułów rozszerzających można znaleźć w ofercie Kamami.pl

Do pobrania

O autorze