Projektuję własne przenośne urządzenie do gier oparte na mikrokontrolerze AVR i małym wyświetlaczu OLED.
Zacząłem od monochromatycznego wyświetlacza 128 x 64 pikseli i mogę wygodnie rysować z prędkością ponad 60 klatek na sekundę.
Niedawno przerobiłem go, aby używał RGB OLED, 128 x 128 pikseli, nie myśląc zbyt wiele, by znaleźć tylko 4 FPS. Po kilku przemyśleniach i starannej refaktoryzacji mogę uzyskać do ~ 12 kl./s, jeśli nie przejmuję się zbytnio robieniem czegoś innego!
Moje pytanie brzmi - w jaki sposób urządzenie takie jak GBA (Game Boy Advance) osiągnęło częstotliwość klatek wynoszącą prawie 60 klatek na sekundę? Pomyślałem o oddzielnym „procesorze graficznym”, ale zdałem sobie sprawę, że nadal będę miał wąskie gardło w przenoszeniu do tego danych wyświetlanych.
Zastanawiałem się również nad użyciem oryginalnego 8-bitowego interfejsu równoległego, który ma większość tych ekranów, co może przynieść mi 8-krotne przyspieszenie, z tym wyjątkiem, że współczesne MCU nie mają zwykle sprzętowych interfejsów równoległych, jak w przypadku szeregowego i bitowego walenie prawdopodobnie pochłonie dużą część prędkości.
Jakie są inne opcje?
Obecnie używam ATmega1284P podłączonego do kontrolera OLD SSD1306 przez USART-SPI. To jest wersja monochromatyczna.
Kolorowy ekran to SSD1351, pierwotnie niepołączony ze sprzętowym interfejsem SPI. Nie byłem przekonany, że to zrobi wystarczającą różnicę, ogólnie jest to po prostu zbyt powolne
Wiem, że mogę uzyskać szybsze MCU, ale chcę wiedzieć, jakie inne opcje mogę zbadać - procesor GBA jest znacznie wolniejszy niż mój 1284!