一、前言

XPT2046可以作为12位的4通道输入的ADC来使用,也可以作为4线电阻触摸屏的驱动芯片来使用。下面介绍作为触摸屏驱动的使用原理及方法。

首先简单介绍一下4线电阻触摸屏的驱动原理(详细介绍)。

电阻触摸屏内部结构:

当按下触摸屏时RX-、RX+、RY-、RY+的阻值会发生变化,测量到他们的阻值,就得到了按下的位置。

要得到X坐标,就在X+电极施加驱动电压V,X-接地,然后通过Y+或Y-测量电压值,就可以得到RX+、RX-的阻值关系了。

要得到Y坐标,就在Y+电极施加驱动电压V,Y-接地,然后通过X+或X-测量电压值,就可以得到RY+、RY-的阻值关系了。

二、XPT2046的介绍

XPT2046是一款4线制电阻式触摸屏控制器,内含12位分辨率125KHz转换速率逐步逼近型A/D转换器。XPT2046支持从1.5V到5.25V的低电压I/O接口。XPT2046能通过执行两次A/D转换查出被按的屏幕位置, 除此之外,还可以测量加在触摸屏上的压力。内部自带2.5V参考电压,可以作为辅助输入、温度测量和电池监测之用,电池监测的电压范围可以从0V到6V。XPT2046片内集成有一个温度传感器。 在2.7V的典型工作状态下,关闭参考电压,功耗可小于0.75mW。

XPT2046可以单电源供电,电源电压范围为2.7V~5.5V。参考电压值直接决定ADC的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1V到VCC范围内的参考电压(要求外部参考电压源输出阻抗低)。

XPT2046没有内部时钟,因此它的动作全部受外部时钟控制,外部时钟由DCLK(16脚)输入。

X、Y、VBAT、Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式。选择转换VBAT(7脚)、Temp(内部温度传感器)和AUX(8脚)时配置为单端模式;作为触摸屏应用时,配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。

1、先看其内部框图:

可以看到有一个多路选择器,负责选择哪一路送入后面的ADC进行采样。多路选择器的输入有:XPT2046的内部温度传感器,可以用来测量它自身的温度;VBAT引脚的输入经过R1和R2分压后的电压值,可以用来测量外部电池的电压值;AUX引脚的电压值;X-、X+、Y-、Y+引脚的电压值。

X-、X+、Y-、Y+引脚后面连接着MOS管,控制逻辑可以打开MOS管3和4把X-、Y-接地。也可以打开MOS管1和2把X+、Y+接VCC。

要测量X坐标时,就把MOS管1和3打开,然后多路选择器选择Y-或Y+进行采样。

2、引脚图和应用原理图

VBAT:电池电源监控脚,不用悬空即可。

IN:ADC辅助通道,不用悬空即可。

VREF:参考电压的输入引脚,当使用外部参考电压时连接参考电压到该脚,不用悬空即可。

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

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

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

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

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

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

3、参考电压

+REF和-REF之间的电压差决定了模拟输入的电压范围。在12位分辨率下,数据结果最小值为VREF/4096。

4、通信时序

通信的过程很简单,首先主机向XPT2046写入8个字节的控制字节,然后从XPT2046中读出转换数据即可,读出来的数据有16位,只有高12位是有效数据。控制字节的含义如下:

1)通道选择

2)、单端模式或差分模式的区别:

单端模式简单,在采样过程完成后,转换过程中可以关闭驱动开关,降低功耗。但这种模式的缺点是精度直接受参考电压源的精度限制,同时由于内部驱动开关的导通电阻存在,导通电阻与触摸屏电阻的分压作用,也会带来测量误差。

差分模式的优点是:+REF和-REF的输入分别直接接到YP、YN上,可消除由于驱动开关的导通电阻引入的坐标测量误差。缺点是:无论是采样还是转换过程中,驱动开关都需要接通,相对单端模式而言,功耗增加了。

3)、电源模式:

ADC的内部参考电压可以单独关闭或者打开,但是,在转换前,需要额外的时间让内部参考电压稳定到最终稳定值;如果内部参考源处于掉电状态,还要确保有足够的唤醒时间。ADC要求是即时使用,无唤醒时间的。另外还得注意,当BUSY是高电平的时候,内部参考源禁止进入掉电模式。XPT2046的通道改变后,如果要关闭参考源,则要重新对XPT2046写入命令。

XPT2046的使用相关推荐

  1. 【程序】STM32F407VE单片机通过FSMC驱动Ilitek ILI9325液晶屏以及XPT2046触控芯片

    本程序使用的单片机为STM32F407VE,晶振大小为8MHz,用10厘米长的杜邦线和彩屏相连,彩屏为微雪(Waveshare)的3.2inch 320x240 ILI9325 Touch LCD ( ...

  2. 【STemWin】STM32F103VE单片机用FSMC驱动ILI9341彩色触摸屏(触控芯片XPT2046),并裸机移植STemWin图形库(采用LCDConf_FlexColor.c模板)

    本程序采用的是STM32F103VE单片机,外部晶振的大小为8MHz,使用HAL库编写程序. 程序下载地址:https://pan.baidu.com/s/1-Q4LX3DkMjDcLod1m3r1o ...

  3. 触摸芯片XPT2046的使用理解

    触摸芯片XPT2046的使用理解 以下只考虑SPI作为MASTER时的情况: SPI接口由于输入和输出两根线是用同一个时钟,所以发送命令时,同时能接收到数据,此时不去接收这些数据,因为这些数据是无效的 ...

  4. AD/DA转换(XPT2046)

    AD/DA介绍 AD(Analog to Digital):模拟-数字转换,将模拟信号转换为计算机可操作的数字信号 DA(Digital to Analog):数字-模拟转换,将计算机输出的数字信号转 ...

  5. stm32pz6806d+XPT2046(电阻屏)实验

    stm32pz6806d+XPT2046(电阻屏)实验 完整项目地址: https://github.com/linxinloningg/32_chip_core.git 前提: TFTLCD模块使用 ...

  6. XPT2046触摸屏实验过程详解与STM32代码解析

    触摸屏的简介 触摸屏的控制 XPT2046芯片简介 1. XPT2046 的初始化 2. XPT2046 读取 X.Y 值 3. 物理坐标值的数据处理 学习目标: 1.复习 STM32 的硬件 SPI ...

  7. 基于FPGA的XPT2046触摸控制器设计

    基于FPGA的XPT2046触摸控制器设计 小梅哥编写,未经许可,文章内容和所涉及代码不得用于其他商业销售的板卡 本实例所涉及代码均可通过向 xiaomeige_fpga@foxmail.com  发 ...

  8. ESP32驱动3.2寸ILI9341显示屏+XPT2046触摸,GUIslice用户图形库

    ESP32的主板ESPDUINO-32如下: 屏用如下的: 显示驱动用TFT_eSPI,这个显示的速度比adafruit ILI9341快10倍. 一.配置TFT_eSPI: arduino IDE ...

  9. XPT2046程序例程(STM32F103C8T6)

    一.前言 本例程是使用XPT2046 AD转换IC采集电位器的数值,并通过串口调试助手打印数据.所使用的是库函数进行编写. 二.XPT2046 概述 (一)功能说明 XPT2046是一款4线制电阻屏控 ...

  10. linux平台xpt2046驱动,XPT2046触摸屏实验过程详解与STM32代码解析

    1.XPT2046的初始化 XPT2046说起来其实就是一个AD转换器,所以它适合不需要什么初始化设置的,而具体的初始化其实也就是单片机IO的初始化和SPI的初始化. 这次STM32是使用SPI1来进 ...

最新文章

  1. 反射中getDeclaredConstructors和getConstructors两个方法的区别,然后setAccessible什么时候用,作用是什么?
  2. 《Java 高并发》01 高并发基本概念
  3. 1886. 判断矩阵经轮转后是否一致
  4. (王道408考研操作系统)第二章进程管理-第四节2:死锁处理策略之预防死锁
  5. 获取iview中表单组件Table的选中数据
  6. 关于修改docker(非docker-engine)的日志引擎
  7. javaScript 判断一个数是不是质数(素数)
  8. python 方差齐性检验_SPSS方差齐性检验(图文+视频教程)
  9. 腾讯云学生服务器分享
  10. Leetcode个人题解714
  11. 做个jmeter登陆百度网盘的实例
  12. YARN | 让你彻底搞明白YARN资源分配
  13. Python 计算思维训练——输入和错误处理练习(二)
  14. mmdection介绍
  15. 面试官:CSS如何画一个三角形?原理是什么?
  16. 基于蚁群算法的10个城市TSP问题的最短路径研究(附源码及讲解步骤)
  17. 前端开发,用 css3 做一个求婚小动画
  18. 如何在jsp中连接SQLserver数据库
  19. 5 个好用且免费的在线代码编辑器
  20. 互联网进化断代史第零纪--奇点纪

热门文章

  1. Revit二次开发--设置当前视图为三维视图
  2. 为什么微软不承认java_Java程序员3面小米,被俩算法题难倒,微软员工6分钟解决,真丢脸...
  3. 纯js消息弹窗组件Message
  4. 培训包装--自我介绍篇
  5. javase第三轮题目总结
  6. 计算机从业人员如何从不确定性的大环境中受益?
  7. 那契数列 php,人教版六年级下册数学第三单元阅读资料(裴波那契数列)
  8. python案例分析大学生薪资_Python数据分析的案例。。
  9. SVM支持向量机知识点
  10. 拥抱 TS:细数选择 TS 的 N 种理由