Rozpoczęcie pracy z nowym kontrolerem wyświetlacza EVE4 wcale nie musi być skomplikowane.
W tym poradniku dowiesz się, jak uruchomić wyświetlacz Riverdi EVE4 na płytce ewaluacyjnej STM32 — od pierwszego podłączenia aż po wyświetlenie pierwszej ramki.
To precyzyjny, a jednocześnie zwięzły przewodnik stworzony dla inżynierów, którzy chcą zdobyć solidne podstawy do przyszłych projektów opartych na EVE, nie zagubiając się w zbędnych szczegółach: podłącz przewody; otwórz projekt w STM32CubeIDE; skompiluj i wgraj oprogramowanie; sprawdź działanie wyświetlacza i ekranu dotykowego – skupiamy się na tym, co najważniejsze; to pierwszy projekt, który możesz wykorzystać jako podstawę dla przyszłych, bardziej złożonych aplikacji.
Sprzęt komputerowy


| Pozycja | Przykład/Nr katalogowy | Uwagi |
| ST-Link V3/V2 | STLINK-V3 | Obie wersje działają dobrze |
| Płytka ewaluacyjna Riverdi | Płytka ewaluacyjna STM32 | Kompatybilna z RiBUS |
| EVE4 7″ | RVT70HSBNWC00-B | 7-calowy IPS, BT817Q |
| RiBUS FFC | FFC0520150 | Znajduje się w płytce ewaluacyjnej i EVE4 |
| Nasadki do zworków | — | W zestawie z płytką ewaluacyjną |
| Kable USB | 2× Micro-USB | W zestawie z płytką ewaluacyjną i ST-Link |
| Przewody połączeniowe FF | — | SWD |



RiBUS
- Niebieski element usztywniający na taśmie FFC zazwyczaj jest skierowany w stronę zatrzasku złącza (u góry). Wsuń go do końca, a potem zamknij zatrzask.
- Poprowadź kabel tak, żeby miał łagodny promień gięcia – bez ostrych zagięć – i upewnij się, że strona stykowa pasuje do kształtu złącza na obu końcach.
- Nie podłączaj zasilania do płytki podczas podłączania lub odłączania przewodu FFC.
Oprogramowanie
- Zainstaluj STM32CubeIDE.
- (Opcjonalnie) Zainstaluj STM32CubeProgrammer, żeby łatwo wgrywać oprogramowanie przez ST-Link.
- (Opcjonalnie) Zainstaluj Git (albo pobierz plik ZIP).
- Tylko dla systemu Windows: zainstaluj sterownik USB ST-Link (można to zrobić za pomocą programu CubeProgrammer).
Wolisz inne środowisko (Keil/IAR/Make/PlatformIO)? Nie ma sprawy – w tym poradniku używamy CubeIDE tylko dla przejrzystości.
Pobierz projekt z GitHubu
Opcja A
- Otwórz repozytorium: Riverdi EVE demo
- Kliknij zielony przycisk „Kod” i skopiuj adres URL HTTPS (zobacz zdjęcie poniżej)


- Otwórz terminal w katalogu, w którym chcesz umieścić swój projekt, i wpisz: git clone https://github.com/riverdi/riverdi-eve4-demo.git riverdi-eve-demo
Wariant B
- Otwórz repozytorium: Riverdi EVE demo
- Kliknij zielony przycisk „Kod i pobierz plik ZIP”
- Rozpakuj do dowolnego folderu (np. … C:\Users\User1\Riverdi-EVE-demo)
Zaimportuj projekt do STM32CubeIDE
Wykonaj poniższe kroki, żeby zaimportować sklonowane/rozpakowane repo do CubeIDE.
- W programie CubeIDE wybierz opcję Plik → Nowy → Projekt Makefile z istniejącym kodem.
- Lokalizacja istniejącego kodu: kliknij „Przeglądaj…” i wybierz swój folder „Riverdi-EVE”.
- Nazwa projektu: zachowaj proponowaną nazwę albo wpisz własną.
- Języki: zostaw zaznaczone opcje C i C++.
- Ustawienia toolchain dla indeksatora: wybierz MCU Arm GCC.
- Kliknij „Zakończ”. Projekt pojawi się w Eksploratorze projektów.


Jeśli nie ma pozycji „MCU Arm GCC”:
- Zainstaluj lub napraw komponenty CubeIDE, wybierając opcję Pomoc → Zarządzaj pakietami oprogramowania wbudowanego (lub zainstaluj CubeIDE od nowa).
- Uruchom ponownie CubeIDE i spróbuj jeszcze raz zaimportować plik.
Skonfiguruj projekt
- Wybierz platformę Makefile
Repozytorium obsługuje wiele hostów. W przypadku płytki ewaluacyjnej Riverdi STM32 (F4) użyj:- Makefile.stm32f4 (znajduje się w katalogu głównym projektu)
- Zmień nazwę, żeby plik stał się aktywny
. Zmień nazwę Makefile.stm32f4 na Makefile (CubeIDE i make szukają właśnie tej nazwy pliku). - Ustaw definicje panelu/wyświetlacza w pliku
. Otwórz plik Makefile o nowej nazwie i upewnij się, że są w nim następujące flagi (usuń komentarze lub dodaj je w razie potrzeby) dla 7-calowego modułu EVE4 IPS:
# Generacja EVE
DEFS += -DEVE_4
# EVE4 zazwyczaj korzysta z zewnętrznego oscylatora
DEFS += -DEVE_4_EXTERNAL_OSC
# Wybór wyświetlacza (7-calowy IPS)
DEFS += -DIPS_70
Korzystasz z innego wyświetlacza Riverdi EVE?
Zastąp -DIPS_70 odpowiednią definicją, która jest zakomentowana w pliku Makefile (blok czasowy dla HSIZE/VSIZE/HCYCLE/VCYCLE itp. jest powiązany z tą definicją).
Zazwyczaj nie musisz niczego więcej zmieniać – przy pierwszej kompilacji pozostaw pozostałe parametry na wartościach domyślnych.
Główna struktura kodu
Wersja demonstracyjna Riverdi-EVE ma strukturę warstwową:
- host_layer – biblioteki platformowe (SPI, GPIO, synchronizacja) dla STM32, RPi, FT232H/Windows itp.
- eve_layer – przenośny sterownik EVE (dostęp do rejestrów/pamięci RAM, FIFO poleceń, polecenia koprocesora).
- app_layer –funkcje pomocnicze i logika aplikacji (buforowanie danych/poleceń, obsługa dotykowa, kalibracja panelu dotykowego, prosty interfejs użytkownika/dźwięk).
Poza tym plik riverdi_modules zawiera definicje paneli (rozdzielczość, synchronizacja, PCLK, domyślne ustawienia PWM), a plik riverdi-demo.c zawiera przykładową aplikację, która łączy te warstwy w jedną całość.
Jak tak naprawdę uruchamia się EVE4 (z fragmentami kodu)
Po zresetowaniu płytki program demonstracyjny przeprowadza EVE4 przez precyzyjną sekwencję inicjalizacji.
- Uruchom MCU + HAL
Zanim EVE będzie mogło cię usłyszeć, STM32 musi mieć gotowe zegary i magistrale.- App_Common_Init() – przygotowanie aplikacji i płyty.
- Gpu_Hal_Init() – interfejs HAL firmy Bridgetek dla SPI/GPIO/timerów.
- platform_init() – inicjalizacja zegarów i timerów na niskim poziomie dla STM32F4.
- Podłącz kabel i przejmij kontrolę
Podłącz piny sterujące i zapewnij sobie bezproblemowy start.- Gpu_Hal_Open() – przypisuje sygnały CS, PD i INT; utrzymuje sygnały CS i PD w stanie wysokim.
- Gpu_Hal_Powercycle() – włącza lub wyłącza PD w celu wykonania zimnego rozruchu.
- Uruchom kartę graficzną i sprawdź łączność
Przełącz na tryb aktywny i sprawdź, czy połączenie działa.- Host command → ACTIVE – przełącza EVE w tryb aktywny.
- Clock config – ustaw częstotliwość docelową (EVE4 zazwyczaj korzysta z oscylatora zewnętrznego).
- Readbacks – sprawdź identyfikator REG_ID urządzenia oraz stan modułów (koprocesor, ekran dotykowy, audio).
- Czas trwania paneli programowych + podświetlenie
Opisz swoje szkło kontrolerowi.- Napisz blok czasowy: HSIZE/VSIZE/HCYCLE/VCYCLE, synchronizacje, PCLK_POL, SWIZZLE itp.
- Skonfiguruj PWM dla podświetlenia (REG_PWM_HZ, REG_PWM_DUTY).
- Uwaga (EVE4): musisz też ustawić źródło/częstotliwość zegara wyświetlacza razem z PWM, żeby synchronizacja pasowała do panelu.
Ta „uwaga dotycząca EVE4” jest w porządku pod względem koncepcyjnym – po prostu jasno zaznacz, że ustawiłeś zegar pikselowy oraz (jeśli to dotyczy) rejestry PLL/zegara wyświetlacza używane przez EVE4, a następnie jako ostatnie włącz REG_PCLK.
- Pierwsza ramka: build → flush → swap
Pierwszy obrazek to malutka display list.- CLEAR_COLOR_RGB(r,g,b) – kolor tła.
- CLEAR(1,1,1) – wyczyść kolor/szablon/tag.
- DISPLAY() – koniec pobierania.
- Flush_DL_Buffer() – kopiuje zawartość DL do RAM_DL.
- Gpu_Hal_DLSwap(…, DLSWAP_FRAME) – ustaw jako widoczne.
Display list (DL) w Bridgetek EVE
Display list – co to jest, po co służy i dlaczego jest przydatna
Display list to skrypt dla każdej klatki, który dokładnie określa programowi EVE, co ma narysować (kolor tła, kształty/elementy interfejsu/tekst, obrazy), a na końcu zawiera funkcję DISPLAY() oraz DLSWAP_FRAME, żeby wszystko było widoczne. Potrzebujemy tego, bo EVE wykonuje renderowanie na podstawie kompletnej, uporządkowanej listy – bez niej częściowe aktualizacje powodowałyby migotanie, a synchronizacja byłaby nieprzewidywalna. To dobre rozwiązanie, bo grupuje polecenia (mniej transferów SPI), zapewnia deterministyczny charakter ramek (ta sama lista → te same piksele) i pozwala MCU budować następną ramkę, podczas gdy EVE rysuje bieżącą – płynne interfejsy użytkownika przy minimalnym obciążeniu procesora.
Typowy cykl
- Tworzenie: polecenia kolejkowe (kolory, kształty, widżety, obrazy).
- Flush: zapisz bajty do pamięci RAM_DL.
- Swap: ustaw DLSWAP_FRAME, żeby wyświetlić nową listę.
To ogranicza ruch między MCU a EVE i zapewnia płynne aktualizacje nawet w przypadku animacji interfejsu użytkownika. Przykład:
App_WrDl_Buffer(phost, CLEAR_COLOR_RGB(0, 64, 128));
App_WrDl_Buffer(phost, CLEAR(1,1,1));
App_WrDl_Buffer(phost, DISPLAY());
App_Flush_DL_Buffer(phost);
Gpu_Hal_DLSwap(phost, DLSWAP_FRAME);
Więcej szczegółów (zestaw poleceń, mapa rejestrów, działanie FIFO) znajdzieszw „Przewodniku programowania” firmy Bridgetek dla serii BT81x.
Podsumowanie
Właśnie wykonałeś wszystkie niezbędne kroki, żeby uruchomić i zweryfikować wyświetlacz Riverdi EVE4 na STM32– od konfiguracji sprzętu po renderowanie pierwszej ramki za pomocą silnika EVE firmy Bridgetek.
Gdy ten projekt bazowy już działa, możesz zacząć zgłębiać display lists na zamówienie, zaawansowane interakcje dotykowe oraz pełne tworzenie interfejsu użytkownika dla swojego kolejnego projektu wbudowanego.
ODKRYJ NASZĄ
Whitepaper
Osiągnij idealną interakcję użytkownika z wyświetlaczem dzięki odpowiedniemu czujnikowi Touch Sensor IC. Czy kiedykolwiek zmagałeś się z problemami związanymi z fantomowymi dotknięciami lub certyfikacją? Rozwiń swoje prace B+R jak profesjonalista dzięki naszemu Whitepaperowi!



