CST328 한눈에 보기
항목 | 값 | 출처 |
|---|---|---|
인터페이스 | I2C, 16비트 레지스터 주소 | ESPHome 드라이버, RS-Key |
I2C 주소 (7비트) | | LilyGO T-Deck Pro 핀 테이블, RS-Key |
터치 포인트 수 | Waveshare ESP32-S3-Touch-LCD-2.8 기준 5점 | Waveshare 위키 |
터치 리포트 | 레지스터 | RS-Key |
인터럽트 | 지원 | Waveshare 위키, ESPHome (falling edge) |
상태 | LilyGO에 따르면 단종됨 | LilyGO T-Deck Pro README |
이 수치들은 Hynitron 데이터시트를 기반으로 하지 않았습니다. 온라인에서 찾을 수 있는 사본은 리셀러가 업로드한 것이라, 위의 값들은 드라이버 소스 코드와 보드 문서에서 가져왔습니다.
CST3530으로의 교체
LilyGO의 T-Deck Pro README에 따르면 CST328 공급처가 "생산을 중단"하여, 최신 T-Deck Pro v1.1 보드에는 CST3530이 사용됩니다. 또한 "두 칩 모두 동일한 디바이스 주소를 사용"하기 때문에 펌웨어가 초기화 과정에서 칩을 식별해야 한다고 설명합니다. LilyGO는 CST3530에는 Hynitron의 cst66xx 루틴을, CST328에는 cst3xx를 사용합니다.
Waveshare의 RP2350-Touch-LCD-2.8도 동일한 변경을 적용했습니다. RS-Key 프로젝트는 V1은 0x1A 주소의 CST328, V2는 0x58 주소의 CST3530을 사용한다고 문서화하고 있습니다. T-Deck Pro에서는 주소가 변하지 않지만, 이 보드에서는 주소가 바뀝니다.
| CST328 | CST3530 |
|---|---|---|
레지스터 주소 지정 | 2바이트 | 4바이트 명령어 워드 |
터치 리포트 | | |
읽기 후 Acknowledge | 동기 바이트 | |
T-Deck Pro 주소 | | |
RP2350-Touch-LCD-2.8에서의 주소 | | |
대기 상태 동작 | 참조한 자료에서는 문서화되어 있지 않음 | 자동으로 슬립 진입; LilyGO는 폴링 방식보다 인터럽트 사용을 권장 |
CST3530 관련 정보는 RS-Key의 통합 드라이버(작성자가 V2 보드에서 테스트함)와 LilyGO의 README에서 가져왔습니다.
스왑이 실제로 나타나는 방식
이 문제를 겪은 두 프로젝트 모두 동일한 증상을 보고했습니다: 펌웨어는 정상 실행되고 디스플레이도 표시되지만, 터치가 전혀 인식되지 않습니다. reticulum-tdeck 이슈에 따르면 T-Deck Pro v1.1 일부 단위는 작동하고 다른 단위는 작동하지 않았는데, 이는 배선 불량보다는 생산 배치 간 변경에 부합합니다.
추가로 주의할 함정 두 가지:
- I2C 스캔만으로는 칩을 식별할 수 없습니다. T-Deck Pro에서는 두 칩 모두
0x1A에서 응답합니다. reticulum-tdeck 작성자들은 CST3530이 "CST328 레지스터 읽기를 문제없이 응답(acknowledge)하기" 때문에 CST3530을 먼저 프로브합니다. 또한 이 코드가 아직 CST3530 보드에서 실행된 적은 없다고 밝혔습니다. T-Deck Pro V1.1에서의 meshcore-firmware 벤치 테스트도 같은 결과를 보여줍니다: CST328 방식의 읽기는 응답은 했지만 칩 타입도 해상도도 반환하지 않았고, CST3530 방식의 읽기는0xCA 0xCA마커와 패널의 240×320 해상도를 포함한 유효한 블록을 반환했습니다. - 다른 드라이버가
0x1A를 차지할 수 있습니다. Meshtastic의 공개 풀 리퀘스트에서는 I2C 스캔이 T-Deck Pro 터치 칩을 DS2482-800 브리지로 잘못 인식했는데, 상태 레지스터 테스트가 우연히 일치했기 때문입니다.
이는 소형 터치 컨트롤러에서 흔히 나타나는 패턴입니다: 보드에 표시된 부품 번호는 그대로인데 칩이 바뀌는 것입니다. 대량 생산을 계획 중이라면 디스플레이 공급사에 실장된 터치 IC가 무엇인지, 그리고 변경 전에 사전 통지를 해줄 것을 요청하시기 바랍니다. 당사의 EOL 및 PCN 용어집에서는 변경 통지서에 포함되어야 할 내용을 설명합니다.
ESPHome으로 인액션(Bring-up)하기
ESPHome의 cst328 플랫폼은 I2C 설정이 필요하며, 선택적으로 interrupt_pin과 reset_pin을 받습니다. 셋업 과정은 다음과 같습니다:
- 리셋 핀을 5 ms 동안 Low로 펄스한 후 대기합니다.
- 펌웨어 CRC를 읽고
0xCACA를 기대합니다. 다른 값이면 해당 컴포넌트를 실패로 표시합니다. - 칩 타입, 프로젝트 ID, 펌웨어 리비전, 해상도를 읽은 뒤 칩을 노멀 모드로 전환합니다.
ESPHome이 터치스크린 실패를 보고한다면 CRC 체크부터 확인하는 것이 좋습니다. ESPHome은 2바이트 레지스터 주소를 사용하는 CST328 방식의 읽기를 사용하며, meshcore-firmware 벤치 테스트에서 이 방식의 읽기는 CST3530에서 유용한 값을 반환하지 않았습니다. 따라서 CST3530이 장착된 보드에서는 이 체크가 실패할 것으로 예상해야 합니다. 이는 당사의 추론이며, CST3530 보드에서 ESPHome을 직접 실행해 본 것은 아닙니다.
드라이버 지원
- ESPHome:
cst328플랫폼. 문서에서는 Waveshare ESP32-S3 Touch LCD 2.8 보드를 언급하고 있습니다. CST3530용 플랫폼은 없습니다. - ESP-IDF: Waveshare는 Espressif 컴포넌트 레지스트리에
esp_lcd_touch_cst328을 배포하고 있습니다. 호환성 표에는 CST328만 등록되어 있습니다. - Rust: crates.io의
cst328크레이트, 그리고 두 칩을 모두 지원하는 RS-Key 펌웨어. - Hynitron 자체 드라이버: LilyGO는 두 칩 모두에 대해 Hynitron의
hyn_driver소스를 링크하고 있습니다.
관련 컨트롤러
라운드 디스플레이에서의 단일 터치는 역시 Hynitron제인 CST816S를 참고하시기 바랍니다. 최대 5포인트를 지원하는 더 큰 패널은 GT911을 참고하시기 바랍니다.
CST328 문제 해결 및 FAQ
첫 생산 분의 보드에서는 터치가 작동했는데 새 보드에서는 작동하지 않습니다. 왜 그런가요?
터치 칩이 변경되었는지 확인하십시오. LilyGO에 따르면 최신 T-Deck Pro v1.1 배치는 CST328 대신 동일한 주소 0x1A의 CST3530을 사용하며, Waveshare의 RP2350-Touch-LCD-2.8 V2 역시 CST3530으로 변경되었습니다. CST328 전용 드라이버를 사용하는 프로젝트들에서 동일한 증상이 보고되었습니다: 디스플레이는 작동하지만 터치가 인식되지 않습니다. T-Deck Pro에서는 I2C 스캔만으로 두 칩을 구분할 수 없으므로, 칩 타입을 읽거나 CST3530 프로토콜을 먼저 프로브하십시오.
CST328의 I2C 주소는 무엇인가요?
LilyGO의 T-Deck Pro 핀 테이블은 0x1A를 제시하며, RS-Key 프로젝트는 Waveshare RP2350-Touch-LCD-2.8 V1의 CST328에 대해 0x1A(7비트)를 명시하고 있습니다. CST3530이 같은 주소에 있다고 가정하면 안 됩니다. RS-Key에 따르면 CST3530은 T-Deck Pro에서는 0x1A이지만 RP2350-Touch-LCD-2.8 V2에서는 0x58입니다.
하나의 드라이버로 CST328과 CST3530을 모두 지원할 수 있나요?
칩을 감지한다면 가능합니다. LilyGO는 모델이 "초기화 과정에서 식별되어야 한다"고 하며 별도의 초기화 루틴을 사용합니다. reticulum-tdeck 프로젝트는 CST3530이 CST328 레지스터 읽기에도 응답하기 때문에 CST3530을 먼저 프로브하며, 작성자들은 이 코드가 아직 CST3530 보드에서 실행된 적은 없다고 밝혔습니다. RS-Key 프로젝트는 대신 빌드 시점에 칩을 선택합니다.
출처
- LilyGO T-Deck Pro README (CST328에서 CST3530으로 변경, 주소, 초기화, 인터럽트)
- LilyGO T-Deck Pro 이슈 #37: CST3530이 CST328 대체
- RS-Key 이슈 #139: RP2350-Touch-LCD-2.8 V1 CST328 0x1A vs V2 CST3530 0x58
- RS-Key PR #138: CST3530 드라이버 (리포트 0xD0070000, ACK 0xD00002AB)
- reticulum-tdeck 이슈 #19: 일부 T-Deck Pro v1.1 유닛에서 터치 미작동
- reticulum-tdeck v1.13.0-rc1: CST3530 프로브 순서
- meshcore-firmware 이슈 #2108: T-Deck Pro V1.1 터치 프로브 (cst66xx vs cst3xx 읽기)
- Meshtastic PR #11952: 0x1A 터치 칩이 DS2482로 오인식
- ESPHome CST328 터치스크린 문서
- ESPHome cst328_touchscreen.cpp 소스
- Waveshare ESP32-S3-Touch-LCD-2.8 위키
- Waveshare esp_lcd_touch_cst328 컴포넌트