Le CST816S en un coup d'œil
Élément | Valeur | Source |
|---|---|---|
Adresse I2C (7 bits) | | Espressif esp_lcd_touch_cst816s ; exemple de device tree Linux |
Points de contact | 1 (doigt unique) | Driver Espressif et README |
Données tactiles | Commence à | Driver Linux hynitron-cst816x |
Registre Chip ID | | Driver Espressif |
Compatible Linux | | Binding device tree Linux |
Lecture d'un contact
Le driver Linux lit 6 octets à partir du registre 0x01 :
Registre | Contenu |
|---|---|
| Code du geste |
| Nombre de doigts (0 ou 1) |
| X, big-endian, 12 bits de poids faible |
| Y, big-endian, 12 bits de poids faible |
Codes de gestes gérés par le driver Linux : 0x01 glissement vers le haut, 0x02 glissement vers le bas, 0x03 glissement vers la gauche, 0x04 glissement vers la droite, 0x0C appui long.
Le CST816S ne répond pas tant que vous ne le touchez pas
Le README d'Espressif avertit que la puce « ne répond aux commandes I2C qu'après un événement, tel qu'une détection de contact. Ne vous attendez pas à ce qu'elle réponde à l'initialisation. » C'est pourquoi un scanner I2C au démarrage ne trouve souvent rien à l'adresse 0x15, et pourquoi ESPHome propose une option skip_probe qui évite de lire le Chip ID de la puce au démarrage. Espressif précise que sur certaines puces, la lecture de l'ID peut faire échouer l'initialisation. Touchez l'écran pendant le scan, ou passez la vérification de l'ID.
Réinitialisation et interruption
- Le driver Linux pilote le reset pendant 50 ms, le relâche puis attend 100 ms. Le driver d'Espressif attend 200 ms de chaque côté.
- INT est optionnel dans le driver Espressif (il peut interroger la puce par polling). Le driver Linux demande une interruption et échoue au probe sans celle-ci.
Contacts fantômes
Un développeur a publié un croquis de test montrant que le CST816D du Waveshare ESP32-S3-Touch-LCD-2 signale des contacts que personne n'a effectués, principalement le long de l'axe vertical central, sur deux cartes et avec le code de démo de Waveshare lui-même. Aucune correction n'a été confirmée. Si vous observez des contacts fantômes, exécutez d'abord la démo du fabricant pour dissocier le matériel de votre code, puis vérifiez l'alimentation et la mise à la terre de la carte avant de filtrer les contacts par logiciel.
Contrôleurs associés
Le composant cst816 d'ESPHome liste les CST716, CST816D, CST816S, CST816T, CST820, CST826 et CST836. Pour les dalles multi-touch de 4″ à 7″, voir GT911 ; pour les écrans ronds 1.28″, consultez notre guide GC9A01 + ESP32.
Guides et comparatifs
CST816S : dépannage et FAQ
Pourquoi mon CST816S n'est-il pas détecté sur le bus I2C ?
Le CST816S ne répond sur le bus I2C qu'après un événement tel qu'une touche ; un scan au démarrage ne trouve donc généralement rien à l'adresse 0x15. Touchez l'écran pendant le scan, relâchez d'abord la broche reset, et dans ESPHome définissez skip_probe: true. Espressif signale que sur certains chips, la lecture de l'ID peut faire échouer l'initialisation.
Le CST816S prend-il en charge le multi-touch ?
Non. Il ne signale qu'un seul doigt ; le pilote d'Espressif plafonne le nombre de points à 1. Il signale en revanche les gestes : glissement vers le haut, le bas, la gauche et la droite, ainsi que l'appui long. Pour le multi-touch, utilisez un contrôleur de classe GT911.
Pourquoi mon CST816 signale-t-il des touches fantômes ?
Un rapport public fait état d'un CST816D sur le Waveshare ESP32-S3-Touch-LCD-2 signalant des touches le long de la ligne médiane verticale, y compris avec le code de démo du fabricant, et aucun correctif n'a été confirmé. Exécutez la démo du fabricant pour écarter la piste de votre propre code, puis vérifiez l'alimentation et la mise à la terre avant de filtrer les touches par logiciel.
Sources
- Espressif ESP-BSP : pilote esp_lcd_touch_cst816s
- Espressif ESP-BSP : README du pilote esp_lcd_touch_cst816s
- Noyau Linux : drivers/input/touchscreen/hynitron-cst816x.c
- Noyau Linux : binding device-tree hynitron,cst816x
- ESPHome : écran tactile CST816
- seanuleh : sketch de test des touches fantômes pour le Waveshare ESP32-S3-Touch-LCD-2 (CST816D)