1. 触摸屏基础:电阻屏与电容屏原理、接口协议与关键参数
各位同学好,我是老张。做触摸驱动这行十几年了,今天咱们聊聊最基础的东西——触摸屏本身。你想想看,如果连屏是怎么工作的都不清楚,后面调偏移、适配驱动根本无从下手。我带过不少新人,上来就追着问“为什么我的触摸点偏了”,结果一查,连报点率和分辨率都没分清。
所以第一章,咱们把地基打牢。我会把电阻屏和电容屏的原理、常见的接口协议、还有那几个绕不开的关键参数,掰开揉碎了讲清楚。
1.1 电阻屏与电容屏:原理与实战感受
先说电阻屏。它的结构其实很简单——两层导电薄膜,中间用微小的绝缘点隔开。你用手指或者笔一按,上层薄膜就压到下层了,控制器检测到电压变化,算出位置。
核心要点:电阻屏是“压力感应”,必须物理接触才能工作。它不认手指,只认压力。
我记得早年做PDA项目,用的就是四线电阻屏。那会儿有个坑——屏幕用久了,薄膜老化,线性度会漂。我遇到过用户反馈“点左上角,光标跑到中间去了”,查了半天,是ITO薄膜磨损导致电阻不均匀。后来我们加了校准算法,每次开机自动跑一遍四点校准,才算稳住。
电阻屏的优点很明显:便宜、抗干扰、可以用任何物体操作。缺点嘛——不支持多点触控,透光率低,而且容易磨损。现在消费电子基本不用了,但工业控制、医疗设备里还能见到。
再说电容屏。这个大家天天摸,手机、平板都是它。原理是利用人体电场——手指靠近屏幕时,会和屏幕表面的电极形成耦合电容,控制器检测电容变化来定位。
电容屏分两种:
- 表面电容式:单点触控,结构简单,但抗干扰差。早年ATM机上用过,现在很少见了。
- 投射电容式:这才是主流。它又分自电容和互电容。自电容适合单点,互电容才能做多点。
我建议你重点掌握互电容原理。说白了,就是横竖两排电极交叉形成矩阵,手指靠近时,交叉点的电容会变。控制器扫描所有交叉点,就能知道哪里被摸了。
个人经验:电容屏最怕水。有一次做户外设备,下雨天触摸完全乱跳。后来发现是水滴在屏幕上形成了导电通路,干扰了电容检测。解决方案是加防水算法,或者用屏蔽层。这个后面章节会细讲。
两种屏的对比,我整理了一张表:
| 特性 | 电阻屏 | 电容屏 |
|---|---|---|
| 感应方式 | 压力接触 | 电场耦合 |
| 多点触控 | 不支持 | 支持(投射电容式) |
| 透光率 | 约80% | 约90%以上 |
| 耐用性 | 易磨损 | 较好 |
| 抗干扰 | 强 | 弱(尤其对水、汗) |
| 成本 | 低 | 较高 |
| 典型应用 | 工控、医疗 | 手机、平板、车载 |
1.2 触摸屏接口协议:I2C、SPI、USB
屏的原理搞清楚了,接下来就是它怎么和主控通信。常见的接口就三种:I2C、SPI、USB。我一个个说。
1.2.1 I2C
I2C是触摸屏最常用的接口,没有之一。两根线——SCL和SDA,速度一般400kHz到1MHz。优点是引脚少,布线简单。缺点是速度慢,不适合高报点率场景。
我习惯用I2C做消费电子产品的触摸屏。比如手机、平板,报点率100Hz以内,I2C完全够用。但要注意——I2C的地址冲突问题。有一次我同时接了触摸屏和传感器,结果地址都是0x38,通信乱套了。后来换了带地址引脚的芯片才解决。
1.2.2 SPI
SPI比I2C快得多,四根线——CS、SCLK、MOSI、MISO,速度能到几十MHz。适合高报点率场景,比如游戏设备、绘图板。
SPI的坑在于——线多,而且没有标准协议,各家芯片的寄存器定义都不一样。我建议你拿到芯片手册后,先画个时序图,再写驱动。别上来就调,容易翻车。
1.2.3 USB
USB主要用于外接触摸屏,比如Windows平板、一体机。它走的是HID协议,系统自带驱动,开发相对简单。但延迟比I2C和SPI高,不适合实时性要求高的场景。
三种接口的对比:
| 接口 | 速度 | 引脚数 | 典型应用 | 注意事项 |
|---|---|---|---|---|
| I2C | 400kHz~1MHz | 2 | 手机、平板 | 地址冲突、上拉电阻 |
| SPI | 10MHz~50MHz | 4 | 游戏设备、绘图板 | 时序复杂、无标准协议 |
| USB | 1.5Mbps~480Mbps | 4 | 外接触摸屏 | 延迟较高、需HID驱动 |
1.3 触摸屏关键参数:报点率、分辨率、线性度
这三个参数,是衡量触摸屏性能的核心。我面试新人时,必问这三个。很多人答不上来,或者答非所问。
1.3.1 报点率
报点率就是触摸屏每秒上报多少个坐标点,单位是Hz。比如100Hz,就是每秒100个点。
报点率越高,触摸越跟手。但也不是越高越好——高了会增加主控的负载,而且有些应用不需要那么快。比如电子书阅读器,50Hz就够了;但游戏手机,至少240Hz。
注意:报点率受接口速度限制。I2C最多做到200Hz左右,再高就得上SPI。我见过有人用I2C硬跑300Hz,结果数据丢包严重,触摸乱跳。
1.3.2 分辨率
分辨率就是触摸屏能识别的最小位置变化。单位是像素或者点数。比如1024×768,就是横向1024个点,纵向768个点。
分辨率越高,定位越精细。但要注意——触摸屏的分辨率和屏幕分辨率不是一回事。触摸屏分辨率通常比屏幕分辨率低,因为触摸不需要那么精细。比如屏幕是1920×1080,触摸屏可能只有1024×600。
我建议你选型时,触摸屏分辨率至少是屏幕分辨率的1/2,否则会有明显的锯齿感。
1.3.3 线性度
线性度是衡量触摸屏输出坐标和实际触摸位置一致性的指标。单位是百分比。比如线性度1%,就是最大偏差不超过屏幕宽度的1%。
线性度差,会导致触摸偏移。比如你点屏幕中间,光标却偏到左边。这个问题在电阻屏上尤其常见,因为薄膜老化会导致电阻不均匀。
电容屏的线性度一般比电阻屏好,但也不是完美的。尤其是边缘区域,因为电场分布不均匀,线性度会下降。我做过一个项目,屏幕边缘的触摸偏移达到5%,后来靠软件校准才解决。
这三个参数的关系,我画了一张图:
1.4 本章小结
好了,第一章的内容就这些。我帮你捋一下重点:
- 电阻屏靠压力工作,适合工控;电容屏靠电场,适合消费电子。
- 接口协议选型要看速度和场景:I2C够用就别上SPI,USB适合外接设备。
- 三个关键参数——报点率、分辨率、线性度,决定了触摸屏的体验和性能。
嗯,这些基础概念,后面每一章都会用到。尤其是线性度,和触摸偏移直接相关。下一章我们会深入分析触摸偏移的成因,到时候你就知道今天讲的东西有多重要了。
各位先消化一下。有问题随时找我。