CST816S im Überblick
Punkt | Wert | Quelle |
|---|---|---|
I2C-Adresse (7-Bit) | | Espressif esp_lcd_touch_cst816s; Linux-Device-Tree-Beispiel |
Touch-Punkte | 1 (Einzelfinger) | Espressif-Treiber und README |
Touch-Daten | Beginnen bei | Linux-Treiber hynitron-cst816x |
Chip-ID-Register | | Espressif-Treiber |
Linux-kompatibel | | Linux-Device-Tree-Binding |
Auslesen eines Touchs
Der Linux-Treiber liest 6 Bytes ab Register 0x01:
Register | Inhalt |
|---|---|
| Gestencode |
| Anzahl Finger (0 oder 1) |
| X, Big-Endian, untere 12 Bits |
| Y, Big-Endian, untere 12 Bits |
Vom Linux-Treiber verarbeitete Gestencodes: 0x01 nach oben wischen, 0x02 nach unten wischen, 0x03 nach links wischen, 0x04 nach rechts wischen, 0x0C langer Tastendruck.
Der CST816S antwortet erst, wenn man ihn berührt
Espressifs README warnt, dass der Chip "auf I2C-Befehle erst nach einem Ereignis reagiert, z. B. nach einer erkannten Berührung. Erwartet keine Antwort beim Init." Deshalb findet ein I2C-Scanner beim Booten an 0x15 oft nichts, und deshalb hat ESPHome eine Option skip_probe, die das Lesen der Chip-ID beim Start überspringt. Espressif weist zudem darauf hin, dass bei einigen Chips das Lesen der ID die Initialisierung fehlschlagen lassen kann. Berühren Sie das Display beim Scannen oder überspringen Sie den ID-Check.
Reset und Interrupt
- Der Linux-Treiber setzt Reset für 50 ms aktiv, gibt ihn frei und wartet 100 ms. Der Espressif-Treiber wartet auf jeder Seite 200 ms.
- INT ist im Espressif-Treiber optional (Polling ist möglich). Der Linux-Treiber fordert einen Interrupt an und schlägt ohne ihn beim Proben fehl.
Phantom-Touches (Geistertouches)
Ein Entwickler hat einen Test-Sketch veröffentlicht, der zeigt, dass der CST816D auf dem Waveshare ESP32-S3-Touch-LCD-2 Berührungen meldet, die niemand ausgeführt hat – meist entlang der vertikalen Mittellinie, auf zwei Boards und mit Waveshares eigenem Demo-Code. Eine Fehlerbehebung ist nicht bestätigt. Falls Sie Geistertouches sehen, führen Sie zuerst die Vendor-Demo aus, um Hardware von Ihrem Code zu trennen, prüfen Sie dann Stromversorgung und Erdung des Boards, bevor Sie Touches in Software herausfiltern.
Verwandte Controller
Die cst816-Komponente von ESPHome listet CST716, CST816D, CST816S, CST816T, CST820, CST826 und CST836 auf. Für 4″–7″-Multi-Touch-Panels siehe GT911; für runde 1.28″-Displays siehe unseren GC9A01 + ESP32-Leitfaden.
Leitfäden & Vergleiche
CST816S: Fehlersuche & FAQ
Warum wird mein CST816S auf I2C nicht erkannt?
Der CST816S antwortet auf I2C erst nach einem Ereignis wie einer Berührung, daher findet ein Scan beim Booten unter 0x15 normalerweise nichts. Berühren Sie den Bildschirm während des Scans, lassen Sie zuerst Reset los und setzen Sie in ESPHome skip_probe: true. Espressif weist darauf hin, dass bei einigen Chips das Auslesen der ID die Initialisierung fehlschlagen lassen kann.
Unterstützt der CST816S Multi-Touch?
Nein. Er meldet nur einen einzelnen Finger; der Treiber von Espressif begrenzt die Anzahl der Punkte auf 1. Gesten werden jedoch gemeldet: Wischen nach oben, unten, links und rechts sowie langes Drücken. Für Multi-Touch verwenden Sie einen Controller der GT911-Klasse.
Warum meldet mein CST816 Geisterberührungen (Ghost Touches)?
Ein öffentlicher Bericht zeigt einen CST816D auf dem Waveshare ESP32-S3-Touch-LCD-2, der mit dem Democode des Herstellers Berührungen entlang der vertikalen Mittellinie meldet; eine Lösung wurde bisher nicht bestätigt. Führen Sie zuerst die Hersteller-Demo aus, um Ihren eigenen Code auszuschließen, und prüfen Sie dann Stromversorgung und Masse, bevor Sie Berührungen per Software filtern.
Quellen
- Espressif ESP-BSP: esp_lcd_touch_cst816s-Treiber
- Espressif ESP-BSP: esp_lcd_touch_cst816s README
- Linux-Kernel: drivers/input/touchscreen/hynitron-cst816x.c
- Linux-Kernel: hynitron,cst816x Device-Tree-Binding
- ESPHome: CST816-Touchscreen
- seanuleh: Ghost-Touch-Testsketch für Waveshare ESP32-S3-Touch-LCD-2 (CST816D)