DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 335|回复: 0
打印 上一主题 下一主题

嵌入式微处理器ARM7202触摸屏接口设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 19:26:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  
         
    摘要:论文介绍了基于ARM7202(HMS30C7202)嵌入式系统触摸屏工作的基本原理及其硬件接口电路,研究了触摸屏驱动程序的工作机制,给出了其工作流程及其在实时操作系统uc/OS下的中断服务程序。满足了复杂的实时多任务环境中触摸屏快速响应的要求。
关键词:触摸屏,ARM7202,接口电路,驱动程序
1 引言
    嵌入式系统中触摸屏越来越广泛地应用。不同的应用领域触摸屏的设计方式也各不相同,一般有以下三种:⑴应用触摸屏模块。触摸屏模块提供标准的硬件接口与应用系统(一般为PC或X86架构的工控机)相连,安装驱动程序后即可工作,基本无需开发;⑵扩展触摸屏控制器。这是嵌入式系统中设计触摸屏普遍使用的方法,常用的触摸屏控制芯片有ADS7843、ADS7846等,这些芯片内部集成了A/D转换器和触摸屏的驱动电路,同时要设计一定的软件;⑶与前面方式⑵相仿,有些处理器集成了A/D转换器,通过IO口模拟触摸屏的驱动信号也可实现触摸屏的控制。
    随着芯片技术的发展,处理器内部集成的资源越来越丰富,有些芯片内部已经集成了触摸屏控制器。如韩国现代半导体公司的32位ARM处理器ARM7202(HMS30C7202)芯片,其内部集成了电阻式触摸屏控制器。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组转换值,可以设计一个滤波程序以提高检测精度。
4 程序设计
    触摸屏的应用程序模块有:触摸屏初始化、落笔中断服务程序、A/D中断服务程序、滤波程序和坐标转换程序。初始化程序、滤波程序和坐标转换程序是一般常规通用程序。触摸屏驱动程序其核心是落笔中断和A/D转换这两个中断服务程序,以下是在uc/OS操作系统下触摸屏驱动程序的两个中断服务程序,其详细说明见注释。
static void TouchPenDownISR(int level)         //落笔中断服务程序
{
unsigned int status;
status=*(volatile int *)PioCIS&0xfff;
if (status & 0x80 )
{
  *(volatile int *)PioCIC|=0x80;        //清落笔中断
  *(volatile int *)PioCIM&="0x80;     //关落笔中断
  *(volatile int *)PioCDR&="0x100;    //使落笔中断检测无效,触摸屏扫描电路有效
  *(volatile int*)ADCCR&="0x80;      //开A/D电源   
  *(volatile int*)ADCTPCR|=0x80|0x40;  //触摸屏读有效,A/D中断有效
}  
}
static void TouchINIISR(int level)              //触摸屏A/D转换中断服务程序
{
int x[4];
int y[4];
*adcisr |= 0x80;                        //清触摸屏A/D中断
TouchSample(x,y);                      //得到X/Y方向数值
*(volatile int*)ADCTPCR&="(0x80|0x40);  //触摸屏读无效,触摸屏A/D中断无效
*(volatile int *)PioCDR|=0x100;         //使落笔中断检测有效,触摸屏扫描电路无效
if(*(volatile int *)PioCDR&0x80)         //检测到起笔
{
   *(volatile int *)PioCIC|=0x80;          //清落笔中断   
   *(volatile int *)PioCIM|=0x80;          //开落笔中断
   *(volatile int *)ADCCR|=0x80;          //关A/D电源
   *(volatile int*)ADCTPCR&="(0x80|0x40);  //触摸屏读无效,触摸屏A/D中断无效
}
else                                      //如仍有落笔   
{
   *(volatile int *)PioCDR&="0x100;   //使落笔中断检测无效,触摸屏扫描电路有效
   *(volatile int *)ADCTPCR|=0x80|0x40;     //触摸屏读有效,触摸屏A/D中断有效
}
}
5 结束语
    根据上述对触摸屏工作机制的分析,笔者在实时嵌入式操作系统uc/OS下编写的触摸屏驱动程序应用于基于ARM7202的智能控制器,实践证明系统稳定可靠,满足了在复杂的实时多任务环境中触摸屏快速响应的要求。
参考文献
[1] Hynix Semiconductor,HMS30C7202_datasheet_ver1.3_A13,2003.
[2] Carlos E. Vidales, 一种校准触摸屏-显示屏之间点与点对应关系的算法. http://www.eetchina.c

         
          [/td]
        [/tr]
      
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-29 22:20 , 耗时 0.089842 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表