ZL30ARM (STM32F103) + LabView: obsługa akcelerometru MMA7455

Ostatnią funkcją jest void MultipleRead(u32 NumByteToRead, uint8_t BaseRegisterAddress, uint8_t I2C1_Bufferx[]). Służy ona do odczytu kilku bajtów przy jednorazowym zaadresowaniu urządzenia. Działanie tej funkcji różni się od poprzedniej tym, że po otrzymaniu jednego bajta danych kontroler wystawia znak potwierdzenia (AK) po czym czujnik przesyła dane z rejestru o adresie o jeden większym niż poprzednie dane. Czyli każdy znak potwierdzenia inkrementuje adres, aż do momentu gdy zamiast potwierdzenia pojawi się bit stopu. Funkcja jako parametr przyjmuje liczbę bajtów do odczytu, adres rejestru pierwszej danej do odczytu oraz bufor do którego będzie realizowany zapis otrzymanych danych. Ten tryb został użyty do czytania danych kolejno z każdej osi XOUT8, YOUT8, ZOUT8. Na Rys. 6 przedstawiono działanie na sygnałach natomiast na Listingu 3 przedstawiono kod funkcji.

 

Rys. 6. Odczyt określonej ilości danych

Rys. 6. Odczyt określonej ilości danych

 

 

Listing 3. Funkcja odczytująca wskazaną ilości danych z układu

 

LabView

Aplikacja w LabView słurzy do przetwarzania danych z czujnika i prezentacji danych w formie obracającego się prostokąta (przedstawiającego wychylenie układu) lub kolejno przesyłanych próbek na wykresie. Poza samym programem LabView, którego wersję testową można ściągnąć (po zarejestrowaniu) ze strony firmy National Instruments, należy zainstalować pakiet VISA (Virtual Instrument Software Architecture), który w tym wypadku potrzebny jest do obsługi portu szeregowego.

Panel programu przedstawiony został na Rys. 7. Przed uruchomieniem należy ustawić odpowiedni numer portu COM, przycisk ‘RUN’ zaczyna zbieranie danych. Interfejs szeregowy jest tak skonfigurowany, że odbiera dane paczkami do napotkania znaku enter – ‘\n’. Aktualnie odebrane dane w formacie tekstowym są wyświetlane w polu ‘String’, a w formie liczbowej na trzech suwakach, każdy dla innej osi.

W aplikacji dwa główne procesy komunikują się ze sobą w formie kolejek, których stan w jakim się aktualnie znajdują jest prezentowany przez kontrolki ‘Producer’ i ‘Consumer’.

Rys. 7. Okno aplikacji systemu LabView

Rys. 7. Okno aplikacji systemu LabView

 

 

Zakładka ‘3D Picture’ zawiera obracający się prostokąt rysowany w kontrolce 3D Picture Control służącej do rysowania wykresów przestrzennych. Zmieniając ustawienie kontrolki ‘Render Dest’ na ‘Scene Window’, pojawi się ona w nowym oknie, które można powiększyć na cały ekran. Ponieważ liczby przesyłane z czujnika nie zmieniają się w sposób płynny, ulegają pewnym wahaniom, zostały zaimplementowane dwie proste metody do stabilizacji obliczanych współrzędnych figury – kontrolka ‘axis_mode’. Pierwsza opcja ‘Mean’ czyli średnia ostatnich dziesięciu próbek. Druga ‘Threshold’, która zmienia współrzędną jeśli przychodząca dana przekroczyła wartość większą niż ustawiony ‘prog’ w stosunku do wartości aktualnej. Dodatkowo w zakładce ‘Graph’ są prezentowane dane w postaci wykresów. W aplikacji istnieje również możliwość zapisu próbek do pliku.
Mateusz Baszczyk

Do pobrania

O autorze