El CST816S de un vistazo
Elemento | Valor | Fuente |
|---|---|---|
Dirección I2C (7 bits) | | esp_lcd_touch_cst816s de Espressif; ejemplo de device-tree de Linux |
Puntos táctiles | 1 (un dedo) | Driver y README de Espressif |
Datos táctiles | Comienza en | Driver hynitron-cst816x de Linux |
Registro de Chip ID | | Driver de Espressif |
Compatible con Linux | | Binding de device-tree de Linux |
Lectura de un toque
El driver de Linux lee 6 bytes a partir del registro 0x01:
Registro | Contenido |
|---|---|
| Código de gesto |
| Número de dedos (0 o 1) |
| X, big-endian, 12 bits bajos |
| Y, big-endian, 12 bits bajos |
Códigos de gesto gestionados por el driver de Linux: 0x01 deslizar hacia arriba, 0x02 deslizar hacia abajo, 0x03 deslizar a la izquierda, 0x04 deslizar a la derecha, 0x0C pulsación larga.
El CST816S no responde hasta que lo tocas
El README de Espressif advierte que el chip "solo responde a los comandos I2C después de un evento, como la detección de un toque. No espere que responda durante la inicialización." Por eso, un escáner I2C al arrancar a menudo no encuentra nada en 0x15, y por eso ESPHome tiene una opción skip_probe que omite la lectura del Chip ID al inicio. Espressif añade que en algunos chips la lectura del ID puede hacer que la inicialización falle. Toque la pantalla mientras escanea, u omita la comprobación del ID.
Reset e interrupción
- El driver de Linux activa el reset durante 50 ms, lo libera y espera 100 ms. El driver de Espressif espera 200 ms en cada fase.
- INT es opcional en el driver de Espressif (puede hacer polling). El driver de Linux solicita una interrupción y no puede completar el probe sin ella.
Toques fantasma
Un desarrollador ha publicado un sketch de prueba que muestra el CST816D en el Waveshare ESP32-S3-Touch-LCD-2 registrando toques que nadie hizo, principalmente a lo largo de la línea central vertical, en dos placas y con el propio código de demostración de Waveshare. No se ha confirmado ninguna solución. Si observa toques fantasma, ejecute primero la demo del fabricante para separar el hardware de su código, y después revise la alimentación y la conexión a tierra de la placa antes de filtrar los toques por software.
Controladores relacionados
El componente cst816 de ESPHome incluye los modelos CST716, CST816D, CST816S, CST816T, CST820, CST826 y CST836. Para paneles multitáctiles de 4″–7″ consulte GT911; para pantallas redondas de 1.28″ consulte nuestra guía de GC9A01 + ESP32.
Guías y comparativas
CST816S: resolución de problemas y preguntas frecuentes
¿Por qué no se detecta mi CST816S en I2C?
El CST816S solo responde a I2C después de un evento como un toque, por lo que un escaneo durante el arranque normalmente no encuentra nada en 0x15. Toque la pantalla mientras escanea, libere primero el reset y en ESPHome configure skip_probe: true. Espressif señala que en algunos chips leer el ID puede provocar un fallo en la inicialización.
¿Admite multitáctil el CST816S?
No. Solo informa un dedo; el controlador de Espressif limita el número de puntos a 1. Sí informa gestos: deslizamiento hacia arriba, abajo, izquierda y derecha, y pulsación larga. Para multitáctil use un controlador de la clase GT911.
¿Por qué mi CST816 informa toques fantasma?
Un informe público muestra un CST816D en el Waveshare ESP32-S3-Touch-LCD-2 que informa toques a lo largo de la línea central vertical con el propio código de demostración del fabricante, y no se ha confirmado ninguna solución. Ejecute la demostración del fabricante para descartar su código y, a continuación, compruebe la alimentación y la toma de tierra antes de filtrar los toques por software.
Fuentes
- Espressif ESP-BSP: controlador esp_lcd_touch_cst816s
- Espressif ESP-BSP: README de esp_lcd_touch_cst816s
- Kernel de Linux: drivers/input/touchscreen/hynitron-cst816x.c
- Kernel de Linux: binding de device-tree hynitron,cst816x
- ESPHome: pantalla táctil CST816
- seanuleh: sketch de prueba de toques fantasma para Waveshare ESP32-S3-Touch-LCD-2 (CST816D)