目录
1. 触摸屏原理
触摸屏又称为触控面板。它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要可以分为电阻式触摸屏和电容式触摸屏。
相对而言,电阻式触摸屏造价便宜,能够适应较恶劣的环境,但只是支持单点触控(一次只能检测面板上一个触控的位置),触摸时需要一定的压力(通常指甲触摸的屏幕,需要给一定的压力),使用久了容易造成表面磨损,影响寿命。
而电容触摸屏支持多点触控,检测精度高,电容屏通过和导电物体产生的电容效应来检测触摸动作(电容屏可以用手指触摸,因为手指是导电的),只能感应导电物体的触摸,湿度较大或屏幕表面有水珠时会影响电容屏的检测效果。
电阻触摸屏和电容触摸屏两种屏幕,从外观上并没有明显的区别,区分电阻屏和电容屏最直接的方法就是使用绝缘物体点击屏幕。因为电阻式触摸屏是根据压力来检测触摸动作的,绝缘物体点击屏幕会产生压力;而电容式触摸屏是根据触摸物体是否导电来感应物体触摸的,所以绝缘物体触摸屏幕是不会由触摸动作的。
目前的电容式触摸屏被大部分应用在智能手机、平板电脑等电子设备中,而电阻式触摸屏在汽车导航、工控机等设备中仍占主流。
2. 电阻式触摸屏检测原理
电阻式触摸屏的结构如下图所示:
电阻式触摸屏主要由表面硬涂层、两个ITO层、间隔点以及玻璃底层构成,这些结构层都是透明的,整个触摸屏覆盖在液晶面板上,通过触摸屏可以看到液晶面板。首先,表面硬涂层的作用是:保护最外层的触摸屏;最深层的玻璃底层起到承载的作用;两个ITO层是触摸屏的关键结构----是涂有铟锡金属氧化物的导电层。两个ITO层之间通过间隔点使得两层分开,保持一定的间隔。当触摸屏表面受到压力时,表面弯曲使得上层ITO与下层ITO接触,在触点处接通电路。

注:以上的结构层都是透明的,这些结构只是为了保证触摸作用,在这些结构层下是液晶板,透过这些结构层是可以看到液晶板的,液晶屏上显示的汉字,图片等是在液晶板上显示的。
ITO涂层检测原理:
通过观察我们手中的开发板可以发现:LCD触摸屏都是通过四根线引出的触摸屏。仔细观察开发板可以发现,这四根线其实就是两个ITO涂层的两端分别引出的四个电极。
简单理解就是:可以将每个ITO层看做一个矩形,两个ITO层就是两个矩形,每个矩形都有2个长,2个宽。一个矩阵的两个长连接一个电极,两个宽连接一个电极。这样一来,两个ITO层就会引出四个电极。
两个ITO层的两端分别引出X-、X+、Y-、Y+四个电极,这是电阻屏最常见的四线结构,通过这些电极,外部电路向这两个涂层可以施加匀强电场或检测电压。

在上图的基础之上,如果我让X-接GND,X+接3.3V,那么在X方向上就会产生匀强电场;同理,如果我给Y-接GND,Y+接3.3V,那么在Y方向上就会产生匀强电场。明白了这一原理,我们接着往下看:

根据以上的原理,可以计算出触点处的X、Y坐标值。
触点处X、Y的坐标值:
计算X坐标时,在X+电极施加驱动电压,X-极接地,所以在X+与X-处形成了匀强电场,此时触点处的电压可以通过Y+电极采集得到,由于ITO层均匀导电,那么触点电压
与
之比就等于x坐标比上屏宽度。
/
=X / Width X=
* Width
同理,计算Y坐标时,在Y+电极施加驱动电压,Y-接地,所以会在Y+与Y-之间形成匀强电场,此时触点处的电压值可以通过X+电极采集得到,由于ITO层均匀导电,那么触电电压
与
之比就等于y坐标与屏长度之比。
Y= * Height
由此就可以得到触点处的坐标值(X,Y)。
电阻式触摸屏的原理就是如此:通过ADC不断的在X+、Y+上采集电压值,通过坐标与屏尺寸的比例,计算出X、Y坐标值。进而实现触摸屏触摸。
但是这样不断地进行采集、计算,未免费时费力。
为了方便检测触摸的坐标,为此, 一些芯片厂商制作了电阻屏专用的控制芯片,控制上述采集过程、采集电压、外部微控制器直接与触摸控制芯片通讯直接获得触点的电压或坐标。
其中XPT2046芯片就是一种典型的触摸控制芯片,控制4线电阻触摸屏,该芯片通过与STM32进行通讯,获得采集的电压值,然后转换成坐标。
STM32F4的2.8寸和3.5寸的LCD屏是电阻式触摸屏,电阻式触摸屏的驱动芯片是ADS7843、ADS7846、TSC2046、XPT2046 和 AK4182 等:
u8 CMD_RDX=0XD0; //读取X轴坐标命令
u8 CMD_RDY=0X90; //读取Y轴坐标命令
3. 电容式触摸屏检测原理
与电阻式触摸屏不同,电容式触摸屏不需要根据压力使接触点变形,再通过触点处电压值来检验坐标。
电容式触摸屏的基本原理和电容按键类似,都是利用电容的充放电原理,利用充电时间检测电容大小,从而通过检测出电容值的变化来获知触摸信号。
电容屏的最上层是玻璃,所以不会向电阻屏那样通过按压就产生明显的形变。核心层部分也是由ITO材料构成的,这些导电材料在屏幕里构成了人眼看不见的静态网,静态网由多行X轴电极和多列Y轴电极构成。两个电极之间会形成电容。
当触摸屏工作时,X轴电极会发出AC交流信号,而交流信号是能够穿过电容的,也可以说通过Y轴是可以感应出该信号的。当交流电穿越时电容会有充放电过程,检测该充电时间是可以获知电容量的。当手指触摸屏幕时,会影响接触点两端的电极发生耦合,明显改变两个电极之间的电容量,倘若检测到某电容的电容量发生了改变,即可获知该电容处有触摸动作。(所以可以称为电容式触摸屏,并且使用绝缘体触碰时不会产生电容变化)

电容屏的检测原理:
在电容屏的表面之下有X轴电极和Y轴电极,X轴电极发出AC交流信号后,交流信号通过电容会有充放电过程,通过Y轴电极检测这个充放电时间即可获得相应的电容值。当手指触摸屏幕时,触摸点的电容值会发生变化,通过下图具体了解可知,哪里的电容发生变化,即表示哪里发生了触摸现象。
实际上:检测Y轴电极检测的是充电时间,t=RC;其中R是整个电容屏的电阻,C是电容,手指触摸时,C电容会发生变化,进而使得充电时间 t 发生变化。

如上图,电极实际上是由多个菱形导体组成的,生产时使用蚀刻工艺在ITO层生成这样的结构。电极实际上是一连串菱形连在一起的。XY轴电极合并时,如右上图所示:
其扫描规则是这样的:
X轴电极依次扫描,Y轴电极同时扫描;比方说,X轴第一行发出AC交流信号后,由于耦合,会在第一行附近产生相应的电容,Y轴同时扫描,当扫描到哪一列的电容充电时间发生变化时,就意味着这一点产生了触摸信号。在X轴不断循环的过程中,依次扫描,在Y轴检测其触摸信号。右下图是单个XY电极产生的电容单元。
这也解释了为什么电容触摸屏可以同时检测多个信号?
意思就说:5个手指同时触摸电容屏是可以检测到的,而电阻屏不行。
因为X轴是依次循环的,第一根手指触摸读到第一个X;然后就会跳过这个X,读下一个X,用Y检测充电时间;上一个触摸点不会影响下一个触摸点。
STM32F4的4.3寸和7寸的LCD屏是电容式触摸屏,常见的两种电容触摸屏驱动IC:
①:GT9147(采用17*10的驱动结构)
GT9147的IIC地址,可以是0X14或者0X5D,当复位结束后的5ms内,如果INT是高电平,则使用0X14作为地址,否则使用0X5D作为地址。
控制命令寄存器:(0X8040)
该寄存器可以写入不同的值,实现不同的控制,我们一般使用0和2这两个值,写入2,即可软复位GT9147,在硬复位之后,一般要往该寄存器写2,实现软复位。然后,写入0,即可正确的读取坐标数据。
配置寄存器组:(0X8047~0X8100)
共186个寄存器,用于配置GT9147的各个参数。
产品ID寄存器:(0X8140~0X8143)
这总共有四个寄存器组成,用于保存产品ID,对于GT9147,这四个寄存器读出来的就是:9,1,4,7四个字符(ASCLL码值)。因此,可以通过该寄存器判断驱动IC的型号,究竟是GT9147还是OTT2001A。
状态寄存器:(0X814E)
这里关心最高位和低4位:最高位用于表示Buffer的状态,只要有数据存储(坐标/按键),那么Buffer就是1;最低4位用于表示有效触点的个数,范围是:0~5,0,表示没有触点,5表示有5点触摸。(这也是电容触摸屏多点触摸的显示)
坐标数据寄存器(共30个):
坐标数据寄存器共分成5组(5个点),每组6个寄存器储存数据,以下是第一组的寄存器:
对于第一组触点X Y的坐标,只需要读取0X8150~0X8153的值组合即可得到触点的X Y坐标。
GT9147支持寄存器地址自增,我们只需要发送寄存器组的首地址,然后读取即可,GT9147会自动地址自增,从而提高读取速度。
②:OTT2001A(采用13*8的驱动结构)
它们与MCU连接通过4根线,SDA、SCL、RST、INT,所以显然它们是通过IIC通讯方式与MCU进行通讯的。
4. 硬件配置
我手中拿着的是STM32F4,LCD是3.5寸的电阻式触摸屏。
4.1 XPT2046驱动芯片
XPT2046是一款4导线制触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O接口。XPT2046能通过执行两次A/D转换查出被按的屏幕位置,除此之外,还可以测量加在触摸屏上的压力。内部自带2.5V参考电压可以用作辅助输入、温度测量和电池监测模式之用。XPT2046片内部集成了温度传感器。

X+:X+位置输入端
Y+:Y+位置输入端
X-:X-位置输入端
Y-:Y-位置输入端
:参考电压输入/输出
DOUT:串行数据输出端
BUSY:忙时信号线。CS为高电平时为高阻状态
DIN:串行数据输入端
CS:片选信号
CLK:时钟
PEN:PEN引脚会在触摸屏被按下的时候产生一个低电平,平时没有触摸的时候是高电平,手指一直按着,会一直是低电平,直到手指松开。
因此可以通过中断来检测PEN引脚是否是低电平,那么则让XPT2046芯片进行模拟和数字的转换。通过中断来检测下降沿。
XPT2046的命令字:
XPT2046内部集成了A/D转换模块,且内部是有2.5V电压的。
之所以电阻屏需要XPT2046芯片驱动是因为

文章深入解析了触摸屏技术,包括电阻式与电容式触摸屏的工作原理,重点介绍了XPT2046驱动芯片的使用及硬件设计,并提供了详细代码实现触摸检测逻辑。同时,讨论了电容屏初始化、传感器控制及坐标数据处理方法,展现了触摸屏技术的全面应用知识。




最低0.47元/天 解锁文章
1314

被折叠的 条评论
为什么被折叠?



