XPT2046 四线电阻式触摸屏

2022-10-22,,

文章目录

  • 一、简介
  • 二、引脚及其功能
  • 三、工作原理
  • 四、内部结构
  • 五、作用和用途
  • 六、示例代码

一、简介

XPT2046 四线电阻触摸屏,主要由两层镀有ITO镀层的薄膜组成。其中一层在屏幕的左右边缘各有一条垂直总线,另一层在屏幕的底部和顶部各有一条水平总线,如果在一层薄膜的两条总线上施加电压,在ITO镀层上就会形成均匀电场。当使用者触击触摸屏时,触击点处两层薄膜就会接触,在另一层薄膜上就可以测量到接触点的电压值。

下图为XPT2046的功能框图,可见XPT2046内部包含了一个多路选择器,能够测量电池电压、AUX电压、芯片温度。一个12位的ADC用于对选择的模拟输入通道进行模数转换,得到数字量,然后送入控制逻辑电路,供主控CPU进行读取,同时,具体选择哪个通道进行转换,也是由主控CPU发送命令给控制逻辑来设置的。

XPT支持笔触中断,即当触摸屏检测到触摸被按下时,可以立即产生笔触中断,通知主控制器可以控制开始转换并读取数据。在转换过程中,通过busy信号指示当前忙状态,以避免主控发出新的命令中断之前的命令。

二、引脚及其功能

XPT2046通过SPI接口与主控制器进行通信,其与主控制器的接口包括以下信号:

PENIRQ_N:笔触中断信号,当设置了笔触中断信号有效时,每当触摸屏被按下,该引脚被拉为低电平。当主控检测到该信号后,可以通过发控制信号来禁止笔触中断,从而避免在转换过程中误触发控制器中断。该引脚内部连接了一个50K的上拉电阻。

CS_N:芯片选中信号,当CS_N被拉低时,用来控制转换时序并使能串行输入/输出寄存器以移出或移入数据。当该引脚为高电平时,芯片(ADC)进入掉电模式。

DCLK:外部时钟输入,该时钟用来驱动SARADC的转换进程并驱动数字IO上的串行数据传输。

DIN:芯片的数据串行输入脚,当CS为低电平时,数据在串行时钟DCLK的上升沿被锁存到片上的寄存器。

DOUT:串行数据输出,在串行时钟DCLK的下降沿数据从此引脚上移出,当CS_N引脚为高电平时,该引脚为高阻态。

BUSY:忙输出信号,当芯片接收完命令并开始转换时,该引脚产生一个DCLK周期的高电平。当该引脚由高点平变为低电平的时刻,转换结果的最高位数据呈现在DOUT引脚上,主控可以读取DOUT的值。当CS_N引脚为高电平时,BUSY引脚为高阻态。

三、工作原理

XPT2046是一种典型的逐次逼近型模数转换器(SARADC),包含了采样/保持、模数转换、串口数据输出等功能。同时芯片集成有一个2.5V的内部参考电压源、温度检测电路,工作时使用外部时钟。XPT2046可以单电源供电,电源电压范围为2.7V~5.5V。参考电压值直接决定ADC的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1V~VCC范围内的参考电压(要求外部参考电压源输出阻抗低)。X、Y、Z、VBAT、Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式。选择VBAT、Temp和AUX时可以配置为单端模式;作为触摸屏应用时,可以配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。

下图为XPT2046的典型工作电路:

XPT2046有四个引脚,用于连接到四线制电阻屏的FPC上,分别为XP、XN、YP、YN,连接到对应的四线制电阻屏的X电极的正端、负端和Y电极的正端、负端。此四个引脚每个都能工作于两种状态,分别为电源/GND输出、ADC输入。例如设置ADC工作在差分模式,当测量X方向的坐标时,XP输出VCC、XN连接到GND,此时,YP和YN作为ADC的差分输入脚连接到ADC上,通过测量YP和YN之间的电压差来得到当前触摸点的X位置。同理,当测量Y方向的坐标时,YP输出VCC、YN连接到GND、此时,XN和XP作为ADC的差分输入脚连接到ADC上,通过测量YP和YN之间的电压差来得到当前触摸点的Y位置。

四、内部结构

五、作用和用途

典型应用:

24时钟周期转换

读写时序

了解了XPT2046的接口电路,接下来我们就可以通过主控MCU或FPGA来控制该芯片实现坐标的读取了。要想正确的读到X、Y坐标,需要按照芯片规定的控制协议进行数据的读写。XPT2046实现一次X、Y坐标的读取需要完成两次转换,单一一次转换只能得到单一X或Y的坐标,因此,我们必须通过两次控制才能到到结果。至于每一次转换的对象为X或Y坐标,由控制器发出的控制字决定。ADC在转换时能够被配置为单端或差分模式,具体的控制字在每次传输开始的时候,由主控MCU驱动DIN信号传输。下图为XPT2046典型的24时钟周期转换控制时序:

XPT2046数据接口是串行接口,其典型工作时序如上图所示,图中展示的信号来自带有基本串行接口的单片机或数据信号处理器。处理器和转换器之间的的通信需要8个时钟周期,可采用SPI、SSI和Microwire等同步串行接口。一次完整的转换需要24个串行同步时钟(DCLK)来完成。

前8个时钟用来通过DIN引脚输入控制字节。当转换器获取有关下一次转换的足够信息后,接着根据获得的信息设置输入多路选择器和参考源输入,并进入采样模式,如果需要,将启动触摸面板驱动器。3个多时钟周期后,控制字节设置完成,转换器进入转换状态。这时,输入采样-保持器进入保持状态,触摸面板驱动器停止工作(单端工作模式)。接着的12个时钟周期将完成真正的模数转换。如果是度量比率转换方式(SER/DFR——=0),驱动器在转换过程中将一直工作,第13个时钟将输出转换结果的最后一位。剩下的3个多时钟周期将用来完成被转换器忽略的最后字节(DOUT置低)。

六、示例代码

XPT2046 读取AD值

unsigned int XPT2046_ReadAD(unsigned char Command)
{
	unsigned char i;
	unsigned int Data=0;
	XPY2046_DCLK=0;
	XPY2046_CS=0;
	for(i=0;i<8;i++)
	{
		XPY2046_DIN=Command&(0x80>>i);
		XPY2046_DCLK=1;
		XPY2046_DCLK=0;
	}
	for(i=0;i<16;i++)
	{
		XPY2046_DCLK=1;
		XPY2046_DCLK=0;
		if(XPY2046_DOUT){Data|=(0x8000>>i);}
	}
	XPY2046_CS=1;
	return Data>>8;
}

《XPT2046 四线电阻式触摸屏.doc》

下载本文的Word格式文档,以方便收藏与打印。