CST328 en un coup d'œil
Élément | Valeur | Source |
|---|---|---|
Interface | I2C, adresses de registres 16 bits | Pilote ESPHome, RS-Key |
Adresse I2C (7 bits) | | Tableau des broches du LilyGO T-Deck Pro, RS-Key |
Points tactiles | 5 sur la Waveshare ESP32-S3-Touch-LCD-2.8 | Wiki Waveshare |
Rapport tactile | Registre | RS-Key |
Interruption | Prise en charge | Wiki Waveshare, ESPHome (front descendant) |
Statut | Hors production, selon LilyGO | README du LilyGO T-Deck Pro |
Nous n'avons pas utilisé de datasheet Hynitron pour ces chiffres. L'exemplaire trouvé en ligne est un dépôt de revendeur ; les valeurs ci-dessus proviennent donc du code source des pilotes et de la documentation des cartes.
Le remplacement par le CST3530
Le README du T-Deck Pro de LilyGO indique que le fournisseur du CST328 « a arrêté la production », si bien que les cartes T-Deck Pro v1.1 plus récentes utilisent un CST3530. Il précise que « les deux puces utilisent la même adresse de périphérique », le firmware doit donc identifier la puce lors de l'initialisation. LilyGO utilise la routine cst66xx de Hynitron pour le CST3530 et cst3xx pour le CST328.
La Waveshare RP2350-Touch-LCD-2.8 a effectué le même changement. Le projet RS-Key documente la V1 avec un CST328 à l'adresse 0x1A et la V2 avec un CST3530 à l'adresse 0x58. Sur le T-Deck Pro, l'adresse ne change pas ; sur cette carte, elle change.
| CST328 | CST3530 |
|---|---|---|
Adressage des registres | 2 octets | Mots de commande de 4 octets |
Rapport tactile | | |
Acquittement après lecture | Écriture de l'octet de synchronisation | Écriture de |
Adresse sur le T-Deck Pro | | |
Adresse sur la RP2350-Touch-LCD-2.8 | | |
Comportement au repos | Non documenté dans les sources que nous avons utilisées | Se met en veille automatiquement ; LilyGO recommande les interruptions plutôt que le polling |
Les colonnes CST3530 proviennent du driver fusionné de RS-Key, que son auteur a testé sur une carte V2, et du README de LilyGO.
Comment se manifeste l'échange
Les deux projets qui ont rencontré ce problème rapportent la même chose : le firmware s'exécute et l'écran affiche, mais aucun appui n'est détecté. L'issue reticulum-tdeck indique que certaines unités T-Deck Pro v1.1 fonctionnaient et d'autres non, ce qui correspond à un changement entre lots de production plutôt qu'à un défaut de câblage.
Deux autres pièges :
- Un scan I2C n'identifie pas la puce. Sur le T-Deck Pro, les deux puces répondent à l'adresse
0x1A. Les auteurs de reticulum-tdeck sonnent d'abord le CST3530, car un CST3530 « acknowledge volontiers les lectures de registres CST328 ». Ils précisent aussi que ce code n'avait pas encore tourné sur une carte équipée d'un CST3530. Un test au banc meshcore-firmware sur un T-Deck Pro V1.1 montre la même chose : la lecture de type CST328 a été acquittée mais n'a renvoyé ni type de puce ni résolution, tandis que la lecture de type CST3530 a renvoyé un bloc valide avec un marqueur0xCA 0xCAet la résolution 240×320 du panneau. - D'autres drivers peuvent réclamer
0x1A. Une pull request Meshtastic ouverte rapporte que son scan I2C a pris la puce tactile du T-Deck Pro pour un pont DS2482-800, car un test de registre d'état correspondait par hasard.
C'est un schéma courant avec les petits contrôleurs tactiles : la référence inscrite sur la carte reste la même tandis que la puce change. Si vous fabriquez en volume, demandez à votre fournisseur d'écrans quelle puce tactile est montée, et de vous prévenir avant tout changement. Notre glossaire EOL et PCN explique ce que doit contenir une notice de changement.
Mise en route avec ESPHome
La plateforme cst328 d'ESPHome nécessite une configuration I2C et accepte les options interrupt_pin et reset_pin. Sa configuration procède comme suit :
- Impulsion basse sur le reset pendant 5 ms, puis attente.
- Lit le CRC du firmware et attend
0xCACA. Pour toute autre valeur, elle marque le composant comme défaillant. - Lit le type de puce, l'ID de projet, la révision du firmware et la résolution, puis fait passer la puce en mode normal.
La vérification du CRC est le premier endroit à examiner si ESPHome signale l'échec de l'écran tactile. ESPHome utilise des lectures CST328 avec des adresses de registre sur 2 octets, et dans le test au banc meshcore-firmware, ce type de lecture n'a rien renvoyé d'exploitable depuis un CST3530. Sur une carte équipée d'un CST3530, attendez-vous donc à ce que cette vérification échoue. C'est notre déduction : nous n'avons pas exécuté ESPHome sur une carte avec CST3530.
Support par les drivers
- ESPHome : la plateforme
cst328. Sa documentation mentionne la carte Waveshare ESP32-S3 Touch LCD 2.8. Elle ne dispose d'aucune plateforme CST3530. - ESP-IDF : Waveshare publie
esp_lcd_touch_cst328dans le registre de composants Espressif. Son tableau de compatibilité ne liste que le CST328. - Rust : la crate
cst328sur crates.io, et le firmware RS-Key pour les deux puces. - Le driver de Hynitron lui-même : LilyGO renvoie vers le code source
hyn_driverde Hynitron pour les deux puces.
Contrôleurs apparentés
Pour le tactile monopoint sur écrans ronds, voir CST816S, également de Hynitron. Pour les panneaux plus grands supportant jusqu'à 5 points, voir GT911.
CST328 : dépannage et FAQ
Le tactile fonctionnait sur mon premier lot de cartes mais est inopérant sur les nouvelles. Pourquoi ?
Vérifiez si la puce tactile a changé. LilyGO indique que les lots plus récents de T-Deck Pro v1.1 utilisent un CST3530 à la place du CST328, à la même adresse 0x1A, et la Waveshare RP2350-Touch-LCD-2.8 V2 est également passée à un CST3530. Les projets avec un driver réservé au CST328 ont rapporté le même symptôme : l'écran fonctionne et aucun appui n'est détecté. Un scan I2C ne permet pas de distinguer les deux puces sur le T-Deck Pro ; lisez donc le type de puce ou sondez d'abord le protocole CST3530.
Quelle est l'adresse I2C du CST328 ?
Le tableau des broches du T-Deck Pro de LilyGO indique 0x1A, et le projet RS-Key liste 0x1A (7 bits) pour le CST328 sur la Waveshare RP2350-Touch-LCD-2.8 V1. Ne partez pas du principe qu'un CST3530 est à la même adresse : il est à 0x1A sur le T-Deck Pro mais à 0x58 sur la RP2350-Touch-LCD-2.8 V2, selon RS-Key.
Un même driver peut-il supporter à la fois le CST328 et le CST3530 ?
Oui, s'il détecte la puce. LilyGO précise que le modèle « doit être identifié lors de l'initialisation » et utilise des routines d'init distinctes. Le projet reticulum-tdeck sonde d'abord le CST3530, car un CST3530 acquitte aussi les lectures de registres CST328 ; ses auteurs indiquent que ce code n'avait pas encore tourné sur une carte avec CST3530. Le projet RS-Key, quant à lui, choisit la puce à la compilation.
Sources
- README du LilyGO T-Deck Pro (CST328 vers CST3530, adresse, init, interruptions)
- Issue #37 du LilyGO T-Deck Pro : le CST3530 remplace le CST328
- Issue #139 de RS-Key : RP2350-Touch-LCD-2.8 V1 CST328 0x1A vs V2 CST3530 0x58
- PR #138 de RS-Key : pilote CST3530 (report 0xD0070000, ack 0xD00002AB)
- Issue #19 de reticulum-tdeck : tactile du T-Deck Pro v1.1 inopérant sur certaines unités
- reticulum-tdeck v1.13.0-rc1 : ordre de détection du CST3530
- Issue #2108 de meshcore-firmware : détection du tactile du T-Deck Pro V1.1 (lectures cst66xx vs cst3xx)
- PR #11952 de Meshtastic : puce tactile à 0x1A détectée à tort comme DS2482
- Documentation ESPHome du touchscreen CST328
- Source ESPHome cst328_touchscreen.cpp
- Wiki du Waveshare ESP32-S3-Touch-LCD-2.8
- Composant Waveshare esp_lcd_touch_cst328