这一章在干嘛?

触摸屏实验:电阻屏 ADP 坐标采集、电容屏 FT/GT 系列多点触摸、坐标校准与转换。从此 LCD + Touch 一体化交互。

31.1 触摸屏简介

31.2 硬件设计

31.3 程序设计

31.4 下载验证

31.1 触摸屏简介

类型原理特点
电阻屏ITO 上下两层接触支持手写笔,单点
电容屏ITO + 人体电容耦合支持多点(最多 10 点)

DMF407 配 ATK-4.3 寸电容屏(FT5206/GT9147),通过 I2C 通信。

原书图 31.1.1:电容屏结构原书图 31.1.1:电容屏结构

电容屏工作流程:

  1. MCU 通过 I2C 读触摸 IC 状态寄存器;
  2. INT 引脚产生下降沿通知有新触摸;
  3. 读触摸点坐标 (x, y);
  4. 计算对应 LCD 像素坐标(考虑扫描方向)。

原书图 31.1.2:触摸 IC 与 MCU 连接原书图 31.1.2:触摸 IC 与 MCU 连接

31.2 硬件设计

  • 触摸 IC:FT5206 / GT9147(I2C 地址 0x38);
  • INT:PH7 下降沿触发;
  • RST:PA6 复位。

31.3 程序设计

31.3.1 I2C 通信

  • CubeMX 配置 I2C1/I2C2(用哪条看具体硬件)。
  • 触摸 IC 地址:写 0x70,读 0x71(GT9147)或写 0x70,读 0x71(FT5206 兼容模式)。

31.3.2 关键代码

void tp_init(void) {
    GT9147_Init();      // 复位 → 配置 → 中断
    HAL_NVIC_EnableIRQ(EXTI9_5_IRQn);
}

void EXTI9_5_IRQHandler(void) {
    if (__HAL_GPIO_EXTI_GET_IT(GPIO_PIN_7) != RESET) {
        tp_scan();      // 读坐标
        __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_7);
    }
}

原书图 31.3.2.1:触摸 IC 初始化与读坐标流程原书图 31.3.2.1:触摸 IC 初始化与读坐标流程

31.3.3 坐标校准

触摸 IC 坐标和 LCD 像素坐标范围不同,需要校准(线性变换):

x_lcd = x_tp * A + B;
y_lcd = y_tp * C + D;

四个校准点(左上、右上、左下、右下)算出 4 个系数。

31.4 下载验证

触摸屏幕不同位置 → 串口打印坐标;画板应用:用手指在屏幕上画画。

多点触摸:FT5206/GT9147 支持最多 5/10 个触点,可在画板应用中实现多指绘画。