¿Por qué el controlador OLED ssd1306 tiene un diseño de memoria inusual?

0

Recientemente porté un controlador para el controlador OLED ssd1306. enlace enlace

Al escribir en él, la pantalla de 128x64 se organiza en ocho secciones horizontales de vertical bytes.

0 LSB
1
2
4
5
6
7 MSB

es decir, la fila superior muestra los bits menos significativos, mientras que la octava fila muestra los bits más significativos.

Cada una de las ocho secciones horizontales contiene 128 bytes, que se ejecutan de izquierda a derecha. Así que toda la pantalla se dirige como:

  0    1 ...  127
128  129 ...  255
...
896  897 ... 1023

Incluso si giras la pantalla 90 grados, el arreglo no tiene sentido. (Entonces son 8 columnas de bytes, pero mapeadas de arriba a abajo y luego de derecha a izquierda).

¿Qué razones podrían haber hecho que este mapeo de memoria muestre una buena idea?

Actualización: en la página 35 hay un "modo de direccionamiento vertical" que parece un simple ráster de derecha a izquierda, si giras la pantalla 90 grados.

    
pregunta fadedbee

2 respuestas

3
  

¿Qué razones podrían haber hecho que este mapeo de memoria muestre una buena idea?

Este diseño facilita enormemente la visualización de 8 líneas de texto en la pantalla; una fuente de caracteres de 8 píxeles de alto puede almacenarse como una secuencia de valores de 8 bits que se escribirán en la pantalla. Este modo de visualización tiene la ventaja de que es fácil dibujar texto en cualquier posición horizontal, lo que permite el uso fácil de fuentes de ancho variable. (Un diseño que tratara cada byte como ocho píxeles horizontales requeriría operaciones de enmascaramiento y desplazamiento de bits para dibujar texto en posiciones horizontales no divisibles entre 8).

La principal desventaja de este diseño es que hace que sea difícil dibujar texto o gráficos en posiciones verticales arbitrarias. Sin embargo, esta es una limitación aceptable para muchas aplicaciones.

    
respondido por el duskwuff
1

Este tipo de diseño de memoria de pantalla es en realidad más común en los controladores de pantalla pequeños de lo que podría pensar. En todos los controladores de pantalla LCD / OLED que he programado a lo largo de los años, este diseño es el más común. Los diseños de bytes horizontales existen con seguridad, pero son menos comunes.

El diseñador del controlador de pantalla resuelve la arquitectura de la memoria del controlador de manera que el acceso a la memoria para la actualización de la pantalla sea lo más simple posible para mantener bajo el tamaño y el costo del chip.

Un controlador de pantalla diseñado correctamente hará que el software MCU dibuje la imagen de la pantalla en un búfer de memoria de la MCU, de modo que el acceso de lectura / escritura para admitir la fusión de contenido sea el más alto posible. Entonces, el controlador está diseñado para admitir una copia rápida del búfer de memoria al controlador de pantalla. Esta copia puede aprovechar las características de incremento automático de la dirección del controlador para cargar los datos lo más rápido posible, lo que puede llevar a actualizaciones de contenido de pantalla rápida. Si intenta crear un controlador de pantalla sin un búfer de memoria que quiera hacer accesos de lectura / modificación / escritura al controlador de pantalla, espere que el proceso promedio de actualización de la pantalla sea de tres a cinco veces más lento.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas