Digilent Pmod i STM32 (cz. 8) – PmodMTDS, PmodRTCC i PmodCMPS2

PmodCMPS2

Ostatnim z prezentowanych w tej części modułów jest PmodCMPS2 z układem Memsic MMC34160PJ. Jest to 3-osiowy czujnik pola magnetycznego o zakresie ±16G, a także konfigurowanej rozdzielczości 12, 14 lub 16 bitów. Do obsługi modułu udostępniono bibliotekę przygotowaną na platformę Arduino. Kod biblioteki może być pobrany bezpośrednio ze strony firmy Digilent: https://reference.digilentinc.com/reference/pmod/pmodcmps2/start

Fotografia 7. Moduł PmodCMPS2

W jej skład wchodzi pojedyncza klasa – CMPS2 służąca do konfiguracji i komunikacji z modułem PmodCMPS2. Oprócz podstawowych funkcji do odczytu pomiarów zawiera ona także metodę readHeading, umożliwiającą odczyt kierunku kompasowego, jednak ze względu na brak kompensacji pochylenia układu daje ona poprawne wyniki wyłącznie podczas pracy na płaszczyźnie XY.

Połączenie z zestawem KAmeleon

Moduł PmodCMPS2 wyposażono w 6-pinowe złącze interfejsu I2C z dwoma nieużywanymi pinami. W przykładzie zostało ono podłączone do magistrali I2C wyprowadzonej na złącze ARDUINO CONNECTOR na płytce KAmeleon, tak jak na fotografii 8. Opis połączeń znajduje się w tabeli 6.

Tabela 6. Sposób podłączenia modułu PmodCMPS2 do złącza ARDUINO CONNECTOR zestawu KAmeleon

Sygnał Numer pinu PmodCMPS2 Numer pinu KAmeleon ARDUINO CONNECTOR Pin mikrokontrolera
SCL 3 (J1) D15 PF14
SDA 4 (J1) D14 PF15

Kod przykładu

Za konfigurację interfejsu I2C odpowiada metoda init klasy CMPS2, przedstawiona na listingu 8. Zmodyfikowano ją tak, aby współpracowała z mikrokontrolerem STM32L496ZGT6. Konfiguracja I2C4 jest analogiczna do tej z poprzedniego przykładu, jednak tym razem konfigurowane są także rejestry Internal Control 0 (0x07) i Internal Control 1 (0x08) – pojedynczy pomiar z rozdzielczością 16 bitów i czasem trwania 7,92 ms.

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

Listing 8. Inicjalizacja interfejsu I2C dla modułu PmodCMPS2

Komunikacja z układem MMC34160PJ

Do komunikacji z układem MMC34160PJ służą funkcje readReg i writeReg przedstawione na listingu 9. Tym razem do ich realizacji użyto funkcji bibliotecznych HAL_I2C_Mem_Read i HAL_I2C_Mem_Write umożliwiających dostęp do określonego adresu w ramach jednego urządzenia.

Listing 9. Funkcje do zapisu i odczytu rejestrów układu MMC34160PJ

Funkcja main

Kod głównej funkcji programu znajduje się na listingu 10. Znajduje się w nim inicjalizacja modułu PmodCMPS2 (myCMPS.init), a także cykliczny odczyt kierunku do 10 ms (myCMPS.readHeading). Dodatkowo, jeżeli kierunek kompasowy znajduje się przedziale od -10 (350) do 10 stopni, to zapala się dioda LED1 podłączona do linii PC7, co sygnalizuje wykrycie północy.

Listing 10. Funkcja main przykładowej aplikacji dla PmodCMPS2

Fotografia 8. Moduł PmodCMPS2 podłączony do płytki KAmeleon

Moduły PmodMTDS, PmodRTCC i PmodCMPS2, 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