Hola a todos.
Estoy intentado escribir en un LCD via I2C (Los que tienen una plaquita con un chip PCF8574).
No he encontrado ninguna librería (Todo para Arduino) que me sirva, así que me he puesto manos a la obra.
Estos LCD funcionan igual que los Hitachi HD44780 de toda la vida en modo 4 BIT, con la diferencia que el PCF8574 se encarga de interpretar los datos recibidos por I2C y escribirlos de forma paralela (8 bit) en el LCD.
El caso es que lo tengo casi resuelto, y digo casi porque los estados que veo en las señales (D4-D7, RS, RW y E) parecen corréctos, pero sin embargo el LCD no muestra nada.
La secuencia que he seguido, tras horas en Google y revisando la librería de Arduino:
Con RS y RW a 0, y haciendo pulso de E con cada dato válido:
INICIALIZACION
- Retardo 1sg.
-> 0x3 (4 bits en D4 a D7)
- Retardo 20 ms. (En la imagen aparecen 10, pero lo he reducido para que cupiera)
-> 0x3
- Retardo 20 ms
-> 0x3
Retardo 20 ms
Hasta aquí se supone que he reseteado el LCD, y queda en modo 8 BIT
-> 0x2
- Retardo 20ms. Tras esto el LCD está en modo 4BIT. Según el Datasheet, con 40 usg. se ejecuta
A partir de aquí comandos (En dos "nibbles" o semibytes, cada uno con un pulso de E):
0x28 (4BIT, 2 líneas, 5x7 puntos)
0x08 (Deshabilito LCD, cursor y parpadeo)
0x0F (Habilito LCD, cursor y parpadeo)
0x07 (Habilito autoincremento hacia +)
0x02 (Vuelta a HOME del cursor)
Tras esto, activo RS (Envio de datos, no comandos) y envío 20 veces 0x45 ('E')
Creo que debería funcionar. ¿Será defectuoso mi LCD?
Adjunto un pantallazo de lo que he capturado en las diferentes señales.
Están todas las señales del LCD. La última, SCL_TRIG, la he cogido del bus (I2C) para el trigger del analizador.
Si a alguien se le ocurre algo, agradecería una respuesta.
P.D.: No tengo problema en compartir la librería (Si consigo que funcione), aunque aviso que no me dedico profesionamente a esto del C y mi programación puede ser bastante ... cuando menos curiosa. La he hecho para un STM32F4 Discovery, usando Chibios con sus librerías HAL en vez de las de STM.