CST328 in breve
Voce | Valore | Fonte |
|---|---|---|
Interfaccia | I2C, indirizzi di registro a 16 bit | Driver ESPHome, RS-Key |
Indirizzo I2C (7 bit) | | Tabella dei pin del LilyGO T-Deck Pro, RS-Key |
Punti touch | 5 sulla Waveshare ESP32-S3-Touch-LCD-2.8 | Wiki Waveshare |
Report touch | Registro | RS-Key |
Interrupt | Supportato | Wiki Waveshare, ESPHome (fronte di discesa) |
Stato | Produzione dismessa, secondo LilyGO | README del LilyGO T-Deck Pro |
Non abbiamo usato un datasheet Hynitron per questi dati. La copia trovata online è un upload di un rivenditore, quindi i valori sopra indicati provengono dal codice sorgente dei driver e dalla documentazione delle schede.
La sostituzione con il CST3530
Il README del T-Deck Pro di LilyGO dichiara che il fornitore del CST328 "ha cessato la produzione", quindi le schede T-Deck Pro v1.1 più recenti montano un CST3530. Aggiunge che "entrambi i chip utilizzano lo stesso indirizzo device", pertanto il firmware deve identificare il chip durante l'inizializzazione. LilyGO usa la routine cst66xx di Hynitron per il CST3530 e la cst3xx per il CST328.
Anche il RP2350-Touch-LCD-2.8 di Waveshare ha apportato la stessa modifica. Il progetto RS-Key documenta la V1 con un CST328 all'indirizzo 0x1A e la V2 con un CST3530 all'indirizzo 0x58. Sul T-Deck Pro l'indirizzo non cambia; su questa scheda sì.
| CST328 | CST3530 |
|---|---|---|
Indirizzamento dei registri | 2 byte | Parole di comando a 4 byte |
Report touch | | |
Acknowledge dopo la lettura | Scrittura del byte di sincronizzazione | Scrittura di |
Indirizzo sul T-Deck Pro | | |
Indirizzo sul RP2350-Touch-LCD-2.8 | | |
Comportamento a riposo | Non documentato nelle fonti che abbiamo utilizzato | Va in sleep automaticamente; LilyGO consiglia gli interrupt invece del polling |
Le colonne relative al CST3530 provengono dal driver unificato di RS-Key, che il suo autore ha testato su una scheda V2, e dal README di LilyGO.
Come si manifesta il problema di sostituzione
Entrambi i progetti che hanno riscontrato questo problema hanno riferito la stessa cosa: il firmware viene eseguito e il display disegna, ma nessun tocco viene registrato. La segnalazione su reticulum-tdeck indica che alcune unità T-Deck Pro v1.1 funzionavano e altre no, il che è coerente con una modifica tra lotti di produzione piuttosto che con un difetto di cablaggio.
Due ulteriori insidie:
- Una scansione I2C non identifica il chip. Sul T-Deck Pro entrambi i chip rispondono all'indirizzo
0x1A. Gli autori di reticulum-tdeck verificano prima il CST3530, perché un CST3530 "riconosce volentieri le letture dei registri del CST328". Segnalano inoltre che questo codice non era ancora stato eseguito su una scheda con CST3530. Un test di banco di meshcore-firmware su un T-Deck Pro V1.1 mostra la stessa cosa: la lettura in stile CST328 veniva riconosciuta ma non restituiva né tipo di chip né risoluzione, mentre la lettura in stile CST3530 restituiva un blocco valido con marcatore0xCA 0xCAe la risoluzione 240×320 del pannello. - Altri driver possono rivendicare l'indirizzo
0x1A. Una pull request aperta su Meshtastic riporta che la sua scansione I2C ha scambiato il chip touch del T-Deck Pro per un bridge DS2482-800, perché un test sul registro di stato coincideva per caso.
Si tratta di uno schema comune con i controller touch di piccole dimensioni: la sigla sulla scheda resta la stessa mentre il chip cambia. Se produci in volume, chiedi al tuo fornitore di display quale IC touch è montato, e di avvisarti prima di una variazione. Il nostro glossario EOL e PCN spiega cosa dovrebbe contenere una comunicazione di modifica.
Bring-up con ESPHome
La piattaforma cst328 di ESPHome richiede la configurazione dell'I2C e accetta le opzioni facoltative interrupt_pin e reset_pin. La sua procedura di inizializzazione esegue quanto segue:
- Genera un impulso basso sul reset per 5 ms, poi attende.
- Legge il CRC del firmware e si aspetta
0xCACA. Con qualsiasi altro valore contrassegna il componente come non riuscito. - Legge il tipo di chip, l'ID di progetto, la revisione del firmware e la risoluzione, quindi porta il chip in modalità normale.
Il controllo CRC è il primo punto da esaminare se ESPHome segnala un errore del touchscreen. ESPHome usa letture CST328 con indirizzi di registro a 2 byte, e nel test di banco di meshcore-firmware questo tipo di lettura non ha restituito nulla di utile da un CST3530. Quindi, su una scheda con un CST3530, aspettati che questo controllo fallisca. È una nostra deduzione: non abbiamo eseguito ESPHome su una scheda con CST3530.
Supporto dei driver
- ESPHome: la piattaforma
cst328. La sua documentazione cita la scheda Waveshare ESP32-S3 Touch LCD 2.8. Non esiste una piattaforma per il CST3530. - ESP-IDF: Waveshare pubblica
esp_lcd_touch_cst328nel registro dei componenti Espressif. La sua tabella di compatibilità elenca solo il CST328. - Rust: la crate
cst328su crates.io, e il firmware RS-Key per entrambi i chip. - Il driver di Hynitron: LilyGO linka il sorgente
hyn_driverdi Hynitron per entrambi i chip.
Controller correlati
Per il touch a un dito su display tondi, vedi CST816S, sempre di Hynitron. Per pannelli più grandi con fino a 5 punti, vedi GT911.
CST328: risoluzione dei problemi e FAQ
Il touch funzionava sul primo lotto di schede ma è morto sulle nuove. Perché?
Verifica se il chip touch è cambiato. LilyGO dichiara che i lotti più recenti del T-Deck Pro v1.1 usano un CST3530 al posto del CST328, allo stesso indirizzo 0x1A, e anche la Waveshare RP2350-Touch-LCD-2.8 V2 è passata a un CST3530. I progetti con un driver solo per CST328 hanno riportato lo stesso sintomo: il display funziona e nessun tocco viene registrato. Una scansione I2C non riesce a distinguere i due chip sul T-Deck Pro, quindi leggi il tipo di chip o verifica prima il protocollo del CST3530.
Qual è l'indirizzo I2C del CST328?
La tabella dei pin del T-Deck Pro di LilyGO indica 0x1A, e il progetto RS-Key elenca 0x1A (7 bit) per il CST328 sulla Waveshare RP2350-Touch-LCD-2.8 V1. Non dare per scontato che un CST3530 si trovi allo stesso indirizzo: è 0x1A sul T-Deck Pro ma 0x58 sulla RP2350-Touch-LCD-2.8 V2, secondo RS-Key.
Un solo driver può supportare sia il CST328 che il CST3530?
Sì, se rileva il chip. LilyGO dichiara che il modello "deve essere identificato durante l'inizializzazione" e usa routine di init separate. Il progetto reticulum-tdeck verifica prima il CST3530, perché un CST3530 riconosce anche le letture dei registri del CST328; i suoi autori dichiarano che questo codice non era ancora stato eseguito su una scheda con CST3530. Il progetto RS-Key invece sceglie il chip in fase di build.
Fonti
- README della LilyGO T-Deck Pro (da CST328 a CST3530, indirizzo, init, interrupt)
- Issue #37 della LilyGO T-Deck Pro: il CST3530 sostituisce il CST328
- Issue #139 di RS-Key: RP2350-Touch-LCD-2.8 V1 CST328 0x1A vs V2 CST3530 0x58
- PR #138 di RS-Key: driver CST3530 (report 0xD0070000, ack 0xD00002AB)
- Issue #19 di reticulum-tdeck: touch della T-Deck Pro v1.1 non funzionante su alcune unità
- reticulum-tdeck v1.13.0-rc1: ordine di probe del CST3530
- Issue #2108 di meshcore-firmware: probe del touch sulla T-Deck Pro V1.1 (letture cst66xx vs cst3xx)
- PR #11952 di Meshtastic: chip touch all'indirizzo 0x1A rilevato erroneamente come DS2482
- Documentazione touchscreen CST328 di ESPHome
- Sorgente cst328_touchscreen.cpp di ESPHome
- Wiki della Waveshare ESP32-S3-Touch-LCD-2.8
- Componente Waveshare esp_lcd_touch_cst328