Я разрабатывал свое собственное портативное игровое устройство на основе микроконтроллера AVR и небольшого OLED-дисплея.
Я начал с монохромного дисплея 128x64 пикселей и могу рисовать его со скоростью более 60 кадров в секунду.
Недавно я переделал его, чтобы использовать RGB OLED, 128x128 пикселей, не слишком задумываясь, только чтобы обнаружить, что я могу достичь только около 4 FPS. После некоторых размышлений и тщательного рефакторинга я могу получить это до ~ 12 кадров в секунду, если мне не нужно слишком много заниматься чем-то другим!
Мой вопрос - как такое устройство, как GBA (Game Boy Advance), достигло частоты кадров почти 60 кадров в секунду? Я думал о том, чтобы иметь отдельный «графический процессор», но понял, что все равно буду ограничен в передаче данных дисплея.
Мне также было интересно использовать рудиментарный 8-битный параллельный интерфейс, который есть у большинства этих экранов, что может увеличить скорость в 8 раз, за исключением того, что современные микроконтроллеры не имеют аппаратных параллельных интерфейсов, как у последовательных и битовых. стук, скорее всего, съест много прироста скорости.
Какие еще варианты существуют?
В настоящее время я использую ATmega1284P, подключенный к SSD-контроллеру SSD1306 через USART-SPI. Это монохромная версия.
Цветным экраном был SSD1351, изначально не подключенный к аппаратному SPI. Я не был уверен , что это сделает достаточно разницы, это просто слишком медленно в целом
Я знаю, что могу получить более быстрые микроконтроллеры, но я хочу знать, какие еще варианты я мог бы изучить - процессор GBA намного медленнее, чем мой 1284!