Перейти к содержимому
Display Engineer
Контроллер сенсора · Hynitron

CST816S: даташит, распиновка и код инициализации

CST816S — одноканальный (single-touch) контроллер ёмкостного сенсора от Hynitron с интерфейсом I2C и встроенным распознаванием жестов; применяется на небольших и круглых дисплеях, например модулях 1.28″ 240×240.

DEDisplay Engineer Applications Team · Инженеры по применению дисплеевОбновлено 21 окт. 2026 г.
ПроизводительHynitron
ТипКонтроллер сенсора
ИнтерфейсыI2C
Макс. разрешение1 touch point

CST816S вкратце

Параметр

Значение

Источник

I2C-адрес (7-битный)

0x15

Espressif esp_lcd_touch_cst816s; пример device-tree для Linux

Количество точек касания

1 (один палец)

Драйвер и README Espressif

Данные касания

Начинаются с 0x01 (жест), далее 0x02 (число пальцев), X — 0x03–0x04, Y — 0x05–0x06

Драйвер Linux hynitron-cst816x

Регистр Chip ID

0xA7

Драйвер Espressif

compatible в Linux

hynitron,cst816s

Binding device-tree для Linux

Чтение касания

Драйвер Linux считывает 6 байтов из регистра 0x01:

Регистр

Содержимое

0x01

Код жеста

0x02

Число пальцев (0 или 1)

0x03–0x04

X, big-endian, младшие 12 бит

0x05–0x06

Y, big-endian, младшие 12 бит

Коды жестов, обрабатываемые драйвером Linux: 0x01 свайп вверх, 0x02 свайп вниз, 0x03 свайп влево, 0x04 свайп вправо, 0x0C долгое нажатие.

CST816S не отвечает, пока к нему не прикоснуться

В README Espressif предупреждают, что чип "отвечает на I2C-команды только после события, например обнаружения касания. Не ожидайте ответа при инициализации." Поэтому I2C-сканер при загрузке часто ничего не находит по адресу 0x15, и именно поэтому в ESPHome есть опция skip_probe, пропускающая чтение Chip ID при старте. В Espressif также отмечают, что на некоторых чипах чтение ID может привести к сбою инициализации. Касайтесь экрана во время сканирования или пропустите проверку ID.

Сброс и прерывание

  • Драйвер Linux удерживает сброс 50 мс, отпускает его и ждёт 100 мс. Драйвер Espressif ждёт 200 мс с каждой стороны.
  • В драйвере Espressif вывод INT необязателен (возможен опрос). Драйвер Linux запрашивает прерывание и не проходит пробированиe без него.

Фантомные (ложные) касания

Один разработчик опубликовал тестовый скетч, показывающий, что CST816D на плате Waveshare ESP32-S3-Touch-LCD-2 сообщает о касаниях, которых никто не делал, — в основном вдоль вертикальной центральной линии, на двух платах и с собственным демо-кодом Waveshare. Подтверждённого исправления нет. Если вы столкнулись с фантомными касаниями, сначала запустите демо производителя, чтобы отделить проблему оборудования от вашего кода, затем проверьте питание и заземление платы и только потом фильтруйте касания программно.

Связанные контроллеры

Компонент cst816 в ESPHome поддерживает CST716, CST816D, CST816S, CST816T, CST820, CST826 и CST836. Для мультитач-панелей 4″–7″ см. GT911; для круглых дисплеев 1.28″ см. наше руководство по GC9A01 + ESP32.

Руководства и сравнения

CST816S: устранение неисправностей и FAQ

Почему мой CST816S не определяется на шине I2C?

CST816S отвечает по I2C только после события, например касания, поэтому сканирование шины при загрузке обычно ничего не находит по адресу 0x15. Коснитесь экрана во время сканирования, предварительно снимите сброс, а в ESPHome задайте skip_probe: true. Espressif отмечает, что на некоторых чипах чтение ID может привести к сбою инициализации.

Поддерживает ли CST816S мультитач?

Нет. Контроллер сообщает об одном пальце; драйвер Espressif ограничивает количество точек значением 1. При этом он распознаёт жесты: скольжение вверх, вниз, влево и вправо, а также долгое нажатие. Для мультитача используйте контроллер класса GT911.

Почему мой CST816 выдаёт фантомные касания?

Известен один публичный случай: CST816D на плате Waveshare ESP32-S3-Touch-LCD-2 сообщал о касаниях вдоль вертикальной центральной линии даже на штатном демо-коде производителя, и подтверждённого исправления нет. Запустите демо производителя, чтобы исключить ошибку в вашем коде, затем проверьте питание и заземление, прежде чем фильтровать касания программно.

Источники

  1. Espressif ESP-BSP: драйвер esp_lcd_touch_cst816s
  2. Espressif ESP-BSP: README драйвера esp_lcd_touch_cst816s
  3. Ядро Linux: drivers/input/touchscreen/hynitron-cst816x.c
  4. Ядро Linux: привязка device-tree hynitron,cst816x
  5. ESPHome: сенсорная панель CST816
  6. seanuleh: тестовый скетч фантомных касаний для Waveshare ESP32-S3-Touch-LCD-2 (CST816D)

Не знаете, какой дисплей подойдёт вашему проекту?

Пришлите размер, интерфейс и хост-процессор. Инженер по дисплеям в течение 12 часов ответит с 2–3 вариантами, даташитами и кодом инициализации. Образцы от 1 шт.