历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2021年02月28日 | ARM7202触摸屏接口设计方案

2021-02-28 来源:eefocus

1 引言

不同的应用领域触摸屏的设计方式也各不相同,一般有以下三种:⑴应用触摸屏模块。触摸屏模块提供标准的硬件接口与应用系统(一般为PC或X86架构的工控机)相连,安装驱动程序后即可工作,基本无需开发;⑵扩展触摸屏控制器。这是嵌入式系统中设计触摸屏普遍使用的方法,常用的触摸屏控制芯片有ADS7843、ADS7846等,这些芯片内部集成了A/D转换器和触摸屏的驱动电路,同时要设计一定的软件;⑶与前面方式⑵相仿,有些处理器集成了A/D转换器,通过IO口模拟触摸屏的驱动信号也可实现触摸屏的控制。


ARM7202集成了ARM7TDMI CPU核、存储器管理单元(MMU)、8KB高速缓冲存储器(Cache),主频达70MHz。是一高性能嵌入式处理器。除触摸屏控制器外,其片内还包含了其他丰富的资源,如LCD控制器、SDRAM控制器、中断控制器、DMA 控制器等[1]。ARM7202与触摸屏的接口在软/硬件设计上有些与前面三种不同的方面。


2 硬件设计

2.1 电阻触摸屏原理

电阻触摸屏是一多层的复合膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层,上面再盖有一层塑料层,它的内表面也涂有一层透明的导电层,在两层导电层之间有许多细小的透明隔离点把它们隔开绝缘,如图1。当手指触摸屏幕时,平常绝缘的两层导电层在触摸点位置就有了一个接触,控制器检测到这个接触后,其中一面导电层接通Y轴方向的5V均匀电压场,另一导电层将接触点的电压引至控制器进行A/D转换,得到电压值后与5V相比即可得触摸点的Y轴坐标,如图2。同理得出X轴的坐标。这是所有电阻触摸屏共同的基本原理。

2.2 ARM7202与触摸屏的接口

ARM7202片上资源包含触摸屏控制器,用于控制4线电阻式触摸屏。在5路A/D转换通道中A0和A1是用于触摸屏坐标采集的,同时芯片提供ATSXP、ATSXN、ATSYP和ATSYN四根扫描线分别对X方向和Y方向进行扫描。ATSXP和ATSXN在X方向施加正向电压时,在Y方向检测到X坐标的对应值;同理ATSYP和ATSYN在Y方向施加正向电压时,在X方向检测到Y坐标的对应值,分别由A0和A1采集。为了减少系统功耗和触摸屏所占CPU资源,只在有落笔时触摸屏控制器才启动扫描,通过A/D转换得到坐标的对应值,因此需在外部设计落笔检测电路,如图3所示。图中IRLML6302和IRLML2402分别为PMOSFET和NMOSFET,作为开关管控制X方向和Y方向的扫描输出。PB7接上拉电阻,检测落笔中断,当有落笔时,PB7检测到低电平,触发中断。PB6为中断检测电路的使能信号,当PB6为高电平时,中断有效,触摸屏扫描无效;反之中断无效,触摸屏扫描有效。

3 触摸屏控制程序机制

不同的操作系统下对触摸屏的应用各有不同,但都包括了设备的初始化、设备读写及中断响应等基本模块。触摸屏的驱动程序涉及到两个中断:落笔中断和触摸屏A/D转换中断。所包含的程序模块有:触摸屏初始化、落笔中断服务程序、A/D中断服务程序、滤波程序和坐标转换程序。这里重点说明触摸屏的两个中断。


触摸屏初始化程序完成外部电路的中断设置和采样率的设置,并将触摸屏的A/D中断和A/D转换器电源关闭,使外部电路中断有效。


有落笔时,外部中断被触发,进入落笔中断服务程序。在落笔中断服务程序中清中断源,关外部中断,使外部中断电路无效,打开触摸屏中断和AD转换器电源。此时触摸屏电路开始扫描触摸屏。触摸屏A/D转换结束后,产生A/D中断,进入A/D中断服务程序。在触摸屏A/D中断服务程序中,清A/D中断,关触摸屏A/D中断,读A/D转换值。此时还要判断落笔是否继续,若无落笔,开外部电路中断,使外部中断电路有效,关A/D中断和A/D转换器电源,进入节能模式,如图4(a);若还有落笔,要继续开触摸屏A/D中断,使外部中断电路无效,触摸屏的A/D转换继续进行,如图4(b)所示。



图4 触摸屏程序流图


由A/D转换得到的值是触摸屏上触摸点的X坐标和Y坐标的值,要通过一定的方法转换为显示屏上的坐标。限于篇幅这里省略,其原理和实现方法见参考文献[2]。在A/D转换时,每次由A/D转换寄存器得到4组转换值,可以设计一个滤波程序以提高检测精度。


推荐阅读

史海拾趣

Aearo Technologies公司的发展小趣事

随着技术的不断进步,Aearo Technologies在能量控制领域取得了重大突破。公司研发的新型材料不仅能够有效控制噪声和振动,还能提高产品的耐用性和可靠性。这些技术优势使得公司的产品在航空航天、军用防护以及消费电子等多个领域得到了广泛应用。通过不断拓展市场,Aearo Technologies逐渐成为了能量控制技术的领导者。

Bals Elektrotechnik GmbH & Co KG公司的发展小趣事

随着公司业务的不断扩展,Bals Elektrotechnik开始寻求国际化的发展道路。1990年代,公司决定在中国昆山设立工厂,以便更好地服务亚洲市场。这一决策不仅提高了公司的生产效率和市场竞争力,也为其在全球范围内的业务拓展提供了有力支持。

Hexawave公司的发展小趣事

随着公司业务的不断扩展,Bals Elektrotechnik开始寻求国际化的发展道路。1990年代,公司决定在中国昆山设立工厂,以便更好地服务亚洲市场。这一决策不仅提高了公司的生产效率和市场竞争力,也为其在全球范围内的业务拓展提供了有力支持。

博林(BL)公司的发展小趣事

为了降低生产成本、提高生产效率,博林公司开始实施产业链整合战略。公司通过收购、兼并等方式,逐步掌握了从原材料供应到终端产品销售的完整产业链。同时,博林公司还积极向垂直化方向发展,涉足与电子产品相关的多个领域,如芯片设计、软件开发等。这种垂直化的发展模式使得博林公司在行业中更具竞争力,能够更好地应对市场变化和客户需求。

Advanced Linear Devices公司的发展小趣事

随着国内市场的日益饱和,博林公司开始积极拓展海外市场。公司制定了详细的国际化战略,通过参加国际展览、建立海外销售渠道等方式,不断提升品牌知名度和影响力。同时,博林公司还积极寻求与国际知名企业的合作机会,通过技术合作和市场共享等方式,实现互利共赢。这些举措使得博林公司的市场份额不断扩大,国际竞争力日益增强。

Andersen Laboratories Inc公司的发展小趣事

在不断追求技术创新和市场扩张的过程中,AnalogicTech始终坚持多元化发展战略。公司不仅在LED背光液晶电视市场取得了显著成绩,还积极拓展其他领域,如智能手机、平板电脑等消费电子产品市场。通过不断推出创新产品和解决方案,AnalogicTech成功实现了市场的多元化发展,为公司的长期稳定发展奠定了坚实基础。

这五个故事展示了AnalogicTech公司在电子行业中发展起来的关键阶段和重要举措。凭借其卓越的技术创新、全球化的运营策略、高效的物流配送体系以及市场扩张与多元化战略的推进,AnalogicTech成功地在竞争激烈的电子行业中脱颖而出,成为了一家备受瞩目的企业。

问答坊 | AI 解惑

LINUX C語言庫函數

LINUX  C語言庫函數,很詳細,411頁。…

查看全部问答>

无线供电技术展望:无线的最后一公里

我们曾经为大家介绍过未来高速数据接口的发展趋势,其中高速无线数据传输已经在其中占据了非常重要的位置。它们使我们桌面上的线缆越来越少,然而电源线一直是电子产品无法抛弃的羁绊。本期我们为大家介绍的技术将彻底剪断这个小尾巴。 袖珍接收 ...…

查看全部问答>

请教语句XBYTE

请教如下语句的理解 #define KC_PORT   XBYTE [0xb801]                  #define DISCR_ADD XBYTE [0xb002]              ...…

查看全部问答>

USB过滤驱动如何识别插入的设备是U盘还是移动硬盘?

最近才开始接触驱动程序,要做一个USB过滤驱动,其中需要识别U盘和移动硬盘并进行处理,其他的USB设备不做处理,请问大家应该怎么做?…

查看全部问答>

CVOImage从evc移植到vs2005报错,corelibc.lib(secchk.obj) : error LNK2019: 无法解析的外部符号 __se

最近从网上找了个CVOImage类的源码,想浏览bmp以外的其他格式图片,如png等。但源码是evc工程的,本人只装了vs2005,转换成vs2005工程后,编译报如下错误: 1>正在链接... 1>corelibc.lib(secchk.obj) : error LNK2019: 无法解析的外部符号 __sec ...…

查看全部问答>

STM32的VBAT电压的问题

                                 最近画原理图,用4.2V锂电池通过LDO给MCU供电,但是平时3.3V是没有的,我把4.2V接到VBAT脚会有问题吗,谢谢。…

查看全部问答>

请教用STC单片机做检测大电流电流表

检测大电流 需要用到电流互感器 但是对那个东西部熟悉 请教下该怎么接那个线路 包括用到运放的线路 毕竟大电流的涉及到安全问题 请教下各位大侠 该怎么做检测大电流的检测电路呢? 小弟跪谢啦!…

查看全部问答>

不容错过

本帖最后由 paulhyde 于 2014-9-15 09:05 编辑 硬件学习好帮手  …

查看全部问答>

关于lm3s811串口通信

打算将一个数组的数通过串口发送,处理后返回给pc,在例程基础上修改的,先试验的将接收到的数两两组合存入GetI那个数组中,于是编写的那一段 voidUARTIntHandler(void){    unsigned long ulStatus; unsigned char num;  ...…

查看全部问答>