Pular para o conteúdo
Display Engineer
Controlador de touch · Hynitron

CST328: configuração e solução de problemas

O CST328 é um controlador de toque capacitivo da Hynitron com interface I2C no endereço 0x1A e endereçamento de registradores de 16 bits. A LilyGO informa que ele foi descontinuado e que placas mais recentes vêm com um CST3530, que exige um driver diferente.

DEDisplay Engineer Applications Team · Engenheiros de aplicação de displaysAtualizado em 11 de nov. de 2026
FabricanteHynitron
TipoControlador de touch
InterfacesI2C
Resolução máxima5 touch points

CST328 em resumo

Item

Valor

Fonte

Interface

I2C, endereços de registrador de 16 bits

Driver ESPHome, RS-Key

Endereço I2C (7 bits)

0x1A

Tabela de pinos do LilyGO T-Deck Pro, RS-Key

Pontos de toque

5 no Waveshare ESP32-S3-Touch-LCD-2.8

Wiki da Waveshare

Relatório de toque

Registrador 0xD000, 7 bytes por ponto

RS-Key

Interrupção

Suportada

Wiki da Waveshare, ESPHome (borda de descida)

Status

Fora de produção, segundo a LilyGO

README do LilyGO T-Deck Pro

Não usamos um datasheet da Hynitron para esses dados. A cópia que encontramos online é um upload de revendedor, portanto os valores acima vêm do código-fonte do driver e da documentação da placa.

A troca pelo CST3530

O README do T-Deck Pro da LilyGO diz que o fornecedor do CST328 "descontinuou a produção", então as placas T-Deck Pro v1.1 mais recentes usam um CST3530. O documento acrescenta que "ambos os chips usam o mesmo endereço de dispositivo", por isso o firmware precisa identificar o chip durante a inicialização. A LilyGO usa a rotina cst66xx da Hynitron para o CST3530 e a cst3xx para o CST328.

O RP2350-Touch-LCD-2.8 da Waveshare fez a mesma mudança. O projeto RS-Key documenta a V1 com um CST328 no endereço 0x1A e a V2 com um CST3530 no endereço 0x58. No T-Deck Pro o endereço não muda; nesta placa, muda.

CST328

CST3530

Endereçamento de registradores

2 bytes

Palavras de comando de 4 bytes

Relatório de toque

0xD000, 7 bytes

0xD0070000, 9 bytes

Acknowledge após leitura

Escrita do byte de sincronização 0xAB

Escrita de 0xD00002AB

Endereço no T-Deck Pro

0x1A

0x1A

Endereço na RP2350-Touch-LCD-2.8

0x1A (V1)

0x58 (V2)

Comportamento em repouso

Não documentado nas fontes que utilizamos

Entra em repouso automaticamente; a LilyGO recomenda interrupções em vez de polling

As colunas do CST3530 vêm do driver unificado da RS-Key, cujo autor fez testes em uma placa V2, e do README da LilyGO.

Como o problema de troca se manifesta

Ambos os projetos que se depararam com isso relataram o mesmo sintoma: o firmware roda e o display desenha, mas nenhum toque é registrado. A issue do reticulum-tdeck diz que algumas unidades do T-Deck Pro v1.1 funcionavam e outras não, o que indica uma mudança entre lotes de produção, e não uma falha de fiação.

Duas outras armadilhas:

  • Uma varredura I2C não identifica o chip. No T-Deck Pro, ambos os chips respondem em 0x1A. Os autores do reticulum-tdeck fazem a detecção procurando primeiro o CST3530, porque um CST3530 "reconhece prontamente leituras de registradores do CST328". Eles também afirmam que esse código ainda não havia rodado em uma placa com CST3530. Um teste de bancada do meshcore-firmware em um T-Deck Pro V1.1 mostra a mesma coisa: a leitura no estilo CST328 foi reconhecida, mas não retornou nem tipo de chip nem resolução, enquanto a leitura no estilo CST3530 retornou um bloco válido com um marcador 0xCA 0xCA e a resolução de 240×320 do painel.
  • Outros drivers podem reivindicar 0x1A. Um pull request aberto do Meshtastic relata que sua varredura I2C confundiu o chip de toque do T-Deck Pro com uma ponte DS2482-800, porque um teste de registrador de status coincidiu por acaso.

Esse é um padrão comum em controladores de toque pequenos: o número de peça na placa permanece o mesmo enquanto o chip muda. Se você fabricar em volume, pergunte ao seu fornecedor de displays qual IC de toque está montado e peça que avisem antes de qualquer alteração. Nosso glossário de EOL e PCN explica o que uma notificação de alteração deve conter.

Integração com ESPHome

A plataforma cst328 do ESPHome exige o I2C configurado e aceita opcionalmente interrupt_pin e reset_pin. A configuração dela faz o seguinte:

  • Aplica um pulso baixo no reset por 5 ms e, em seguida, aguarda.
  • Lê o CRC do firmware e espera 0xCACA. Com qualquer outro valor, marca o componente como com falha.
  • Lê o tipo de chip, o ID do projeto, a revisão do firmware e a resolução e, então, coloca o chip em modo normal.

A verificação de CRC é o primeiro lugar a investigar se o ESPHome relatar falha na tela de toque. O ESPHome usa leituras no estilo CST328 com endereços de registrador de 2 bytes, e no teste de bancada do meshcore-firmware esse tipo de leitura não retornou nada útil de um CST3530. Portanto, em uma placa com CST3530, espere que essa verificação falhe. Essa é a nossa inferência: não executamos o ESPHome em uma placa com CST3530.

Suporte a drivers

  • ESPHome: a plataforma cst328. Sua documentação cita a placa Waveshare ESP32-S3 Touch LCD 2.8. Não há plataforma para o CST3530.
  • ESP-IDF: a Waveshare publica o esp_lcd_touch_cst328 no registro de componentes da Espressif. Sua tabela de compatibilidade lista apenas o CST328.
  • Rust: o crate cst328 no crates.io, e o firmware da RS-Key para ambos os chips.
  • Driver oficial da Hynitron: a LilyGO linka o código-fonte do hyn_driver da Hynitron para ambos os chips.

Controladores relacionados

Para toque de um dedo em displays redondos, consulte o CST816S, também da Hynitron. Para painéis maiores com até 5 pontos, consulte o GT911.

CST328: solução de problemas e perguntas frequentes

O toque funcionava no meu primeiro lote de placas, mas está inativo nas novas. Por quê?

Verifique se o chip de toque mudou. A LilyGO informa que lotes mais recentes do T-Deck Pro v1.1 usam um CST3530 no lugar do CST328, no mesmo endereço 0x1A, e a Waveshare também migrou para um CST3530 na RP2350-Touch-LCD-2.8 V2. Projetos com drivers exclusivos para o CST328 relataram o mesmo sintoma: o display funciona e nenhum toque é registrado. Uma varredura I2C não consegue distinguir os dois chips no T-Deck Pro, por isso leia o tipo do chip ou faça a detecção primeiro pelo protocolo do CST3530.

Qual é o endereço I2C do CST328?

A tabela de pinos do T-Deck Pro da LilyGO indica 0x1A, e o projeto RS-Key lista 0x1A (7 bits) para o CST328 na Waveshare RP2350-Touch-LCD-2.8 V1. Não presuma que um CST3530 esteja no mesmo endereço: ele fica em 0x1A no T-Deck Pro, mas em 0x58 na RP2350-Touch-LCD-2.8 V2, conforme a RS-Key.

Um único driver pode suportar tanto o CST328 quanto o CST3530?

Sim, se ele detectar o chip. A LilyGO diz que o modelo "deve ser identificado durante a inicialização" e usa rotinas de init separadas. O projeto reticulum-tdeck faz a detecção procurando primeiro o CST3530, porque um CST3530 também reconhece leituras de registradores do CST328; seus autores afirmam que isso ainda não havia rodado em uma placa com CST3530. Já o projeto RS-Key escolhe o chip em tempo de compilação.

Fontes

  1. README da LilyGO T-Deck Pro (CST328 para CST3530, endereço, inicialização, interrupções)
  2. Issue #37 da LilyGO T-Deck Pro: CST3530 substitui o CST328
  3. Issue #139 do RS-Key: RP2350-Touch-LCD-2.8 V1 CST328 0x1A vs V2 CST3530 0x58
  4. PR #138 do RS-Key: driver do CST3530 (report 0xD0070000, ack 0xD00002AB)
  5. Issue #19 do reticulum-tdeck: toque da T-Deck Pro v1.1 não funciona em algumas unidades
  6. reticulum-tdeck v1.13.0-rc1: ordem de detecção do CST3530
  7. Issue #2108 do meshcore-firmware: detecção de toque na T-Deck Pro V1.1 (leituras cst66xx vs cst3xx)
  8. PR #11952 do Meshtastic: chip de toque em 0x1A detectado incorretamente como DS2482
  9. Documentação do touchscreen CST328 do ESPHome
  10. Código-fonte cst328_touchscreen.cpp do ESPHome
  11. Wiki da Waveshare ESP32-S3-Touch-LCD-2.8
  12. Componente esp_lcd_touch_cst328 da Waveshare

Não sabe qual display combina com o seu projeto?

Envie o tamanho, a interface e o processador host. Um engenheiro de displays responde em até 12 horas com 2–3 opções, datasheets e código de inicialização. Amostras a partir de 1 pç.