1、触摸屏基础:电阻屏与电容屏原理、触摸控制器IC介绍、I2C/SPI通信协议基础
做嵌入式GUI这么多年,我调试过的触摸屏少说也有几十种。说实话,很多人在TouchGFX上遇到卡顿、漂移、无响应,根子往往不在软件,而是对触摸屏本身的理解不够深。这一章,我们就从最底层开始,把触摸屏的底裤扒干净。
1.1 电阻屏 vs 电容屏:你该选谁?
先问个问题:为什么有些设备用指甲盖也能划,有些非得用手指肚?这就是电阻屏和电容屏的本质区别。
电阻触摸屏
结构很简单——两层透明导电层中间夹着微小的隔离点。你按下去,上层变形,碰到下层,控制器检测到电压变化,算出坐标。
- 优点:便宜、抗干扰、戴手套能用、用笔尖也能操作。
- 缺点:透光率低、不支持多点触控、容易磨损。
- 典型场景:工业控制、医疗设备、老式PDA。
我的经验: 2018年做一个户外设备,电容屏在雨天乱跳,最后换成电阻屏反而稳了。电阻屏对恶劣环境的适应性,有时候比参数好看更重要。
电容触摸屏
利用人体电场感应。手指靠近时,屏幕表面的静电场被扰动,控制器检测电容变化来定位。
- 优点:透光好、支持多点触控、寿命长、手感顺滑。
- 缺点:戴普通手套不行、成本高、对水渍和电磁干扰敏感。
- 典型场景:手机、平板、消费类产品。
| 对比项 | 电阻屏 | 电容屏 |
|---|---|---|
| 触控方式 | 压力感应 | 电场感应 |
| 多点触控 | 不支持 | 支持(2~10点) |
| 透光率 | 约80% | 约90%以上 |
| 戴手套操作 | 可以 | 需特殊手套 |
| 成本 | 低 | 中高 |
| 抗干扰能力 | 强 | 较弱 |
避坑: 我曾经在一个项目中选了电容屏,结果现场有强电磁干扰,触摸完全失控。后来加了屏蔽层才解决。选型时一定要考虑实际环境,别只看参数表。
1.2 触摸控制器IC:屏幕的翻译官
触摸屏本身只是一堆物理层,真正干活的是控制器IC。它负责扫描、采样、滤波、坐标计算,最后通过I2C或SPI把数据丢给主控。
常见控制器IC
- FT5x06系列(FocalTech):电容屏常用,支持多点触控,I2C接口。我用的最多,驱动成熟,社区资料丰富。
- GT911系列(Goodix):也是电容屏,性价比高,很多国产板子标配。
- TSC2046(TI):电阻屏经典控制器,SPI接口,4线/5线电阻屏都能用。老项目里经常见到它。
- ADS7846(TI):TSC2046的前身,基本兼容,但功耗略高。
选控制器时,我一般先看接口——I2C还是SPI?再看分辨率——12位还是10位?最后看驱动库——TouchGFX有没有现成的?
1.3 I2C与SPI通信协议基础
控制器和主控之间怎么说话?就靠I2C或SPI。这两个协议是嵌入式工程师的必修课,我简单梳理一下核心点。
I2C(Inter-Integrated Circuit)
两根线:SCL(时钟)和SDA(数据)。主从结构,每个设备有唯一地址。
- 优点:引脚少、支持多设备、接线简单。
- 缺点:速度相对慢(标准模式100kHz,快速模式400kHz,高速模式3.4MHz)。
- 典型应用:触摸屏、传感器、EEPROM。
// I2C读触摸坐标示例(伪代码)
uint8_t addr = 0x38; // FT5x06的I2C地址
uint8_t reg = 0x02; // 触摸状态寄存器
I2C_Start();
I2C_SendByte(addr << 1 | 0); // 写方向
I2C_SendByte(reg);
I2C_Stop();
I2C_Start();
I2C_SendByte(addr << 1 | 1); // 读方向
uint8_t status = I2C_ReadByte();
I2C_Stop();
SPI(Serial Peripheral Interface)
四根线:SCLK(时钟)、MOSI(主出从入)、MISO(主入从出)、CS(片选)。全双工,速度比I2C快得多。
- 优点:高速(几十MHz)、全双工、协议简单。
- 缺点:引脚多、不支持多主设备(需要多根CS线)。
- 典型应用:显示屏、触摸控制器(尤其是电阻屏)、ADC。
// SPI读触摸坐标示例(伪代码)
uint8_t tx_buf[3] = {0x90, 0x00, 0x00}; // 命令+占位
uint8_t rx_buf[3];
CS_LOW();
SPI_Transfer(tx_buf, rx_buf, 3);
CS_HIGH();
uint16_t x = (rx_buf[1] << 4) | (rx_buf[2] >> 4);
| 对比项 | I2C | SPI |
|---|---|---|
| 线数 | 2根 | 4根 |
| 速度 | 100kHz~3.4MHz | 可达几十MHz |
| 通信方式 | 半双工 | 全双工 |
| 多设备支持 | 地址寻址,方便 | 片选线,占用引脚 |
| 典型触摸IC | FT5x06, GT911 | TSC2046, ADS7846 |
核心观点: 在TouchGFX项目中,电容屏多用I2C,电阻屏多用SPI。I2C接线少但速度受限,SPI速度快但占用引脚多。选型时,先看主控的引脚资源,再看刷新率要求。
1.4 本章知识体系总览
下面这张图,把触摸屏从物理层到通信层的关系串起来了。你想想看,从手指按下去,到TouchGFX收到坐标,中间经历了多少环节?
嗯,这张图把三层结构讲清楚了。物理层决定你怎么按,控制器层决定怎么算,通信层决定怎么传。每一层都有坑,后面我们会逐个拆解。
1.5 小结
这一章我们聊了电阻屏和电容屏的原理差异,认识了几个主流控制器IC,也复习了I2C和SPI的基础。说白了,触摸屏不是什么玄学,就是物理+电路+协议的组合。你把这些基础打牢了,后面做校准和修复才能有的放矢。
个人建议: 如果你手头有开发板,建议用逻辑分析仪抓一下触摸控制器的I2C或SPI波形。亲眼看到坐标数据在线上跑,比看一百遍文档都管用。我当年就是这么入门的。