Ahora que ya se que no voy a poder reparar el display de forma sencilla, el objetivo es sustituir el display original por otro display controlado con un microcontrolador que haga de puente entre los buses de los dos.
Para poder hacerlo, primero es necesario saber cómo se comunica el microcontrolador con el controlador gráfico. Y necesitamos localizar en la cinta del display aquellas líneas de datos y control que nos sirvan para interceptar los datos.
Gracias al "datasheet" no es complicado saber cuál será la orientación de las líneas ya que al estar el integrado montado en la cinta flexible no hay las mismas posibilidades que en un circuito impreso multicapa para que las señales cambien de dirección y tendrán que ir paralelas desde la salida del integrado hasta su destino final.
Si nos fijamos en el "datasheet" y descartamos aquellas líneas correspondientes al display LCD, ya podemos hacernos idea de la orientación de las señales de control y datos en la unión de la cinta con el circuito electrónico.
En la figura anterior se puede ver, como esos condensadores, que ya comprobé cuando intenté reparar el display; nos dan la pista de cuál puede ser la orientación de las señales que van del microcontrolador a la cinta.
El siguiente paso es el de identificar las alimentaciones y las señales que nos puedan ser útiles y para eso medí una a una, cada una de las pistas de la cinta con un polímetro. En la figura siguiente están las anotaciones que fuí haciendo durante el proceso de medida con el polímetro así como observaciones que hice posteriormente cuando hice uso del osciloscopio y el analizador lógico.
Las señales que nos pueden interesar son las de datos y control (que serán las que podamos utilizar para interceptar los datos que envía el microcontrolador), la señal de reset y las alimentaciones.
El resto no nos resultarán de interés ya que están relacionadas con la generación de las tensiones para el LCD, el sensor de temperatura y otras señales que son específicas de este controlador y este LCD y no nos servirán para el LCD nuevo ya que éste tendrá su propio controlador.
Identificar las alimentaciones no es complicado. Según el datasheet, el controlador S1D15712 puede estar funcionando con lógica a 3,3 voltios o a 5 voltios. En el circuito tenemos algunos otros componentes conocidos como pueden ser el transceptor del bus CAN (TJA1054) o una memoria (93C56WP) y mirando el datasheet de estos componentes y sabiendo cuales son sus patillas de alimentación podemos saber cual es la tensión de alimentación que se está usando.
El controlador S1D15712 puede ser programado usando distintas configuraciones de bus:
- Bus paralelo de 8 bits tipo 68000. En el que se utilizan 8 líneas para el bus de datos. Una línea A0 que indica si el dato enviado es un comando o un dato. Una línea CS para selección del chip. Otra linea E de habilitación y por último una línea R/W que indica si la operación es de lectura o escritura.
- Bus paralelo de 8 bits tipo 8080. Con 8 líneas para el bus de datos. Una línea A0 que indica si el dato es un comando o un dato. Una línea de CS de selección. Y dos líneas (RD y WR) utilizadas según la operación sea de lectura o escritura.
- Bus serie. Con una línea CS de selección. Una línea A0 para distinguir entre comando o dato. Y una línea SCL de reloj y otra SI por donde se envían los datos en formato serie. En este caso, solo es posible hacer escrituras en el controlador gráfico.
Una vez realizadas las medidas con el polímetro, ver esas 8 líneas juntas con exactamente la misma tensión me hizo sospechar que pudiese tratarse de las líneas de datos y que la comunicación entre el microcontrolador y el controlador gráfico se estuviese haciendo mediante un bus de 8 bits. Ya solo falta saber si la configuración es para bus 68000 o 8080 e identificar las líneas de control.
Analizando con el osciloscopio las señales al lado de las supuestas líneas de datos conseguí descifrar el funcionamiento de las líneas de control, incluyendo el RESET; y deduje además que el microcontrolador únicamente envía datos al controlador gráfico pero nunca lee datos de él.
E | A0 | CS | Acción | |
1 | 0 | Flanco de subida | byte = comando | |
1 | 1 |
| byte = dato asociado a comando | |
0 | 1 |
| byte = dato se graba en memoria gráfica |
El comportamiento de estas señales se observa muy bien tras la activación de la señal de RESET por parte del microcontrolador ya que es en este momento cuando se graban los datos de configuración en el controlador gráfico.
En el oscilograma anterior se ve un bloque de datos de configuración que se repiten continuamente a intervalos de tiempo determinados. Mediante un analizador lógico pude descifrar esos datos y ver que son escrituras que determinan la posición del display donde se van a escribir los datos gráficos que vendrán a continuación.
El último comando que no tiene un dato asociado es el comando 0x1D que indica al controlador gráfico que los siguientes datos que va a recibir van destinados a la memoria gráfica.
Después de este comando la cantidad de datos enviados desde el microcontrolador al display es tal que la deducción es que el microcontrolador está refrescando continuamente la memoria completa del controlador gráfico.
El funcionamiento, desde el arranque del display, es el siguiente:
- El microcontrolador envía un bloque de datos de configuración al controlador gráfico.
- Se activa la señal RESET del controlador gráfico.
- El microcontrolador repite el envío de los datos de configuratión.
- El microcontrolador envía un bloque de datos de configuración que:
- Establecen la escritura de datos gráficos en la página 20, columna 7 de la memoria gráfica.
- Establece la configuración del display en normal o invertida.
- Activa el display.
- Envía el comando 0x1D que indica al controlador que los siguientes datos que reciba ha de escribirlos en la memoria gráfica.
- El microcontrolador envía una gran cantidad de datos que corresponden con el contenido gráfico del display.
- Se repite el proceso continuamente desde el punto 4.
En este punto ya se que el microcontrolador se comunica con el display a través de un bus paralelo de 8 bits y sé cuales son las líneas de datos y las señales de control. Ahora necesito capturar todos los datos de configuración y los datos gráficos que el micro envía al display, pero para eso tengo que preparar un circuito ya que mi analizador gráfico no tiene memoria suficiente para capturar toda esa cantidad de información.
Los circuitos y la captura de datos los veremos en la parte 3.
0 comentarios:
Publicar un comentario