Sekilas tentang CST816S
Item | Nilai | Sumber |
|---|---|---|
Alamat I2C (7-bit) | | Espressif esp_lcd_touch_cst816s; contoh device-tree Linux |
Titik sentuh | 1 (satu jari) | Driver dan README Espressif |
Data sentuhan | Dimulai di | Driver hynitron-cst816x Linux |
Register Chip ID | | Driver Espressif |
Compatible Linux | | Binding device-tree Linux |
Membaca data sentuhan
Driver Linux membaca 6 byte dari register 0x01:
Register | Isi |
|---|---|
| Kode gestur |
| Jumlah jari (0 atau 1) |
| X, big-endian, 12 bit rendah |
| Y, big-endian, 12 bit rendah |
Kode gestur yang ditangani driver Linux: 0x01 geser ke atas, 0x02 geser ke bawah, 0x03 geser ke kiri, 0x04 geser ke kanan, 0x0C tekan lama.
CST816S tidak merespons sebelum ada sentuhan
README Espressif memperingatkan bahwa chip ini "hanya merespons perintah I2C setelah ada event, seperti deteksi sentuhan. Jangan berharap chip merespons saat init." Itulah sebabnya I2C scanner saat boot sering tidak menemukan apa pun di 0x15, dan mengapa ESPHome menyediakan opsi skip_probe yang melewati pembacaan chip ID saat startup. Espressif menambahkan bahwa pada sebagian chip, membaca ID dapat membuat inisialisasi gagal. Sentuh layar saat memindai, atau lewati pemeriksaan ID.
Reset dan interrupt
- Driver Linux men-drive reset selama 50 ms, melepaskannya, lalu menunggu 100 ms. Driver Espressif menunggu 200 ms di setiap sisi.
- INT bersifat opsional pada driver Espressif (driver bisa melakukan polling). Driver Linux meminta interrupt dan gagal probe jika tidak ada.
Sentuhan hantu (phantom touch)
Seorang developer telah mempublikasikan sketch tes yang menunjukkan CST816D pada Waveshare ESP32-S3-Touch-LCD-2 melaporkan sentuhan yang tidak pernah dilakukan siapa pun, sebagian besar di sepanjang garis tengah vertikal, pada dua board dan dengan kode demo bawaan Waveshare sendiri. Belum ada perbaikan yang terkonfirmasi. Jika Anda melihat sentuhan hantu, jalankan dulu demo dari vendor untuk memisahkan masalah perangkat keras dari kode Anda, lalu periksa catu daya dan grounding board sebelum melakukan pemfilteran sentuhan di perangkat lunak.
Kontroller terkait
Komponen cst816 milik ESPHome mencantumkan CST716, CST816D, CST816S, CST816T, CST820, CST826, dan CST836. Untuk panel multi-touch 4″–7″ lihat GT911; untuk display bulat 1.28″ lihat panduan GC9A01 + ESP32 kami.
Panduan & perbandingan
CST816S: troubleshooting & FAQ
Mengapa CST816S saya tidak terdeteksi di I2C?
CST816S hanya merespons di I2C setelah ada peristiwa seperti sentuhan, jadi pemindaian saat boot biasanya tidak menemukan apa pun di 0x15. Sentuh layar saat memindai, lepaskan reset terlebih dahulu, dan di ESPHome atur skip_probe: true. Espressif mencatat bahwa pada beberapa chip, pembacaan ID dapat menyebabkan inisialisasi gagal.
Apakah CST816S mendukung multi-touch?
Tidak. Ia hanya melaporkan satu jari; driver Espressif membatasi jumlah titik pada 1. Namun ia melaporkan gestur: geser atas, bawah, kiri, dan kanan, serta tekan lama. Untuk multi-touch gunakan kontroller kelas GT911.
Mengapa CST816 saya melaporkan ghost touch?
Satu laporan publik menunjukkan CST816D pada Waveshare ESP32-S3-Touch-LCD-2 melaporkan sentuhan di sepanjang garis tengah vertikal dengan kode demo bawaan vendor itu sendiri, dan belum ada perbaikan yang terkonfirmasi. Jalankan demo vendor untuk menyingkirkan kemungkinan kesalahan kode Anda, lalu periksa daya dan grounding sebelum memfilter sentuhan di perangkat lunak.
Sumber
- Espressif ESP-BSP: driver esp_lcd_touch_cst816s
- Espressif ESP-BSP: README esp_lcd_touch_cst816s
- Kernel Linux: drivers/input/touchscreen/hynitron-cst816x.c
- Kernel Linux: binding device-tree hynitron,cst816x
- ESPHome: layar sentuh CST816
- seanuleh: sketsa uji ghost-touch untuk Waveshare ESP32-S3-Touch-LCD-2 (CST816D)