这一章在干嘛? 触摸屏实验:电阻屏 ADP 坐标采集、电容屏 FT/GT 系列多点触摸、坐标校准与转换。从此 LCD + Touch 一体化交互。
31.1 触摸屏简介
| 类型 | 原理 | 特点 |
| 电阻屏 | ITO 上下两层接触 | 支持手写笔,单点 |
| 电容屏 | ITO + 人体电容耦合 | 支持多点(最多 10 点) |
DMF407 配 ATK-4.3 寸电容屏(FT5206/GT9147),通过 I2C 通信。
原书图 31.1.1:电容屏结构
电容屏工作流程:
- MCU 通过 I2C 读触摸 IC 状态寄存器;
- INT 引脚产生下降沿通知有新触摸;
- 读触摸点坐标 (x, y);
- 计算对应 LCD 像素坐标(考虑扫描方向)。
原书图 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.3 坐标校准
触摸 IC 坐标和 LCD 像素坐标范围不同,需要校准(线性变换):
x_lcd = x_tp * A + B;
y_lcd = y_tp * C + D;
四个校准点(左上、右上、左下、右下)算出 4 个系数。
31.4 下载验证
触摸屏幕不同位置 → 串口打印坐标;画板应用:用手指在屏幕上画画。
多点触摸:FT5206/GT9147 支持最多 5/10 个触点,可在画板应用中实现多指绘画。
🧠 小测验电容屏通过什么与 IC 通信?
I2C。
触摸中断是什么触发方式?
下降沿触发(INT 引脚拉低)。
为什么需要坐标校准?
触摸 IC 坐标范围和 LCD 像素范围不一致,需要线性变换。