Estoy haciendo un escáner wifi con ESP8266 y para mostrar información, estoy usando la pantalla Nokia 1616 / C100 basada en SPI.
Esta vez estoy codificando ESP8266 de forma nativa en lugar de usar la combinación mcu + esp8266 (que se ejecuta en el firmware del comando).
En el lado de ESP, he codificado correctamente el hardware spi (HSPI) para escupir valores de 9 bits en el formato adecuado (primero msb, modo spi 0). Puedo ver los datos que se envían en spi muy bien.
Sin embargo, cuando conecto la pantalla LCD, no hay nada en ella. Es simplemente blanco con luz de fondo, como si ni siquiera se haya inicializado. El código de inicialización que he usado funciona bien (con un AVR para un proyecto diferente)
void LCD_NOKIA_C100_init(void)
{
//SET GPIO4 AS OUTPUT FOR RST LINE
PIN_FUNC_SELECT(PERIPHS_IO_MUX_GPIO4_U, FUNC_GPIO4);
GPIO_OUTPUT_SET(4, 1);
LCD_NOKIA_C100_RST_LOW;
//DELAY FOR 200us
os_delay_us(200);
LCD_NOKIA_C100_RST_HIGH;
//DELAY FOR 10MS
os_delay_us(10000);
//SOFTWARE RESET
LCD_NOKIA_C100_send_command(0x01);
os_delay_us(5000);
//SLEEP OUT + BOOSTER ON
LCD_NOKIA_C100_send_command(0x11);
os_delay_us(6000);
//PARTIAL DISPLAY OFF
LCD_NOKIA_C100_send_command(0x13);
os_delay_us(6000);
//INTERFACE PIXEL FORMAT = RGB (5 6 5)
LCD_NOKIA_C100_send_command(0x3A);
LCD_NOKIA_C100_send_data(0x05);
//DISPLAY ON
LCD_NOKIA_C100_send_command(0x29);
//SET GAMMA PROFILE
LCD_NOKIA_C100_send_command(0x26);
LCD_NOKIA_C100_send_data(0x08);
}
void LCD_NOKIA_C100_clear_screen(uint16_t color)
{
uint8_t h = (color>>8);
uint8_t l = (color);
//CASET (COLS = 0 TO 131)
LCD_NOKIA_C100_send_command(0x2A);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(131);
//RASET (ROWS = 0 TO 161)
LCD_NOKIA_C100_send_command(0x2B);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(0x00);
LCD_NOKIA_C100_send_data(161);
//RAMWR
LCD_NOKIA_C100_send_command(0x2C);
uint16_t i;
for(i=0; i<(132*162); i++)
{
LCD_NOKIA_C100_send_data(h);
LCD_NOKIA_C100_send_data(l);
}
}
Tengo la sensación de que esto es algo específico de ESP, pero no tengo la experiencia suficiente para identificarlo.
El TFT está conectado a ESP8266 de la siguiente manera
ESP8266 --- NOKIA TFT
/ RST ----------- GPIO4
/ CS ----------- GPIO15 (HSPI)
SDA ----------- GPIO13 (HSPI)
SCK ----------- GPIO14 (HSPI)