Pierwsze kroki z FPGA (9). Obsługa wyświetlacza OLED z kontrolerem SSD1331

Pierwsze kroki z FPGA (9). Obsługa wyświetlacza OLED z kontrolerem SSD1331
Pobierz PDF Download icon
Celem projektu było obsłużenie sprzętowego kontrolera kolorowego wyświetlacza OLED za pomocą układu FPGA zestawu maXimator. Zastosowany w przykładzie wyświetlacz wyposażono w kontroler SSD1331, z którym aplikacja użytkownika komunikuje się poprzez interfejs SPI.

Prezentowany w artykule projekt wykonano z użyciem bezpłatnego oprogramowania narzędziowego Intel Quartus Prime, które można pobrać ze strony internetowej https://goo.gl/kuHmWj. Moduł z kolorowym wyświetlaczem OLED-RGB dołączono do maXimatora zgodnie ze schematem pokazanym na rysunku 1 i opisem umieszczonym w tabeli 1. Dodatkowo, wyprowadzenie D14 maXimatora jest używany jako wejście zerujące o aktywnym poziomie wysokim – podczas normalnej pracy ta linia musi być dołączona do masy zasilania.

Jednostka TOP LEVEL

Pokazana na rysunku 2 jednostkaTOP LEVEL składa się z następujących elementów:

- Bloku OLED, który jest odpowiedzialny za inicjalizację oraz przesyłanie komend i danych do kontrolera wyświetlacza.
- Bloku EXAMPLE_OLED_Logic, w którym pokazano użycie przykładowych komponentów do sterowania wyświetlaczem:
- CLS_Command – czyści wyświetlacz,
- SetPixel_Commmand – ustawia wybrany piksel wyświetlacza na wybrany kolor,
- DrawImageFull_Commmand – rysuje cały obrazek uprzednio pobierając go z pamięci.
- Bloku Flash, który implementuje blok pamięci typu Flash zainicjalizowanej plikiem onchip_flash.dat. Przechowane są w niej mapy bitowe dwóch obrazów, które będą przesłane do wyświetlacza.

Oprócz wyżej wymienionych, na schemacie blokowym możemy znaleźć jeszcze blok odpowiedzialny za debouncing przycisku zerowania oraz blok generatora pętli PLL, na którego na wyjściu występuje przebieg o częstotliwości 50 MHz.

Moduł OLED

Moduł OLED (rysunek 2) jest głównym elementem projektu. Odpowiada on za komunikację za pomocą interfejsu SPI, inicjalizację wyświetlacza oraz późniejsze przekazywanie komend i danych. Sygnały modułu OLED opisano w tabeli 2.

Moduł OLED zawiera w sobie następujące bloki (rysunek 3):
- spi_master będący sprzętową implementacją sterownika SPI, komunikującego się bezpośrednio z kontrolerem wyświetlacza OLED. Funkcje jego wyprowadzeń zebrano w tabeli 3.
- LPM_ROM to gotowy IP będący pamięcią ROM. Zapisany w nim plik .mif (SD1331_INIT.mif) zawiera sekwencję komend służących do inicjalizacji wyświetlacza. Dokładne znaczenie poszczególnych bajtów znajduje się w dokumentacji kontrolera SSD1331. Zawartość pamięci bloku LMP_ROM opisano w tabeli 4.
- main_controller to blok ten jest odpowiedzialny za odczyt sekwencji inicjalizującej z bloku LPM_ROM, a także sterowaniem blokiem spi_master. Funkcje jego wyprowadzeń opisano w tabeli 5.
- clk_gen jest dzielnikiem sygnału taktującego, na wyjściu main_clk występuje wejściowy sygnał zegarowy o częstotliwości dzielonej przez 2, a na wyjściu us_clk – sygnał zegarowy o częstotliwości dzielonej przez 6.

Moduł Example_OLED_Logic

Moduł wykonano, aby pokazać, jak należy sterować modułem OLED poprzez odpowiednie komendy. W jego architekturze zawarto trzy komponenty:
- CLS_Command, który ma za zadanie wyczyścić wyświetlacz, tzn. wypełnić go zadanym kolorem. Funkcje jego wyprowadzeń pokazano w tabeli 6.
- SetPixel_Command, którego zadaniem jest zaświecenie w zadanym kolorze pojedynczego piksela o ustalonym adresie. Funkcje jego wyprowadzeń pokazano w tabeli 7.
- DrawImageFull_Command, który pobiera zapisany w pamięci Flash obraz w celu wyświetlenia go na ekranie. Funkcje jego wyprowadzeń pokazano w tabeli 8.

Moduł Flash

Ten moduł służy do implementacji pamięci Flash (UFM), która może być zainicjalizowana odpowiednio przygotowanym plikiem hex lub mif (memory initialization file). Na rysunku 4 pokazano przebiegi sygnałów podczas odczytu. Pojemność pamięci w układzie MAX10 znajdującym się w zestawie MAXimator pozwala na zapamiętanie dwóch obrazków o rozdzielczości 96×64 pikseli w formacie RGB565. Aby wybrać plik, który ma zostać wgrany należy w pliku Flash.vhd w linii 93 (rysunek 5) podać ścieżkę bezwzględną np: INIT_FILENAME => „D:/Projekty/Maximator/OLED/Test.mif”.

Dodatkowe oprogramowanie

W ramach projektu utworzono aplikację Konwerter_RGB565, której zadaniem jest wygenerowanie pliku .mif z wybranych przez użytkownika obrazków w formacie .bmp i wymiarach 96×64 piksele (odpowiada matrycy OLED użytego wyświetlacza). Skompilowana aplikacja jest dostępna w portalu https://goo.gl/HxTqGr.

Po uruchomieniu programu (rysunek 6) należy kliknąć przycisk Wczytaj obraz(y), po czym zostanie wyświetlone okno wyboru plików do wczytania. Należy zaznaczyć jeden lub dwa obrazy (mając dwa obrazy trzeba je zaznaczyć jednocześnie, np. za pomocą klawisza CTRL). Obrazy powinny mieć format BMP, 24-bity, RGB, wymiary 94×64 piksele, 96 DPI).

Po wybraniu i otwarciu obrazków są wyświetlane ich miniaturki. Przycisk „Zapisz plik .mif” jest aktywny. Po jego kliknięciu program zapyta się, gdzie zapisać wygenerowany plik .mif. Na fotografii 7 pokazano przykładowy efekt działania projektu: wyświetlenie obrazka, miniaturowej fotografii zestawu maXimator na wyświetlaczu OLED.

Mateusz Mamala, AGH

 

Więcej informacji:
Projekt powstał w Katedrze Elektroniki Wydziału Informatyki, Elektroniki i Telekomunikacji AGH, pod kierunkiem dr inż. Pawła Rajdy i dr inż. Jerzego Kasperka.

Artykuł ukazał się w
Elektronika Praktyczna
marzec 2017
DO POBRANIA
Pobierz PDF Download icon
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik styczeń 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio styczeń 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje styczeń 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna styczeń 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich styczeń 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów