wersja mobilna | kontakt z nami

Sterowanie wyświetlaczem bez kontrolera grafiki

Numer: Lipiec/2016

Nowoczesne urządzenia elektroniczne rzadko kiedy mogą obyć się bez wyświetlacza. Najczęściej wiąże się to z koniecznością użycia dodatkowego lub wbudowanego kontrolera graficznego, który nie tylko zwiększa koszty aplikacji, ale również komplikuje jej budowę. Nowoczesne mikrokontrolery pozwalają w wielu przypadkach na uniknięcie tego problemu. Jeśli projektowany graficzny interfejs użytkownika ma być prosty, możliwe jest stworzenie wirtualnego kontrolera, którego obciążenie jednostki obliczeniowej sięga jedynie ok. 5%.

Pobierz PDF

Ogólnie, kontroler wyświetlacza potrzebny jest po to, aby móc odpowiednio często wysyłać kompletne ramki pikseli obrazu. W praktyce częstotliwość odświeżania ekranu wynosi najczęściej ok. 60 Hz, co oznacza, że ilość przesyłanych danych na sekundę jest dosyć duża. Może się wydawać, że będzie to silnie obciążać jednostkę obliczeniową, ale w mikrokontrolerach takich, jak Microchip PIC32, które obsługują DMA (Direct Memory Access), obciążenie procesora nie przekracza 5%. Bezpośredni dostęp do pamięci sprawia, że większość czasochłonnych operacji wykonywanych jest z pominięciem jednostki obliczeniowej.

Podstawowe pojęcia

Kontroler przesyła do wyświetlacza informacje o kolorach pikseli z częstotliwością odświeżania, wyrażoną w hercach. Ilość danych koniecznych do przesłania zależy przede wszystkim od rozdzielczości ekranu: np. 320×240 pikseli. Częstotliwość przesyłania pikseli zależna jest od ich liczby, a więc rozdzielczości oraz odświeżania. Aby móc je sprawnie przesyłać, należy je przygotować wcześniej i zapisać w pamięci – w praktyce w RAMie, w postaci tzw. ramki. Trzeba też uwzględnić paletę kolorów wyświetlacza, wyrażoną w bitach. Typowo, jeśli wyświetlacz prezentuje 16-bitową gamę barw, po 5 bitów poświęconych jest na kolor czerwony i niebieski, a 6 na zielony.

Sposób użycia DMA

mcrys1Obwody DMA pozwalają na przesyłanie danych z jednego miejsca do drugiego, bez ciągłej kontroli CPU. Wystarczy jedynie zaprogramować DMA tak, by przesyłało np. pojedynczą linijkę danych do wyświetlacza z użyciem nadrzędnego portu równoległego (PMP – Parallel Master Port). Po przesłaniu pojedynczej linijki, PMP może wygenerować przerwanie, które spowoduje kolejny transfer DMA. Alternatywnie, w układach, które nie pozwalają na takie przerwanie, transfer DMA może być wyzwalany za pomocą timera.

Ponadto, w przypadku modeli z obsługą interfejsu zewnętrznej magistrali (EBI – External Bus Interface), EBI może zostać wykorzystany jako zegar taktujący przesył danych pikseli. Zazwyczaj pozwala to uzyskać wyższą częstotliwość taktowania, niż przy wykorzystaniu portu PMP, przy czym EBI bazuje na tych samych wyprowadzeniach, co PMP.

mcrys2Podczas transmisji danych, PMP lub EBI przesyła sygnał odczytu lub zapisu po każdym przesłanym, pojedynczym pikselu. W efekcie sygnały te służą jako zegar taktujący dla wyświetlacza. Po przesłaniu każdej linii danych, CPU otrzymuje przerwanie z DMA i konieczne jest zmodyfikowanie sygnałów sterujących synchronizacją pionową lub poziomą wyświetlacza (oznaczanych jako HSYNC i VSYNC) oraz sygnału DEN (Data Enable). Czynność ta jest powtarzana tyle razy, ile linii do wyświetlenia zawiera bufor ramki obrazu.

Bufor z ramką obrazu może znajdować się w pamięci RAM wewnętrznej lub zewnętrznej. Sposób komunikacji z użyciem zewnętrznej pamięci pokazano na rysunku 1. Wykorzystanie wbudowanej pamięci zilustrowano na rysunku 2.

Wyświetlacze TFT LCD

Omawiana metoda pozwala na sterowanie zarówno wyświetlaczami TFT LCD, jak i CSTN lub MSTN, o ile zostanie poddana drobnym modyfikacjom. Linie danych odpowiadają bitom potrzebnym na przesyłanie informacji o kolorach pikseli. Większość wyświetlaczy spotykanych na rynku ma od 8 do 24 linii danych, zależnie od palety barw.

Linie HSYNC, VSYNC, DEN i PCLK służą do synchronizacji przesyłanych danych pomiędzy ramką obrazu, a panelem wyświetlacza. Informują LCD o tym, kiedy zaczyna się i kończy linia (sygnał HSYNC), lub cała ramka (sygnał VSYNC). Sygnał DEN informuje wyświetlacz o tym, że dane są do niego przesyłane. Jest to wymagane przez niektóre z paneli TFT LCD, by te zdążyły przygotować się na przyjęcie informacji o pikselu.

Każdy cykl zegara PCLK aktualizuje zawartość wyświetlacza. Pozostałe sygnały muszą być zsynchronizowane z sygnałem PCLK. W przypadku wyświetlaczy, które nie obsługują sygnałów HSYNC ani VSYNC, wystarczy odpowiednie taktowanie z użyciem PCLK.

Przykład oparty o zestaw

Firma Microchip opracowała płytkę Low-Cost Controllerless Graphics PICtail Plus daughter board (LCC graphics board), która pozwala zademonstrować opisaną technikę w praktyce i działa z wieloma istniejącymi zestawami do mikrokontrolerów PIC32. Przygotowane oprogramowanie ułatwia synchronizację i wymaga jedynie podania parametrów podłączanego wyświetlacza i obsługiwanych przez niego sygnałów. Wartości te trzeba wpisać do kodu i można go skompilować, by zacząć wyświetlanie ramek obrazu na ekranie.

Na ilustracji 3 pokazano, co dzieje się wewnątrz mikrokontrolera, kiedy ramka obrazu jest przesyłana do wyświetlenia. Ilość zdań dla CPU jest znikoma, w porównaniu do obciążenia DMA. W praktyce konieczne staje się tylko napisanie kodu obsługiwania przerwań DMA oraz konfiguracji DMA i PMP. Przykładowy kod inicjalizacji został przedstawiony na listingu 1.

mclist2

Przygotowywanie nowych pikseli

Wyświetlając obraz nie należy zapominać o konieczności aktualizacji samego bufora pamięci obrazu. To tam zapisywana jest treść do wyświetlenia i procesor musi zadbać, by była aktualna. Jeśli ramka zapisywana jest w pamięci zewnętrznej, transfery DMA są zawieszane na czas aktualizacji treści ramki. Jest ot konieczne, gdyż mikrokontroler zawiera tylko jeden podukład PMP i jest on dzielony z wirtualnym kontrolerem grafiki. Oznacza to, że częstotliwość odświeżania wyświetlacza jest zaburzana przez aktualizację treści do wyświetlenia.

mcrys3Z tego względu ważne jest, by liczba pikseli do aktualizacji była kontrolowana i minimalizowana. Pozwala to zapobiec niepotrzebnemu nadpisywaniu zawartości ramki takimi samymi danymi, które mogłoby na tyle opóźnić prezentację treści na wyświetlaczu, że wszelkiego rodzaju animacje i zmiany przestałyby być płynne. Mechanizm kontroli można zrealizować poprzez wprowadzenie zmiennej zliczającej piksele do aktualizacji, która jest zerowana po każdym przerwaniu DMA.

Jeśli wykorzystane zostaną obwody EBI, czas potrzebny na aktualizację treści ramki jest silnie skrócony. Użycie EBI do zapisywania pozwala ograniczyć ilość przeładowywanych danych, gdyż rejestry PMP przestają być wykorzystywane zarówno do zapisu, jak i odczytu. Ponadto EBI po prostu pozwala na szybszą transmisję z zewnętrzną pamięcią RAM.

Oprogramowanie

mcrys4Metoda opierająca się na wbudowanej pamięci SRAM korzysta z sygnału zapisu PMP jako zegara pikseli. W przypadku użycia płytki LCC graphics board konieczne jest włożenie zworek 1 i 2. Tryb ten w przygotowanej aplikacji korzysta z 8-bitowej palety barw. Natomiast zawartość wbudowanej pamięci SRAM jest stale zapisywana do PMP.

8-bitowa paleta w przypadku kolorowego obrazu oznacza w praktyce, że po trzy bity przeznaczone są na składową czerwoną i zieloną, a dwa pozostałe bity na kolor niebieski. Ten, jak i poprzedni sposób podziału bitów są powszechnie stosowane w wyświetlaczach ze względu na specyfikę ludzkiego oka, które jest najbardziej wrażliwe na kolor zielony, a następnie czerwony, a kolor niebieski rozróżnia najgorzej.

W przypadku metody z użyciem zewnętrznej pamięci, sygnał odczytu PMP jest sygnałem zegarowym pikseli. W tym celu należy wstawić zworki 2 i 3 na płytce LCC graphics board. W trybie tym stosowana jest 16-bitowa paleta barw, z podziałem składowych takim, jak podano wcześniej. Jeśli podłączany jest panel o więcej niż 16 liniach danych kolorów, nieużywane linie należy podłączyć do najbardziej znaczących bitów dla poszczególnych barw składowych. Dzięki temu możliwe będzie użycie pełnej skali barw – od czerni do bieli.

Podsumowanie

Jeśli prezentowany na ekranie obraz nie ma zmieniać się zbyt często, a rozdzielczość wyświetlacza nie jest bardzo duża, nawet zwykły, 32-bitowy mikrokontroler z łatwością samodzielnie poradzi sobie z obsługą ekranu, bez potrzeby dodawania dodatkowych podzespołów. Omówiona metoda pozwala więc uprościć projekt i zmniejszyć jego łączny koszt produkcji.

Marcin Karbowniczek, EP

Pozostałe artykuły

Synergy RTOS

Numer: Listopad/2017

Układy wbudowane często wykonują skomplikowane zadania. Jeżeli stopień skomplikowania jest bardzo duży, to programistom jest łatwiej podzielić wykonywane zadanie na małe wątki i uruchomić pod systemem czasu rzeczywistego RTOS. Dla procesorów Synergy firma Renesas dostarcza RTOS dystrybuowany pod nazwą ThreadX. Pokażę na prostym przykładzie, w jaki sposób wykonać w środowisku e2studio projekt wspierający programowanie pod kontrolą ...

Lampy 6SN7 i ECC99 w stopniu sterującym wzmacniacza

Numer: Listopad/2017

Wśród wielu lamp stosowanych w aplikacjach stopni sterujących wzmacniaczy akustycznych wyróżnić można dwie popularne grupy. Pierwsza to znane od lat, mające wielu fanów ich "czarującego dźwięku" wysokonapięciowe 6SN7 różnych producentów, w tym z rosyjskim odpowiednikiem 6N8S (6H8C), a grupa druga to podobne do siebie niskonapięciowe - rosyjska 6N6P i słowacka ECC99. Lampa słowacka różni się od rosyjskiej wysokim dopuszczalnym ...

Nowy system deweloperski IoT dla automatyki i robotyki

Numer: Listopad/2016

Coraz większą popularność zdobywa łączenie otaczających nas przedmiotów z Internetem. Ten nowy nurt polega w skrócie na rozszerzaniu funkcjonalności istniejących urządzeń lub tworzeniu rzeczy, o których nikt wcześniej nie myślał. Aby ułatwić włączanie nowych urządzeń do Internetu Rzeczy (IoT), na rynku pojawia się wiele zestawów startowych z modułami do komunikacji bezprzewodowej. W szerokiej gamie dostępnych zestawów rozwojowych ...

FT311D - nowe życie starego smartfonu z Androidem

Numer: Listopad/2016

Co można zrobić ze starym, ale jeszcze sprawnym telefonem? Jeżeli jest to smartfon z systemem Android, można go użyć w roli przenośnego sterownika z panelem dotykowym. Za pomocą dodatkowego interfejsu z układem FT311D podłączymy do gniazda USB telefonu różne układy wykonawcze. Możliwa będzie bezpośrednia komunikacja z układami, sterowanie w trybie typowego RS232, I2C lub SPI.

Laboratorium pomiarowe elektronika na bazie Raspberry Pi 3 oraz Analog Discovery 2

Numer: Październik/2017

Żadnego elektronika nie trzeba przekonywać, jak ważne dla niego jest posiadanie na wyposażeniu swojego warsztatu podstawowych narzędzi pomiarowych. Zgromadzenie różnych przyrządów i koszty z tym związane to jedna sprawa, a ilość miejsca, które muszą zająć, to kolejny ważny problem. Tylko nieliczni mają wydzielone całe pomieszczenie na uprawianie swojego hobby. Rozwiązaniem opisywanego problemu może być zastosowanie komputera ...

Mobilna
Elektronika
Praktyczna

Elektronika Praktyczna

Styczeń 2018

PrenumerataePrenumerataKup w kiosku wysyłkowym

Elektronika Praktyczna Plus

lipiec - grudzień 2012

Kup w kiosku wysyłkowym