TFT SPI Nokia C100 / 1616 con ESP8266

0

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)

    
pregunta Ankit

1 respuesta

0

La velocidad de reloj de ESP8266 es lo suficientemente alta como para que puedas usar la técnica de bitbanging para conducir el GPIO para SPI de 9 bits. Si hay un comando llamado DAL (Mostrar todos los píxeles en ON), entonces toda la pantalla se vuelve blanca sin afectar la RAM de pantalla. Parece que el código de inicialización está bien. Encuentro un problema con la parte CASET y RASET. Después de enviar el comando para CASET, debe enviar dos señales de datos (es decir, el inicio del eje y y el fin yye del eje y, que se encuentra entre 0 y 131). Encuentro 4 señales de datos seguidas del comando RASET y CASET. También sospecho que SLEEP OUT tiene un comando diferente y BOOSTER ON tiene un comando separado.

Primero te recomendaré que utilices la técnica de bitbanding, luego verificas una vez su funcionamiento. Si funciona, entonces te mueves a la técnica SPI.     
respondido por el Aadarsh

Lea otras preguntas en las etiquetas