Pierwsze kroki z TouchGFX (część 1)

Problem prawidłowej interakcji operator–maszyna zaprzątał głowy projektantów od zarania ery przemysłowej. Dźwignie sterujące i mechaniczne wskaźniki położenia były stopniowo zastępowane elektrycznymi układami kontrolno-pomiarowymi. Nadzór nad procesami przemysłowymi zapewniały tablice kontrolne z wieloma przełącznikami, lampkami i miernikami wskazówkowymi nazywanymi potocznie zegarami. Były one postrzegane przez współczesnych jako przejaw postępu i nowoczesnej techniki. Pierwsze generacje komercyjnych komputerów również miały panele kontrolne z lampkami sygnalizacyjnymi i przyciskami sterującymi. Takie rozwiązania nikogo nie dziwiły nawet w latach 80-tych XX wieku.

Obsługa bardziej lub mniej skompilowanych urządzeń ewoluowała razem z rozwojem techniki i mocno przyspieszyła wraz rozpowszechnieniem się mikroelektroniki. Komputery wyposażano w monitory ekranowe – najpierw tylko znakowe, potem również graficzne, a także klawiatury i myszki. W sterownikach mikroprocesorowych królowały proste klawiatury numeryczne, przyciski, a także 7-segmentowe wyświetlacze LED. Dużym skokiem jakościowym było pojawienie się na rynku alfanumerycznego wyświetlacza LCD opartego o sterownik HD44780. To do dzisiaj chętnie stosowany element w budżetowych rozwiązaniach.

Kolejny skok w rozwoju interfejsu użytkownika w układach sterowników mikroprocesorowych umożliwił kolejny element: wyświetlacz graficzny. Początkowo był to bardzo drogi element najczęściej monochromatyczny, z niewielką rozdzielczością i przekątną ekranu. Obecnie jest to element stosunkowo tani, z kolorowymi matrycami o szerokim zakresie rozdzielczości i najczęściej wyposażany w ekran dotykowy rezystancyjny, lub w najnowszych rozwiązaniach, pojemnościowy. Równolegle z możliwościami sprzętowymi ewaluowała idea interfejsu użytkownika. Kiedy wydawało się, że maksimum możliwości daje konfiguracja z kolorowym monitorem, klawiaturą i myszką pojawił się interfejs dotykowy. Idea sterowania urządzeniem za pomocą przyciskania ikon na ekranie wydawała się od początku uszyta na miarę potrzeb systemów wbudowanych. Wielka elastyczność interfejsów zbudowanych z ekranów z dedykowanymi elementami sterującymi rekompensowała niezbyt komfortowe działanie pierwszych rezystancyjnych paneli dotykowych. Współczesne panele pojemnościowe pracują nieporównywalnie bardziej precyzyjnie, ale rewolucja smartfonowa spowodowała, że znacznie wzrosły oczekiwania użytkowników w zakresie estetyki, szybkości działania i ergonomii interfejsów użytkownika w systemach wbudowanych.

Projektowanie interfejsów graficznych

Żeby sprostać takim wymaganiom projektanci oprogramowania stosują gotowe rozwiązania. Jednym z nich są gotowe biblioteki z funkcjami graficznymi. Kiedyś potrafiły być bardzo drogie i stać na nie było tylko bardziej zamożne firmy. Ale podobnie jak z podstawowymi narzędziami: środowiskami IDE i kompilatorami C/C++, producenci mikrokontrolerów zaczęli dostarczać nieodpłatnie biblioteki wspierane konfiguratorami grafiki. Jednym z takich rozwiązań jest TouchGFX przeznaczony do konfiguracji interfejsów graficznych z wykorzystaniem mikrokontrolerów z rodziny STM32.

TouchGFX jest zaawansowanym, dystrybuowanym bezpłatnie interfejsem graficznym zoptymalizowanym dla mikrokontrolerów STM32. Jego podstawowym zadaniem jest wydajne wspieranie tworzenia interfejsów użytkownika w urządzeniach wbudowanych opartych na mikrokontrolerach STM32. Zależnie od wymagań te interfejsy mogą zarówno wykorzystywać wyświetlacze o małej rozdzielczości i głębi koloru jak i zaawansowane technicznie wyświetlacze z duża głębią koloru, dużą rozdzielczością i wspomaganiem (akceleracją) sprzętowym. Dla zapewnienia płynnego działania aplikacji wymagana jest określona ilość pamięci. TouchGFX jest zintegrowany z całym ekosystemem STM32 i zapewnia użytkownikom łatwy i szybki proces rozwoju aplikacji z wykorzystaniem znanych narzędzi projektowych.

Standardy komunikacji pomiędzy urządzeniem, a operatorem są wyznaczane przez producentów smartfonów. Wielu użytkowników całkiem słusznie postrzega stosowane tam rozwiązania za atrakcyjne i wygodne. TouchGFX oferuje możliwość tworzenia podobnych animacji: przeciąganie, przewijanie, efekty 3D., przeźroczystość, mieszanie czcionek, wygładzanie i zmienne odstępy między czcionkami (kerning). Dodatkowo, środowisko kładzie nacisk na bardzo szybką reakcję aplikacji na dotyk ekranu wyświetlacza.

Zaczynamy…

Każdy kto próbował samodzielnie programować graficzne interfejsy wie, że jest to żmudna i trochę niewdzięczna praca. Jeżeli do uzyskania nawet najprostszego efektu trzeba napisać sporo kodu i przekopać się przez dużą dokumentację, to jest to najlepszy sposób do zniechęcenia i w konsekwencji szukania innych rozwiązań. Z drugiej strony kiedy pierwsze efekty przychodzą prawie natychmiast, to nabieramy ochoty na dalsze eksperymentowanie i eksplorowanie coraz bardziej zaawansowanych możliwości.

W przypadku programu TouchGFX przyjęto zasadę, że pierwsze działające aplikacje można zaprojektować i wykonać szybko i przy początkowej nikłej wiedzy na temat całego środowiska projektowego. Jest jeden warunek – jeżeli program ma działać na sprzęcie musimy dysponować jednym z wielu firmowych modułów ewaluacyjnych z mikrokontrolerami STM32, wyposażonych w kolorowe wyświetlacze LCD. Zwalnia to nas na początku z konieczności zaprojektowania, sprawdzenia i uruchomiania własnej platformy sprzętowej. Wydaje się, że jest to dość niska cena, którą przychodzi nam zapłacić za możliwość szybkiego opanowania podstaw projektowania własnych interfejsów i ocenienia czy takie rozwiązanie jest dla nas przydatne. Dla niecierpliwych przewidziano także symulacje działania projektowanego interfejsu na ekranie komputera.

Od wersji 4.13.0 TouchGFX jest dystrybuowany jako pakiet X-CUBE-TOUCHGFX zawierający 2 elementy:

  • Generator TouchGFX przeznaczony do tworzenia niestandardowych bibliotek HAL TouchGFX za pomocą CubeMX,
  • TouchGFXDesigner przeznaczony do budowania projektu użytkowania za pomocą programu Windows GUI Builder.

Oprogramowanie można pobrać poprzez stronę st.com lub wykorzystać do tego celu program CubeMX. My będziemy testować działanie TouchGFX Designer na jednej z płytek ewaluacyjnych ST. W związku z tym wykonamy instalację za pośrednictwem pakietu CubeMX.

Instalacja z poziomu środowiska STM32CubeMX

Po otwarciu CubeMX należy wejść w zakładkę Help->Manage Embedded Software Package ->STMicroelectronics, a następnie wybrać X-Cube-TouchGFX i kliknąć na Install. CubeMX zainstaluje TouchGFX Generator oraz pobierze wersję instalacyjną TouchGFX Designer i umieści ją w katalogu

C:\Uzytkownik\STM32Cube\repository\packs\STMicroelectronics\X-Cube-TouchGFX\3.13.0\Utilites\PC_software\TouchGFXDesigner.

Instalowanie TouchGFX Designer przebiega standardowo i nie wymaga komentarza.

W tym momencie nie będziemy się zajmować generatorem TouchGFX przeznaczonym do tworzenia bibliotek warstwy HAL, łączących aplikacje TouchGFX ze sprzętem. Dla modułów ewaluacyjnych STM32 takie biblioteki są przygotowane. Możemy więc na razie ten etap pominąć i skupić się na projektowaniu interfejsu graficznego.

O autorze

Absolwent Wydziału Elektroniki Politechniki Wrocławskiej, współpracownik miesięcznika Elektronika Praktyczna, autor książek o mikrokontrolerach Microchip i wyświetlaczach graficznych, wydanych nakładem Wydawnictwa BTC.
Zawodowo zajmuje się projektowaniem zaawansowanych systemów mikroprocesorowych.