2. 触摸屏技术基础

触摸屏是人机交互的核心部件,在 RGB 接口 LCD 系统中通常作为独立外设挂接在 I²C 或 SPI 总线上。本章从物理原理、电气接口和协议三个层面剖析电阻式与电容式触摸屏,为后续逻辑分析仪抓取触摸数据打下基础。

2.1 电阻式触摸屏原理

电阻式触摸屏由两层透明导电薄膜(ITO)组成,中间由微小绝缘隔点分隔。当外力按压上层薄膜使其与下层接触时,形成分压回路,通过测量 X/Y 方向的电压比例即可定位触点。

关键物理特性: 电阻屏是压力感应型,支持手指、手套、触笔操作,成本低但透光率约 75%–80%,不支持多点触控。
电阻式触摸屏分层结构与定位原理 上层 ITO 薄膜(Y 电极层) 绝缘隔点(透明微球) 下层 ITO 薄膜(X 电极层) 玻璃基板 按压 X+ 到 X- 施加参考电压,测量 Y+ 分压比 → X 坐标 Y+ 到 Y- 施加参考电压,测量 X+ 分压比 → Y 坐标

2.2 电容式触摸屏原理

电容式触摸屏利用人体与 ITO 电极之间的寄生电容变化来检测触摸。自电容方案测量单电极对地电容,互电容方案测量行列交叉点的耦合电容变化,后者是实现多点触控的主流技术。

对比项 自电容(Self-Capacitance) 互电容(Mutual-Capacitance)
测量对象 单电极对地电容 行列交叉点耦合电容
多点触控 支持有限(鬼点问题) 真多点,无鬼点
扫描方式 逐行/逐列扫描 逐交点扫描
灵敏度 较高,适合大尺寸 更高,适合小间距
典型应用 单点触控、触控按键 智能手机、平板
调试提示: 电容屏控制器(如 FT5x06、GT911)通常内置电容数字转换电路,通过 I²C 或 SPI 直接输出坐标数据。逻辑分析仪抓取时重点关注 I²C 起始条件、设备地址和寄存器地址,而非模拟电容波形。
互电容触摸检测原理 驱动线 TX(行) 感应线 RX(列) Cm 手指 手指靠近 → 电场线分流 → Cm 减小 ΔC 控制器检测 ΔC 超过阈值 → 判定触摸 扫描所有 TX-RX 交点 → 生成触摸矩阵 芯片内插值计算 → 输出精确 (X, Y) 坐标

2.3 触摸屏接口:I²C 与 SPI

嵌入式系统中触摸屏控制器几乎全部采用 I²C 或 SPI 与主控通信。下表列出两种接口在触摸场景下的典型差异:

参数 I²C SPI
信号线 SDA、SCL(2 线 + GND) MOSI、MISO、SCLK、CS(4 线 + GND)
速率 标准 100 kHz / 快速 400 kHz / 高速 3.4 MHz 典型 1–10 MHz,最高可达 50 MHz
从机选择 7 位或 10 位设备地址 片选 CS 低电平有效
数据方向 半双工(主写/主读分时) 全双工(MOSI/MISO 同时传输)
典型触摸 IC FT5x06、GT911、CST816 TSC2046、ADS7846(电阻屏)
逻辑分析仪关注点 起始条件、设备地址 + R/W、ACK/NACK CS 下降沿、时钟极性和相位、字节顺序

2.3.1 I²C 触摸读取流程

  1. 起始条件: SCL 高电平时 SDA 由高变低。
  2. 发送设备地址 + 写位: 例如 0x38 << 1 | 0 = 0x70,等待 ACK。
  3. 发送寄存器地址: 例如 0x02(触摸状态寄存器),等待 ACK。
  4. 重复起始条件: 切换为读方向。
  5. 发送设备地址 + 读位: 0x38 << 1 | 1 = 0x71,等待 ACK。
  6. 读取数据字节: 主控产生时钟,从机发送数据,主控每字节后发 ACK。
  7. 停止条件: SCL 高电平时 SDA 由低变高。
逻辑分析仪配置建议: 采样率设为 I²C 时钟的 4 倍以上(如 400 kHz 时钟用 2 MHz 采样),触发条件设为 SDA 下降沿(起始条件),解码协议选择 I²C,即可自动解析地址、数据和 ACK。

2.3.2 SPI 触摸读取流程

  1. 拉低 CS: 选中从机。
  2. 发送命令字节: 例如 0x90(差分模式 + 通道选择),同时 MISO 返回无效数据。
  3. 发送 2 个 dummy 字节: 等待 ADC 转换完成,同时 MISO 返回 12 位或 16 位触摸数据。
  4. 拉高 CS: 结束本次传输。
// SPI 读取 TSC2046 触摸坐标示例(伪代码)
uint16_t read_touch_tsc2046(uint8_t channel_cmd) {
    uint8_t tx_buf[3] = {channel_cmd, 0x00, 0x00};
    uint8_t rx_buf[3] = {0};
    HAL_GPIO_WritePin(CS_GPIO, CS_PIN, GPIO_PIN_RESET);
    HAL_SPI_TransmitReceive(&hspi1, tx_buf, rx_buf, 3, HAL_MAX_DELAY);
    HAL_GPIO_WritePin(CS_GPIO, CS_PIN, GPIO_PIN_SET);
    // 12 位数据拼接:rx_buf[1] 高 8 位,rx_buf[2] 高 4 位
    return ((uint16_t)rx_buf[1] << 4) | (rx_buf[2] >> 4);
}
常见调试陷阱: SPI 时钟极性(CPOL)和相位(CPHA)必须与触摸 IC 数据手册一致。TSC2046 通常使用模式 0(CPOL=0, CPHA=0)或模式 1(CPOL=0, CPHA=1)。逻辑分析仪抓取时先确认 CS 有效期间 SCLK 空闲电平及数据采样沿,否则解码会错位。

2.4 触摸屏接口对比总结

维度 电阻式(SPI 典型) 电容式(I²C 典型)
物理原理 压力接触分压 人体电容耦合
多点触控 不支持 支持(互电容)
接口速率 SPI 1–10 MHz,数据吞吐高 I²C 400 kHz–3.4 MHz,适合小数据量
坐标输出 原始 ADC 值,需主控滤波 芯片内滤波后输出,含触摸 ID 和事件
逻辑分析仪关注点 CS 时序、SCLK 模式、ADC 数据拼接 设备地址、寄存器地址、连续读长度