[JAK NAPISAĆ DRIVER] STM32NUCLEO + mbed.org + graficzny LCD = druga aplikacja na STM32 w sieciowym środowisku programistycznym

W przykładzie przedstawiamy obsługę modułu z kolorowym wyświetlaczem LCD o wymiarach matrycy 132×132 piksele z wbudowanym sterownikiem PCF8833 (KAmodTFT2). Schemat podłączenia linii modułu KAmodTFT2 do zestawu przedstawiono na rysunku 1.

Rys. 1. Schemat podłączenia modułu KAmodTFT2 z zestawem Nucleo-F334R8

Komunikacja pomiędzy mikrokontrolerem zamontowanym na płytce Nucleo a kontrolerem wyświetlacza w module KAmodTFT2 odbywa się z wykorzystaniem interfejsu SPI. Długość słowa danych w pojedynczej ramce wynosi 9, a nie – jak zazwyczaj – 8 lub 16 bitów (rysunek 2), na szczęście mikrokontroler STM32F334R8T6 ma możliwość konfiguracji długości słowa danych od 4 do 16 bitów.

Rys. 2. Przebieg sygnałów na magistrali SPI podczas komunikacji mikrokontrolera z PCF8833

Sterownik wyświetlacza

W internetowym środowisku programistycznym mbed można znaleźć co najmniej dwa programowe sterowniki wyświetlacza z kontrolerem PCF8833 (np. biblioteka NokiaLCDrysunek 3). Uniwersalne sterowniki mogą nie zawsze poprawnie współpracować ze sprzętowym interfejsem SPI zaimplementowanym w użytym mikrokontrolerze, bardziej sensownym i stabilnym rozwiązaniem jest samodzielne przygotowanie takiego sterownika, zapoznając się przy okazji z możliwościami jakie daje programowanie w języku C++ (dotyczy to osób, które dobrze znają język C i chcą rozpocząć programowanie w C++).

Rys. 3. Biblioteka NokiaLCD jest domyślnie dostępna w pakiecie mbed

Pierwszym krokiem w procesie przygotowania własnego sterownika wyświetlacza jest stworzenie nowego projektu lub zaimportowanie już istniejącego. Następnie należy utworzyć pliki implementacyjne (.cpp) i nagłówkowe (.h) o nazwach Graphics oraz NokiaLCD (rysunek 4). Dodatkowo będzie potrzebny jeszcze jeden plik o nazwie Fonts.c przechowujący deklaracje tablic z wzorcami znaków dla różnych czcionek.

Rys. 4. Pliki projektu o nazwie Nucleo-F334R8_NokiaLCD

W pliku nagłówkowym NokiaLCD.h znajdują się definicje stałych (komend kontrolera PCF8833 i kolorów w formacie RGB565) oraz definicja klasy NokiaLCD. Jako prywatne składowe klasy deklarujemy te pola i metody, które będą wykorzystywane tylko w jej obrębie i które nie powinny być widoczne dla użytkownika tejże klasy (tymi składowymi są m.in. zmienne typu DigitalOut przechowujące numer linii GPIO oraz funkcje z prefiksem spi_ przeznaczone do pracy z magistralą SPI):

Do pobrania

O autorze