STM32Butterfly: współpraca z 3-osiowym czujnikiem przyspieszenia MEMS (LIS35D)

 

 

 

 

W artykule przedstawiamy efektowną aplikację pozwalającą zapoznać się z akcelerometrem LIS35DE firmy STMicroelectronics, który mierzy przyspieszenie wzdłuż trzech osi. Aplikacja jest przygotowana dla zestawu uruchomieniowego STM32Butterfly2 (z mikrokontrolerem STM32F107), modułu KAmodTFT2 oraz modułu KAmodMEMS2, który jest wyposażony w układ LIS35DE. Sposób dołączenia modułów do zestawu uruchomieniowego opisano w pliku main.c.

Obsługa wyświetlacza

Wyświetlacz modułu KAmodTFT2 jest wyposażony w kontroler PCF8833. Komunikacja z kontrolerem odbywa się przez interfejs szeregowy SPI. Niestety ramka danych ma 9 bitów, co uniemożliwia wykorzystanie sprzętowego interfejsu SPI wbudowanego w mikrokontroler STM32 (tu do wyboru jest wyłacznie 8 lub 16 bitów). Wpływa to negatywnie na wydajność, ale do naszej aplikacji w zupełności wystarczy.

Obsługa akcelerometru

Układ LIS35DE jest wyposażony w interfejsy I2C i SPI, linie tych interfejsów w module KAmodMEMS2 zostały wyprowadzone na wygodne w użyciu złącza. W aplikacji wykorzystałem interfejs SPI. Odczyt rejestrów układu polega na wysłaniu w pierwszym bajcie:

  • bitu 0 o wartości 1 (odczyt),
  • bitu 1 o wartości 0 lub 1 (dla wartości 1 adres rejestru będzie automatycznie inkrementowany)
  • bitów 2..7 zawierających adres rejestru

Następnie należy odczytać zawartości rejestrów. Zapis przebiega analogicznie z tą różnicą, że bajt 0 ma mieć wartość 0. Poniżej przedstawiam funkcje realizujące zapis i odczyt rejestrów.

Po dołączeniu zasilania akcelerometr jest w stanie power-down, funkcja inicjalizująca przełącza układ w tryb active przez ustawienie bitu PD w rejestrze CTRL_REG1 oraz odblokowuje wszystkie trzy osie akcelerometru przez ustawienie bitów ZEN, YEN i XEN w tym samym rejestrze.

Do pobrania

O autorze