Tổng quan về CST328
Mục | Giá trị | Nguồn |
|---|---|---|
Giao diện | I2C, địa chỉ thanh ghi 16-bit | Driver ESPHome, RS-Key |
Địa chỉ I2C (7-bit) | | Bảng chân LilyGO T-Deck Pro, RS-Key |
Số điểm cảm ứng | 5 điểm trên Waveshare ESP32-S3-Touch-LCD-2.8 | Wiki của Waveshare |
Dữ liệu báo cảm ứng | Thanh ghi | RS-Key |
Ngắt (interrupt) | Được hỗ trợ | Wiki của Waveshare, ESPHome (cạnh xuống) |
Trạng thái | Đã ngừng sản xuất, theo LilyGO | README của LilyGO T-Deck Pro |
Chúng tôi không sử dụng datasheet của Hynitron cho các thông số này. Bản copy datasheet chúng tôi tìm thấy trên mạng là do một nhà phân phối đăng tải, vì vậy các giá trị ở trên được lấy từ mã nguồn driver và tài liệu của board.
Việc thay thế bằng CST3530
README của LilyGO cho T-Deck Pro cho biết nhà cung cấp CST328 "đã ngừng sản xuất", do đó các bo T-Deck Pro v1.1 mới hơn sử dụng CST3530. README cũng nêu rằng "cả hai chip dùng cùng một địa chỉ thiết bị", nên firmware phải xác định loại chip trong quá trình khởi tạo. LilyGO dùng quy trình cst66xx của Hynitron cho CST3530 và cst3xx cho CST328.
Waveshare RP2350-Touch-LCD-2.8 cũng có sự thay đổi tương tự. Dự án RS-Key ghi nhận V1 dùng CST328 tại 0x1A và V2 dùng CST3530 tại 0x58. Trên T-Deck Pro địa chỉ không đổi; trên bo mạch này thì địa chỉ thay đổi.
| CST328 | CST3530 |
|---|---|---|
Địa chỉ thanh ghi | 2 byte | Từ lệnh 4 byte |
Dữ liệu báo cảm ứng | | |
Xác nhận (acknowledge) sau khi đọc | Ghi byte đồng bộ | Ghi |
Địa chỉ trên T-Deck Pro | | |
Địa chỉ trên RP2350-Touch-LCD-2.8 | | |
Hành vi ở trạng thái nghỉ | Không được ghi nhận trong các tài liệu nguồn mà chúng tôi sử dụng | Tự động chuyển sang chế độ ngủ; LilyGO khuyến nghị dùng ngắt thay vì polling |
Các cột thông tin về CST3530 lấy từ driver hợp nhất của RS-Key — vốn được tác giả thử nghiệm trên board V2 — và từ README của LilyGO.
Hiện tượng khi bị hoán đổi chip
Cả hai dự án gặp lỗi này đều báo cáo cùng một triệu chứng: firmware chạy và màn hình hiển thị bình thường, nhưng không nhận được bất kỳ cú chạm nào. Issue trên reticulum-tdeck ghi nhận một số máy T-Deck Pro v1.1 hoạt động còn một số thì không — điều này phù hợp với giả thuyết chip bị thay đổi giữa các lô sản xuất chứ không phải lỗi đi dây.
Hai bẫy nữa cần lưu ý:
- Quét I2C không xác định được loại chip. Trên T-Deck Pro, cả hai chip đều phản hồi tại
0x1A. Tác giả của reticulum-tdeck probe CST3530 trước, vì CST3530 "vui vẻ xác nhận cả các lượt đọc thanh ghi theo kiểu CST328". Họ cũng nói rằng đoạn code này chưa từng chạy trên board dùng CST3530. Một bài bench test của meshcore-firmware trên T-Deck Pro V1.1 cho thấy điều tương tự: lượt đọc kiểu CST328 được xác nhận nhưng không trả về loại chip hay độ phân giải nào, trong khi lượt đọc kiểu CST3530 trả về một khối dữ liệu hợp lệ với cờ hiệu0xCA 0xCAvà độ phân giải 240×320 của panel. - Các driver khác cũng có thể nhận nhầm
0x1A. Một pull request mở của Meshtastic báo cáo rằng lượt quét I2C đã nhận nhầm chip cảm ứng của T-Deck Pro là bridge DS2482-800, vì phép kiểm tra thanh ghi trạng thái trùng khớp một cách ngẫu nhiên.
Đây là một mẫu hình phổ biến với các chip cảm ứng cỡ nhỏ: số part trên board vẫn giữ nguyên trong khi chip bên trong đã thay đổi. Nếu bạn sản xuất với số lượng lớn, hãy hỏi nhà cung cấp panel đang lắp chip cảm ứng nào, và yêu cầu họ thông báo trước khi có thay đổi. Bảng thuật ngữ EOL và PCN của chúng tôi giải thích một thông báo thay đổi cần chứa những gì.
Đưa vào hoạt động với ESPHome
Nền tảng cst328 của ESPHome yêu cầu cấu hình I2C và nhận thêm các tùy chọn interrupt_pin và reset_pin. Quá trình setup của nó thực hiện như sau:
- Kéo chân reset xuống mức thấp trong 5 ms, sau đó chờ.
- Đọc CRC của firmware và kỳ vọng giá trị
0xCACA. Nếu giá trị khác, nó đánh dấu component là failed. - Đọc loại chip, project ID, phiên bản firmware và độ phân giải, sau đó chuyển chip sang chế độ bình thường.
Bước kiểm tra CRC là nơi đầu tiên cần xem khi ESPHome báo touchscreen failed. ESPHome dùng lượt đọc kiểu CST328 với địa chỉ thanh ghi 2 byte, và trong bài bench test của meshcore-firmware, kiểu đọc đó không trả lại gì hữu ích từ một con CST3530. Vì vậy trên board dùng CST3530, hãy kỳ vọng bước kiểm tra này sẽ thất bại. Đây là suy luận của chúng tôi: chúng tôi chưa chạy ESPHome trên board dùng CST3530.
Hỗ trợ driver
- ESPHome: nền tảng
cst328. Tài liệu của nó nêu tên board Waveshare ESP32-S3 Touch LCD 2.8. Không có nền tảng nào dành cho CST3530. - ESP-IDF: Waveshare phát hành
esp_lcd_touch_cst328trên component registry của Espressif. Bảng tương thích của nó chỉ liệt kê CST328. - Rust: crate
cst328trên crates.io, và firmware RS-Key cho cả hai chip. - Driver của chính Hynitron: LilyGO liên kết đến mã nguồn
hyn_drivercủa Hynitron cho cả hai chip.
Các chip điều khiển liên quan
Với cảm ứng một điểm trên màn hình tròn, xem CST816S, cũng của Hynitron. Với panel lớn hơn hỗ trợ tới 5 điểm chạm, xem GT911.
CST328: xử lý sự cố & FAQ
Cảm ứng chạy tốt trên lô board đầu tiên nhưng chết hoàn toàn ở lô mới. Tại sao?
Hãy kiểm tra xem chip cảm ứng có bị thay đổi hay không. LilyGO cho biết các lô T-Deck Pro v1.1 mới hơn dùng CST3530 thay cho CST328, tại cùng địa chỉ 0x1A, và Waveshare RP2350-Touch-LCD-2.8 V2 cũng chuyển sang CST3530. Các dự án với driver chỉ hỗ trợ CST328 báo cáo cùng một triệu chứng: màn hình hoạt động nhưng không có cú chạm nào được nhận. Quét I2C không thể phân biệt hai chip này trên T-Deck Pro, vì vậy hãy đọc loại chip hoặc probe giao thức CST3530 trước.
Địa chỉ I2C của CST328 là gì?
Bảng chân của LilyGO cho T-Deck Pro ghi 0x1A, và dự án RS-Key liệt kê 0x1A (7-bit) cho CST328 trên Waveshare RP2350-Touch-LCD-2.8 V1. Đừng giả định CST3530 nằm ở cùng địa chỉ: theo RS-Key, nó là 0x1A trên T-Deck Pro nhưng là 0x58 trên RP2350-Touch-LCD-2.8 V2.
Một driver có thể hỗ trợ cả CST328 và CST3530 không?
Có, nếu driver có khả năng nhận diện chip. LilyGO cho biết model "phải được xác định trong quá trình khởi tạo" và dùng các thủ tục init riêng biệt. Dự án reticulum-tdeck probe CST3530 trước, vì CST3530 cũng xác nhận các lượt đọc thanh ghi kiểu CST328; tác giả của dự án cho biết đoạn code này chưa từng chạy trên board dùng CST3530. Dự án RS-Key thay vào đó chọn chip ngay lúc build.
Nguồn
- LilyGO T-Deck Pro README (CST328 sang CST3530, địa chỉ, khởi tạo, ngắt)
- LilyGO T-Deck Pro issue #37: CST3530 thay thế CST328
- RS-Key issue #139: RP2350-Touch-LCD-2.8 V1 CST328 0x1A so với V2 CST3530 0x58
- RS-Key PR #138: driver CST3530 (report 0xD0070000, ack 0xD00002AB)
- reticulum-tdeck issue #19: cảm ứng T-Deck Pro v1.1 không hoạt động trên một số máy
- reticulum-tdeck v1.13.0-rc1: thứ tự dò tìm CST3530
- meshcore-firmware issue #2108: dò cảm ứng T-Deck Pro V1.1 (so sánh đọc cst66xx và cst3xx)
- Meshtastic PR #11952: chip cảm ứng tại 0x1A bị nhận nhầm thành DS2482
- Tài liệu ESPHome CST328 touchscreen
- Mã nguồn ESPHome cst328_touchscreen.cpp
- Wiki Waveshare ESP32-S3-Touch-LCD-2.8
- Thành phần Waveshare esp_lcd_touch_cst328