Il CST816S in sintesi
Voce | Valore | Fonte |
|---|---|---|
Indirizzo I2C (7 bit) | | Espressif esp_lcd_touch_cst816s; esempio di device-tree Linux |
Punti touch | 1 (singolo dito) | Driver Espressif e README |
Dati touch | Inizia da | Driver Linux hynitron-cst816x |
Registro Chip ID | | Driver Espressif |
Compatibile Linux | | Binding device-tree Linux |
Lettura di un tocco
Il driver Linux legge 6 byte dal registro 0x01:
Registro | Contenuto |
|---|---|
| Codice gesto |
| Numero di dita (0 o 1) |
| X, big-endian, 12 bit meno significativi |
| Y, big-endian, 12 bit meno significativi |
Codici gesto gestiti dal driver Linux: 0x01 scorrimento verso l'alto, 0x02 scorrimento verso il basso, 0x03 scorrimento a sinistra, 0x04 scorrimento a destra, 0x0C pressione prolungata.
Il CST816S non risponde finché non lo si tocca
Il README di Espressif avverte che il chip "risponde ai comandi I2C solo dopo un evento, come il rilevamento di un tocco. Non aspettarsi che risponda all'inizializzazione." Per questo motivo uno scanner I2C all'avvio spesso non trova nulla all'indirizzo 0x15, ed è per questo che ESPHome prevede un'opzione skip_probe che salta la lettura del chip ID all'avvio. Espressif aggiunge che su alcuni chip la lettura dell'ID può far fallire l'inizializzazione. Toccare lo schermo durante la scansione, oppure saltare la verifica dell'ID.
Reset e interrupt
- Il driver Linux pilota il reset per 50 ms, lo rilascia e attende 100 ms. Il driver di Espressif attende 200 ms su ciascun lato.
- INT è opzionale nel driver di Espressif (può eseguire il polling). Il driver Linux richiede un interrupt e il probe fallisce senza.
Tocchi fantasma
Uno sviluppatore ha pubblicato uno sketch di test che mostra il CST816D sul Waveshare ESP32-S3-Touch-LCD-2 segnalare tocchi fatti da nessuno, principalmente lungo la linea centrale verticale, su due schede e con il codice demo stesso di Waveshare. Nessuna correzione è stata confermata. Se si vedono tocchi fantasma, eseguire prima la demo del produttore per separare il problema hardware dal proprio codice, poi verificare alimentazione e messa a terra della scheda prima di filtrare i tocchi via software.
Controller correlati
Il componente cst816 di ESPHome elenca CST716, CST816D, CST816S, CST816T, CST820, CST826 e CST836. Per i pannello multi-touch da 4″–7″ vedere GT911; per i display rotondi da 1.28″ vedere la nostra guida GC9A01 + ESP32.
Guide e confronti
CST816S: risoluzione dei problemi e FAQ
Perché il mio CST816S non viene rilevato su I2C?
Il CST816S risponde su I2C solo dopo un evento come un tocco, quindi una scansione all'avvio di solito non trova nulla all'indirizzo 0x15. Toccare lo schermo durante la scansione, rilasciare prima il reset e in ESPHome impostare skip_probe: true. Espressif segnala che su alcuni chip la lettura dell'ID può far fallire l'inizializzazione.
Il CST816S supporta il multi-touch?
No. Riporta un solo dito; il driver di Espressif limita a 1 il numero di punti. Riporta però i gesti: scorrimento verso l'alto, il basso, sinistra e destra, e pressione prolungata. Per il multi-touch utilizzare un controller di classe GT911.
Perché il mio CST816 riporta tocchi fantasma?
Una segnalazione pubblica mostra un CST816D sul Waveshare ESP32-S3-Touch-LCD-2 che riporta tocchi lungo la linea centrale verticale con il codice demo dello stesso produttore, e non è stata confermata alcuna correzione. Eseguire la demo del produttore per escludere problemi nel proprio codice, quindi verificare alimentazione e messa a terra prima di filtrare i tocchi via software.
Fonti
- Espressif ESP-BSP: driver esp_lcd_touch_cst816s
- Espressif ESP-BSP: README di esp_lcd_touch_cst816s
- Kernel Linux: drivers/input/touchscreen/hynitron-cst816x.c
- Kernel Linux: binding device-tree hynitron,cst816x
- ESPHome: touchscreen CST816
- seanuleh: sketch di test per tocchi fantasma su Waveshare ESP32-S3-Touch-LCD-2 (CST816D)