He estado diseñando mi propio dispositivo de juegos de mano basado en un microcontrolador AVR y una pequeña pantalla OLED.
Empecé con una pantalla monocromática de 128x64 píxeles y puedo dibujar cómodamente en ella a más de 60 fotogramas por segundo.
Hace poco lo rehice para utilizar un OLED RGB de 128x128 píxeles sin pensar demasiado sólo para descubrir que sólo podía conseguir unos 4 FPS. ¡Después de un poco de pensamiento y refactorización cuidadosa puedo conseguir que hasta ~ 12fps si no me importa demasiado acerca de hacer cualquier otra cosa!
Mi pregunta es: ¿cómo consiguió un dispositivo como la GBA (Game Boy Advance) una tasa de fotogramas de casi 60 fps? Pensé en tener un "procesador gráfico" separado, pero me di cuenta de que seguiría siendo un cuello de botella al transferir los datos de la pantalla a eso.
También me he planteado utilizar la vestigial interfaz paralela de 8 bits que suelen tener la mayoría de estas pantallas, lo que podría suponer un aumento de velocidad de 8 veces, pero los MCUs modernos no suelen tener interfaces paralelas de hardware como las de serie, y los golpes de bits probablemente se llevarán gran parte de la ganancia de velocidad.
¿Qué otras opciones existen?
Actualmente estoy usando un ATmega1284P conectado a un controlador OLED SSD1306 vía USART-SPI. Es la versión monocromática.
La pantalla en color era un SSD1351, no conectado originalmente al hardware SPI. No estaba convencido de que hiciera suficiente diferencia, es demasiado lento en general
Sé que puedo conseguir MCUs más rápidos, pero quiero saber qué otras opciones podría explorar - ¡el procesador de GBA es mucho más lento que mi 1284!
7 votos
"Seguiría siendo un cuello de botella transferir los datos de la pantalla a eso". La DSI tiene cuatro carriles de hasta 1,2 Gbits/seg. El resto de los cálculos te los dejo a ti.
0 votos
"Seguiría siendo un cuello de botella transferir los datos de la pantalla a eso". ¿Quiere decir que cree que se produciría un cuello de botella al transferir datos al procesador gráfico, o del procesador gráfico a la pantalla?
1 votos
Al igual que los gráficos en cualquier dispositivo de videojuegos, hay una memoria que se encargaría de los gráficos. Según este sitio web, hay una ubicación de la dirección para los gráficos, el sonido, etc. Las instrucciones se almacenarían allí. Asumiendo que no hay muchos datos que crearían conflictos con el tiempo de rendimiento, ejecutaría esas instrucciones para cargar los datos gráficos con facilidad.
0 votos
La mayoría de las respuestas parecen no tener en cuenta la diferencia clave entre estos sistemas con interfaces de pantalla de gran ancho de banda, y el intento del cartel con un bit en serie pantalla interconectada.
0 votos
No debería ser un problema si el OP está usando un periférico SPI de hardware con DMA o similar para manejar la pantalla .. aunque admito que no hemos comprobado eso. Nos olvidamos de pedir que ARV y una hoja de datos.
5 votos
comprar la pantalla sin el controlador y hacer su propio controlador
1 votos
Bueno, ¿cuál es su cuello de botella que hace que sólo 4 FPS? Lo más probable es que la GBA no tenga ese cuello de botella.
4 votos
@immibis: Casi seguro que algún horrible controlador basado en I2C o SPI. El material para aficionados está lleno de cosas lentas sobrevaloradas como esa cuando puedes conseguir una maldita pantalla de iPhone de más de 400 ppp por 20 dólares debido a las economías de escala.
6 votos
@R.. Sólo quiero señalar que la razón de ser de estos controladores para aficionados es que puedan interconectarse con casi cualquier procesador, ya que lo haces sonar como si fueran inútiles. No se podría interconectar a la pantalla de un iPhone fácilmente, si es que se puede. Probablemente se conecta a un procesador gráfico dedicado y tal vez personalizado.
0 votos
@immibis: Para la mayoría de estas pantallas, sólo necesitas un controlador que pueda emitir MIPI DSI. Hay dispositivos comerciales de aficionados para esto (por ejemplo, para convertir desde HDMI), o puedes controlarlo tú mismo con una FPGA.
0 votos
Por ejemplo, véase hackaday.com/2014/08/19/a-mipi-dsi-display-shieldhdmi-adapter y la discusión sobre el horrible material de baja calidad de los aficionados en los comentarios. (No tenía esto en mente cuando escribí lo anterior, sólo lo encontré ahora buscando en Google)
0 votos
Creo que la GBA no tenía 60fps, ¿verdad? ¿No era sólo de 30?
0 votos
@MooingDuck 59.7fps