跳到正文
Display Engineer
触摸控制器 · Hynitron

CST816S:规格书、引脚定义与初始化代码

CST816S 是海栎创(Hynitron)推出的一款单点电容式触控芯片,采用 I2C 接口并内置手势识别,常见于 1.28″ 240×240 等小型及圆形显示屏模块。

DEDisplay Engineer Applications Team · 显示应用工程师更新于 2026年10月21日
厂商Hynitron
类型触摸控制器
接口I2C
最大分辨率1 touch point

CST816S 概览

项目

数值

来源

I2C 地址(7 位)

0x15

Espressif esp_lcd_touch_cst816s;Linux 设备树示例

触控点数

1(单指)

Espressif 驱动及其 README

触控数据

从 0x01 开始(手势),随后 0x02(手指数量),X 位于 0x03–0x04,Y 位于 0x05–0x06

Linux hynitron-cst816x 驱动

芯片 ID 寄存器

0xA7

Espressif 驱动

Linux compatible 属性

hynitron,cst816s

Linux 设备树绑定

读取触控数据

Linux 驱动从寄存器 0x01 起连续读取 6 个字节:

寄存器

内容

0x01

手势代码

0x02

手指数量(0 或 1)

0x03–0x04

X,大端序,低 12 位有效

0x05–0x06

Y,大端序,低 12 位有效

Linux 驱动支持的手势代码:0x01 上滑,0x02 下滑,0x03 左滑,0x04 右滑,0x0C 长按。

不触摸屏幕,CST816S 不会有任何应答

Espressif 的 README 警告,该芯片“只有在发生事件(例如检测到触摸)后才会响应 I2C 命令,初始化阶段不要期望它有响应”。这就是为什么开机时用 I2C 扫描器常常在 0x15 地址上扫不到任何设备,也是 ESPHome 提供 skip_probe 选项(跳过启动时读取芯片 ID)的原因。Espressif 还补充说,在某些芯片上读取 ID 可能导致初始化失败。扫描时请触摸屏幕,或跳过 ID 检查。

复位与中断

  • Linux 驱动将复位脚拉低 50 ms,随后释放并等待 100 ms。Espressif 的驱动则在两侧各等待 200 ms。
  • 在 Espressif 的驱动中 INT 引脚是可选的(可采用轮询方式)。Linux 驱动则会申请中断,缺少中断时探测将失败。

幻触(鬼触)问题

一位开发者发布的测试程序显示,在两块 Waveshare ESP32-S3-Touch-LCD-2 板卡上,即使使用 Waveshare 自带的示例代码,CST816D 也会上报无人操作的触摸,且大多集中在垂直中线上。目前尚无已确认的解决方案。如果遇到幻触,请先运行厂商的示例程序以区分是硬件问题还是代码问题,然后在软件中做触摸滤波之前,先检查板卡的供电和接地情况。

相关控制器

ESPHome 的 cst816 组件支持 CST716、CST816D、CST816S、CST816T、CST820、CST826 和 CST836。如需 4″–7″ 多点触控屏,请参见GT911;如需 1.28″ 圆形显示屏,请参阅我们的GC9A01 + ESP32 指南。

指南与对比

CST816S 排障与常见问题

为什么我的 CST816S 在 I2C 上检测不到?

CST816S 只有在触摸等事件发生后才会在 I2C 上响应,因此开机时的 I2C 扫描通常在 0x15 地址上找不到任何设备。扫描时请触摸屏幕,先释放复位引脚,并在 ESPHome 中设置 skip_probe: true。Espressif 指出,在某些芯片上读取 ID 可能导致初始化失败。

CST816S 支持多点触控吗?

不支持。它只报告单个手指,Espressif 的驱动将触点数量上限设为 1。但它可以报告手势:上滑、下滑、左滑、右滑和长按。如需多点触控,请使用 GT911 级别的控制器。

为什么我的 CST816 会出现鬼触(误触)?

有一份公开报告显示,在使用厂商自带演示代码的情况下,Waveshare ESP32-S3-Touch-LCD-2 上的 CST816D 会沿垂直中线报告触点,且目前尚无确认的修复方法。请先运行厂商演示代码以排除自身代码问题,然后在软件中过滤触点之前检查供电和接地。

资料来源

  1. Espressif ESP-BSP:esp_lcd_touch_cst816s 驱动
  2. Espressif ESP-BSP:esp_lcd_touch_cst816s README
  3. Linux 内核:drivers/input/touchscreen/hynitron-cst816x.c
  4. Linux 内核:hynitron,cst816x 设备树绑定
  5. ESPHome:CST816 触摸屏
  6. seanuleh:Waveshare ESP32-S3-Touch-LCD-2(CST816D)鬼触测试程序

不确定哪款显示屏适合你的设计?

告诉我们尺寸、接口和主控。显示工程师会在 12 小时内回复 2–3 个方案,附规格书和初始化代码。样品 1 片起。