Tengo una pantalla TFT que acepta datos de visualización de 24 bits por píxel (BPP), pero el mecanismo de mi conector solo admite el modo 5:6:5.
¿Cuál es la forma preferida de hacer que la pantalla suelte los datos de píxeles adicionales y use los datos de 5:6:5?
¿Debería desplegar las líneas de datos no utilizadas?
Hay dos enfoques comunes. Un enfoque es conectar todos los bits no utilizados a un valor fijo (normalmente cero). Esto causará una ligera pérdida de brillo, pero realmente no vale la pena preocuparse por un 3%. La otra es conectarlos a los bits superiores, en secuencia, de modo que un valor de color de 5 bits se conecte como [D4 D3 D2 D1 D0 D4 D3 D2]. Esto hará que cada cuarto paso de brillo aumente el brillo de píxeles en 9 en lugar de 8, y utiliza todo el rango dinámico.
Sin embargo, al decidir sobre un método, uno debe considerar qué software esperará. Prefiero 5:5:5 a 5:6:5 (usando el bit superior como algo así como una clave de transparencia) porque los valores con R=G=B tendrán todos la misma crominancia y tono. Con una pantalla de 5:6:5, el software que busque una escala de grises uniforme podría usar (n,2n,n) para todos los valores (suponiendo que el blanco sea 31,62,61), o podría agregar 1 a los valores verdes para n>=16. Si el software simplemente va a copiar el bit superior del valor "verde" al bit inferior, puede lograr mejores resultados con [D5 D4 D3 D2 D1 D0 D4 D3] o [D5 D4 D3 D2 D1 D5 D4 D3] de lo que obtendría con [D5 D4 D3 D2 D1 D0 D5 D4] (que daría la rampa de 63 pasos más uniforme). Si el software simplemente va a dejar el bit inferior en blanco, lo mejor sería [D5 D4 D3 D2 D1 D5 D4 D3].
Para un rango de brillo máximo, conecte los lsbits no utilizados al bit más bajo de su fuente. Simplemente conectarse a 0 limitará ligeramente el brillo máximo.
Una solución muy simple sería conectar sus buses r/g/b a los bits más significativos de los buses de visualización correspondientes, es decir, entrada R4 -> visualización R7, ..., entrada R0 -> visualización R3, y de manera similar para otros subpíxeles. De esta manera, al menos puede conservar la mayor parte del rango dinámico de su pantalla. Los bits restantes (menos significativos) se pueden conectar a 0 o 1 como desee. Si todos son 0, perderá algo de rango dinámico en la parte superior, pero lo mantendrá en la parte inferior (cerca de 0) y viceversa. Esta transformación se puede expresar como
R = R << 3 + (0...7);
G = G << 2 + (0...3);
B = B << 3 + (0...7);
La calidad de la imagen no va a ser muy buena, pero esa es una limitación que no puedes superar (no puedes crear información que no existe).
Jaime