Der CST328 auf einen Blick
Merkmal | Wert | Quelle |
|---|---|---|
Schnittstelle | I2C, 16-Bit-Registeradressen | ESPHome-Treiber, RS-Key |
I2C-Adresse (7-Bit) | | Pin-Tabelle des LilyGO T-Deck Pro, RS-Key |
Touch-Punkte | 5 beim Waveshare ESP32-S3-Touch-LCD-2.8 | Waveshare Wiki |
Touch-Report | Register | RS-Key |
Interrupt | Unterstützt | Waveshare Wiki, ESPHome (fallende Flanke) |
Status | Nicht mehr in Produktion, laut LilyGO | LilyGO T-Deck Pro README |
Für diese Angaben haben wir kein Datenblatt von Hynitron verwendet. Das im Netz auffindbare Exemplar ist ein Upload eines Händlers, daher stammen die obigen Werte aus dem Treiberquellcode und der Board-Dokumentation.
Der Wechsel zum CST3530
Im README des LilyGO T-Deck Pro heißt es, der CST328-Lieferant "hat die Produktion eingestellt", sodass neuere T-Deck-Pro-v1.1-Boards einen CST3530 verwenden. Dort wird zudem darauf hingewiesen, dass "beide Chips dieselbe Geräteadresse verwenden", sodass die Firmware den Chip während der Initialisierung identifizieren muss. LilyGO verwendet Hynitrons cst66xx-Routine für den CST3530 und cst3xx für den CST328.
Der Waveshare RP2350-Touch-LCD-2.8 vollzog denselben Wechsel. Das RS-Key-Projekt dokumentiert V1 mit einem CST328 unter 0x1A und V2 mit einem CST3530 unter 0x58. Beim T-Deck Pro ändert sich die Adresse nicht; bei diesem Board hingegen schon.
| CST328 | CST3530 |
|---|---|---|
Registeradressierung | 2 Bytes | 4-Byte-Befehlswörter |
Touch-Report | | |
Bestätigung nach dem Lesen | Sync-Byte | |
Adresse beim T-Deck Pro | | |
Adresse auf dem RP2350-Touch-LCD-2.8 | | |
Verhalten im Leerlauf | In den von uns herangezogenen Quellen nicht dokumentiert | Ruht automatisch; LilyGO empfiehlt Interrupts statt Polling |
Die CST3530-Angaben stammen aus dem zusammengeführten Treiber von RS-Key, dessen Autor ihn auf einem V2-Board getestet hat, sowie aus LilyGOs README.
Wie sich der Tausch bemerkbar macht
Beide Projekte, bei denen dies auftrat, meldeten dasselbe Bild: Die Firmware läuft und das Display zeichnet, aber keine Berührung wird registriert. Laut dem reticulum-tdeck-Issue funktionierten manche T-Deck-Pro-v1.1-Geräte und andere nicht — das passt eher zu einer Änderung zwischen Produktionslosen als zu einem Verdrahtungsfehler.
Zwei weitere Fallen:
- Ein I2C-Scan identifiziert den Chip nicht. Auf dem T-Deck Pro antworten beide Chips unter
0x1A. Die Autoren von reticulum-tdeck fragen zuerst den CST3530 ab, weil ein CST3530 "Lesezugriffe auf CST328-Register gerne quittiert". Sie weisen auch darauf hin, dass dieser Code noch nicht auf einem CST3530-Board gelaufen sei. Ein Bench-Test von meshcore-firmware an einem T-Deck Pro V1.1 zeigt dasselbe: Der Lesezugriff im CST328-Stil wurde quittiert, lieferte aber weder Chip-Typ noch Auflösung, während der Lesezugriff im CST3530-Stil einen gültigen Block mit der Markierung0xCA 0xCAund der 240×320-Auflösung des Panels zurückgab. - Andere Treiber können
0x1Afür sich beanspruchen. Ein offener Meshtastic-Pull-Request berichtet, dass sein I2C-Scan den Touch-Chip des T-Deck Pro für eine DS2482-800-Bridge hielt, weil ein Statusregister-Test zufällig zutraf.
Das ist ein verbreitetes Muster bei kleinen Touch-Controllern: Die Teilenummer auf dem Board bleibt gleich, während sich der Chip ändert. Wenn Sie in Stückzahlen fertigen, fragen Sie Ihren Display-Lieferanten, welcher Touch-IC verbaut ist — und lassen Sie sich ankündigen, bevor er wechselt. Unser EOL- und PCN-Glossar erklärt, was eine Änderungsmitteilung enthalten sollte.
Inbetriebnahme mit ESPHome
ESP Homes cst328-Plattform benötigt eine konfigurierte I2C-Schnittstelle und akzeptiert optional interrupt_pin und reset_pin. Beim Setup passiert Folgendes:
- Setzt den Reset-Pin für 5 ms auf Low und wartet dann.
- Liest die Firmware-CRC und erwartet
0xCACA. Bei jedem anderen Wert markiert sie die Komponente als fehlgeschlagen. - Liest Chip-Typ, Projekt-ID, Firmware-Revision und Auflösung und schaltet den Chip dann in den Normalmodus.
Der CRC-Check ist die erste Anlaufstelle, wenn ESPHome den Touchscreen als fehlgeschlagen meldet. ESPHome verwendet CST328-Lesezugriffe mit 2-Byte-Registeradressen, und im Bench-Test von meshcore-firmware lieferte diese Art von Zugriff bei einem CST3530 nichts Verwertbares. Erwarten Sie daher auf einem Board mit CST3530, dass dieser Check fehlschlägt. Das ist unsere Schlussfolgerung: Wir haben ESPHome nicht auf einem CST3530-Board ausgeführt.
Treiberunterstützung
- ESPHome: die
cst328-Plattform. Ihre Dokumentation nennt das Board Waveshare ESP32-S3 Touch LCD 2.8. Eine CST3530-Plattform gibt es nicht. - ESP-IDF: Waveshare veröffentlicht
esp_lcd_touch_cst328in der Espressif-Component-Registry. Seine Kompatibilitätstabelle listet nur den CST328. - Rust: das Crate
cst328auf crates.io sowie die RS-Key-Firmware für beide Chips. - Hynitrons eigener Treiber: LilyGO verlinkt Hynitrons
hyn_driver-Quellcode für beide Chips.
Verwandte Controller
Für Ein-Finger-Touch bei runden Displays siehe CST816S, ebenfalls von Hynitron. Für größere Panels mit bis zu 5 Punkten siehe GT911.
CST328: Fehlersuche & FAQ
Der Touch funktionierte bei meinem ersten Board-Los, bei den neuen Boards ist er tot. Warum?
Prüfen Sie, ob der Touch-Chip gewechselt wurde. LilyGO zufolge verwenden neuere T-Deck-Pro-v1.1-Lose einen CST3530 statt des CST328, unter derselben Adresse 0x1A, und auch Waveshares RP2350-Touch-LCD-2.8 V2 wechselte zu einem CST3530. Projekte mit einem reinen CST328-Treiber meldeten dasselbe Symptom: Das Display funktioniert, und keine Berührung wird registriert. Ein I2C-Scan kann die beiden Chips auf dem T-Deck Pro nicht unterscheiden; lesen Sie daher den Chip-Typ aus oder fragen Sie zuerst das CST3530-Protokoll ab.
Wie lautet die I2C-Adresse des CST328?
LilyGOs Pin-Tabelle für das T-Deck Pro gibt 0x1A an, und das RS-Key-Projekt listet für den CST328 auf dem Waveshare RP2350-Touch-LCD-2.8 V1 0x1A (7-Bit) auf. Nehmen Sie nicht an, dass ein CST3530 unter derselben Adresse liegt: Er sitzt laut RS-Key unter 0x1A auf dem T-Deck Pro, aber unter 0x58 auf dem RP2350-Touch-LCD-2.8 V2.
Kann ein Treiber sowohl CST328 als auch CST3530 unterstützen?
Ja, wenn er den Chip erkennt. LilyGO sagt, das Modell “muss während der Initialisierung identifiziert werden”, und verwendet separate Init-Routinen. Das Projekt reticulum-tdeck fragt zuerst den CST3530 ab, weil ein CST3530 auch Lesezugriffe auf CST328-Register quittiert; seine Autoren sagen, dies sei noch nicht auf einem CST3530-Board gelaufen. Das RS-Key-Projekt wählt den Chip stattdessen zur Build-Zeit.
Quellen
- LilyGO T-Deck Pro README (CST328 zu CST3530, Adresse, Init, Interrupts)
- LilyGO T-Deck Pro Issue #37: CST3530 ersetzt CST328
- RS-Key Issue #139: RP2350-Touch-LCD-2.8 V1 CST328 0x1A vs. V2 CST3530 0x58
- RS-Key PR #138: CST3530-Treiber (Report 0xD0070000, Ack 0xD00002AB)
- reticulum-tdeck Issue #19: T-Deck Pro v1.1 Touch funktioniert bei manchen Geräten nicht
- reticulum-tdeck v1.13.0-rc1: CST3530-Erkennungsreihenfolge
- meshcore-firmware Issue #2108: Touch-Erkennung beim T-Deck Pro V1.1 (cst66xx- vs. cst3xx-Lesezugriffe)
- Meshtastic PR #11952: Touch-Chip bei 0x1A fälschlich als DS2482 erkannt
- ESPHome-Dokumentation zum CST328-Touchscreen
- ESPHome-Quellcode cst328_touchscreen.cpp
- Waveshare-Wiki zum ESP32-S3-Touch-LCD-2.8
- Waveshare-Komponente esp_lcd_touch_cst328