Tổng quan về CST816S
Hạng mục | Giá trị | Nguồn |
|---|---|---|
Địa chỉ I2C (7-bit) | | Espressif esp_lcd_touch_cst816s; ví dụ device-tree trên Linux |
Số điểm cảm ứng | 1 (một ngón tay) | Driver và README của Espressif |
Dữ liệu cảm ứng | Bắt đầu tại | Driver hynitron-cst816x trên Linux |
Thanh ghi Chip ID | | Driver của Espressif |
compatible trên Linux | | Device-tree binding trên Linux |
Đọc một lần chạm
Driver Linux đọc 6 byte bắt đầu từ thanh ghi 0x01:
Thanh ghi | Nội dung |
|---|---|
| Mã cử chỉ |
| Số ngón tay (0 hoặc 1) |
| X, big-endian, 12 bit thấp |
| Y, big-endian, 12 bit thấp |
Các mã cử chỉ mà driver Linux xử lý: 0x01 trượt lên, 0x02 trượt xuống, 0x03 trượt sang trái, 0x04 trượt sang phải, 0x0C nhấn giữ.
CST816S không phản hồi cho đến khi bạn chạm vào
README của Espressif cảnh báo rằng chip "chỉ phản hồi các lệnh I2C sau một sự kiện, chẳng hạn như phát hiện có chạm. Đừng kỳ vọng nó phản hồi ngay lúc init." Đó là lý do trình quét I2C khi khởi động thường không tìm thấy gì tại 0x15, và vì sao ESPHome có tùy chọn skip_probe để bỏ qua việc đọc chip ID khi khởi động. Espressif còn bổ sung rằng trên một số chip, việc đọc ID có thể khiến quá trình khởi tạo thất bại. Hãy chạm vào màn hình trong lúc quét, hoặc bỏ qua bước kiểm tra ID.
Reset và ngắt
- Driver Linux kéo reset trong 50 ms, thả chân và chờ 100 ms. Driver của Espressif chờ 200 ms ở mỗi bước.
- INT là tùy chọn trong driver của Espressif (nó có thể poll). Driver Linux yêu cầu ngắt và sẽ không probe được nếu thiếu.
Chạm ảo (ghost touch)
Một developer đã công bố sketch kiểm tra cho thấy CST816D trên Waveshare ESP32-S3-Touch-LCD-2 báo các lần chạm mà không ai thực hiện, chủ yếu dọc theo trục giữa theo chiều dọc, trên hai board và ngay cả với code demo chính chủ của Waveshare. Chưa có bản sửa lỗi nào được xác nhận. Nếu bạn gặp hiện tượng chạm ảo, hãy chạy demo của nhà sản xuất trước để tách biệt lỗi phần cứng khỏi code của bạn, sau đó kiểm tra nguồn nuôi và tiếp đất của board trước khi lọc lần chạm bằng phần mềm.
Các controller liên quan
Component cst816 của ESPHome liệt kê CST716, CST816D, CST816S, CST816T, CST820, CST826 và CST836. Với các panel đa điểm chạm cỡ 4″–7″, xem GT911; với màn hình tròn 1.28″, xem hướng dẫn GC9A01 + ESP32 của chúng tôi.
Hướng dẫn & so sánh
CST816S: xử lý sự cố & FAQ
Tại sao CST816S của tôi không được phát hiện trên I2C?
CST816S chỉ phản hồi trên I2C sau một sự kiện như thao tác chạm, do đó quét I2C lúc khởi động thường không tìm thấy thiết bị nào tại 0x15. Hãy chạm vào màn hình trong lúc quét, nhả chân reset trước, và trong ESPHome đặt skip_probe: true. Espressif lưu ý rằng trên một số chip, việc đọc ID có thể khiến quá trình khởi tạo thất bại.
CST816S có hỗ trợ đa điểm chạm không?
Không. Nó chỉ báo cáo một điểm chạm; driver của Espressif giới hạn số điểm ở mức 1. Tuy nhiên nó hỗ trợ báo cử chỉ: trượt lên, xuống, trái, phải và nhấn giữ. Để dùng đa điểm chạm, hãy chọn controller loại GT911.
Tại sao CST816 của tôi báo cảm ứng ma (ghost touch)?
Một báo cáo công khai cho thấy CST816D trên bo Waveshare ESP32-S3-Touch-LCD-2 vẫn báo các điểm chạm dọc theo đường tâm dọc ngay cả với code demo của chính nhà sản xuất, và chưa có bản sửa lỗi nào được xác nhận. Hãy chạy demo của nhà sản xuất để loại trừ code của bạn, sau đó kiểm tra nguồn điện và nối đất trước khi lọc sự kiện chạm bằng phần mềm.
Nguồn
- Espressif ESP-BSP: driver esp_lcd_touch_cst816s
- Espressif ESP-BSP: README của esp_lcd_touch_cst816s
- Linux kernel: drivers/input/touchscreen/hynitron-cst816x.c
- Linux kernel: device-tree binding hynitron,cst816x
- ESPHome: màn hình cảm ứng CST816
- seanuleh: sketch kiểm tra cảm ứng ma cho Waveshare ESP32-S3-Touch-LCD-2 (CST816D)