基于嵌入式微处理器S3C44BOX的触摸屏接口设计
扫描二维码
随时随地手机看文章
摘 要: 介绍了触摸屏工作的基本原理,设计了基于S3C44BOX嵌入式微处理器的触摸屏硬件接口电路,研究了触摸屏程序的工作机制,在此基础上给出了其核心部分程序。
1 引言
触摸屏越来越广泛地应用于嵌入式系统中。
不同的应用领域触摸屏的设计方式也各不相同,一般有以下三种: ①应用触摸屏模块。触摸屏模块提供标准的硬件接口与应用系统(一般为PC 或X86架构的工控机) 相连,安装驱动程序后即可工作,基本无需开发; ②扩展触摸屏控制器。这是嵌入式系统中设计触摸屏普遍使用的方法。常用的触摸屏控制芯片有ADS7843 ,ADS7846 等。这些芯片内部集成了A/ D 转换器和触摸屏的驱动电路,同时要设计一定的软件; ③与前面方式②相仿,有些处理器集成了A/ D 转换器,通过I/ O 口模拟触摸屏的驱动信号也可实现触摸屏的控制。
随着芯片技术的发展,处理器内部的资源越来越丰富。如韩国三星半导体公司的32 位ARM处理器S3C44B0X 芯片,其内部集成了外部存储器控制器、LCD 控制器、4 个DMA 通道、2 通道异步UART 单元、1 个同步串行口(SIO) , 1 个多主I2C总线控制器、1 个I2S 总线控制器, 5 通道PWM 定时器及1 个内部定时器、71 个通用I/ O口、8 个外部中断源、实时时钟、8 通道10 位ADC等。由于其内部集成了10 位的A/ D 转换器,可以通过S3C44BOX 的I/ O 口模拟触摸屏的驱动信号实现触摸屏的控制。
2 触摸屏工作原理
电阻式触摸屏是一块4 层的透明的复合薄膜屏,如图1 所示,最下面是玻璃或有机玻璃构成的基层,最上面是一层外表面经过硬化处理从而光滑防刮的塑料层,中间是两层金属导电层,分别在基层之上和塑料层内表面,在两导电层之间有许多细小的透明隔离点把它们隔开。当手指触摸屏幕时,平常绝缘的两层导电层在触摸点位置就有了一个接触,触摸屏的两个金属导电层是触摸屏的两个工作面,在每个工作面的两端各涂有一条银胶,成为该工作面的一对电极,若在一个工作面的电极对上施加电压,则在该工作面上就会形成均匀连续的平行电压分布。如图2 所示,每个工作面有两个电极对,当在X 方向的电极对上施加一确定的电压,而Y 方向电极对上不加电压时,在X 平行电压场中,触点处的电压值可以在Y +(或Y2) 电极上反映出来,通过测量Y + 电极对地的电压大小,便可得知触点的X 坐标值。同理,当在Y电极对上加电压,而X 电极对上不加电压时,通过测量X + 电极的电压,便可得知触点的Y坐标。
图1 触摸屏的触摸示意图 图2 测量关系 3 S3C44BOX与触摸屏的接口电路 在该系统中没有使用专用的控制器,简而代之的是用了四个三极管(两个NPN 和两个PNP) ,外加一些偏流电阻、上拉电阻和滤波电容组成,如图3 所示,其中:TS_A ,TS_B ,TS_C和TS_D 分别由S3C44B0X 的GPC0 , GPC1 , GPC2 和GPC3 控制。X+ 和Y+ 分别连接到S3C44B0X的A/ D 转换输入接口AIN0 和AIN1 上。TS_A 和TS_C在X方向施加正向电压时,在Y方向检测到X坐标的对应值,同理,TS_B 和TS_D 在Y方向施加正向电压时,在X方向检测到Y坐标的对应值,分别由AIN0 和AIN1 采集。 图3 触摸屏的接口电路 为了减少系统功耗和触摸屏所占CPU 资源,只在有落笔时触摸屏控制器才启动扫描,通过A/D 转换得到坐标的对应值,因此需在外部设计落笔检测电路,如图4 所示。中断连在EXTINT2上,设置中断为上升沿触发,平时为低, 按下屏时变高产生中断。 图4 落笔检测电路 4 触摸屏的状态 在编写软件前, 要先对触摸屏的状态有所了解,在触摸屏的整个工作过程中,总共有3 个状态:空闲态、X 通道态和Y通道态。 在没有触摸的时候,触摸屏处于空闲态,此时,为了便于接收中断,应设置TS_A = 1 ,TS_B =1 ,TS_C = 0 和TS_D = 1.为了获得触点的X轴坐标,需要把触摸屏设置成X通道态,即TS_A= 0 ,TS_B = 1 ,TS_C = 1 和TS_D = 0.此时,通过测量Y + (AIN1) 获取X 通道上的坐标。 同理,为了获得触点的Y轴坐标,需要把触摸屏设置成Y通道态,即TS_A = 1 ,TS_B = 0 ,TS_C= 0 和TS_D = 1.此时,通过测量X+ (AIN0) 获取Y通道上的坐标。 5 系统的软件设计 整个系统软件包括触摸屏初始化、落笔中断服务程序,AD 测量子程序、滤波程序和坐标转换程序。当有触摸时, EXTINT2 变为高电平,产生中断。由S3C44B0X 响应该中断请求,进入落笔中断服务程序,在该程序中,启动AD 测量子程序,读取AD 转换结果,从而得到触点的坐标。整个过程,触摸屏在空闲态,X 通道态和Y 通道态之间转换,如图5 所示。 图5 触摸屏的状态转换 系统软件中,初始化程序、滤波程序和坐标转换程序是一般常规通用程序。AD 测量子程序是获得X 轴和Y轴坐标的关键部分,其程序如下: / / 获取当前的坐标 void TouchADC(uint16 3 x , uint16 3 y) { int i ; rADCPSR = 10 ; / / 切换为X 通道态准备A/ D 转换 Set TouchX() ; Delay(1000) ; { / / 启动AIN1 通道A/ D 转换 rADCCON = 0x1 | (1 < < 2) ; while (rADCCON & 0x1) ; while ( ! (rADCCON & 0x40) ) ; for (i = 0 ; i < rADCPSR ; i + + ) ; 3 x = rADCDAT ; } rADCPSR = 10 ; / / 切换为Y通道模式准备A/ D 转换 Set TouchY() ; / / 在X/ Y通道切换时要延时以使触摸屏稳定下来 Delay(1000) ; { / / 启动AIN0 通道A/ D 转换 rADCCON = 0x1| (0 < < 2) ; while (rADCCON & 0x1) ; while ( ! (rADCCON & 0x40) ) ; for (i = 0 ; i < rADCPSR ; i + + ) ; 3 y = rADCDAT ; } / / 切换为空闲态,等待中断发生 Set TouchIdle() ; / / 输出显示X ,Y坐标数值 Out Put (0 ,″(X ,Y) = ( %3d , %3d) n″, 3 x , 3 y) ; } 6 结语 触摸屏已成为现代嵌入式设备人机交互的首选输入设备。本文详细介绍了触摸屏的工作原理,以三星公司ARM7 内核芯片S3C44B0X 为基础,完成了触摸屏的软硬件设计,实践证明系统稳定可靠,满足了在复杂的多任务环境中触摸屏快速响应的要求。