一款基于嵌入式技术的智能仪器触摸屏接口设计

发布时间:2015-06-2 阅读量:1249 来源: 我爱方案网 作者:

【导读】我爱方案网小编为大家介绍一款基于嵌入式技术的智能仪器触摸屏接口设计作者在开发面向机械故障诊断的智能仪表过程中, 对触摸屏输入接口进行了研究。设计了四线电阻式触摸屏与PXA255 处理器的接口电路, 分析了Linux框架下的字符设备驱动程序设计原理, 完成了触摸屏的接口驱动程序开发, 并设计了用触摸屏作为输入设备的MiniGU I用户程序。

在现代化生产中, 为了确保机械设备安全可靠地运行, 通常要采用适宜的仪器仪表, 利用故障诊断技术及时发现故障, 并采取合理的维修或保护措施来排除故障, 预防和避免事故的发生。基于对仪器尺寸、便携性和操作方便性的考虑, 在工业领域如煤炭、钢铁、冶金、电力、化工等行业中大量的仪器仪表和设备, 都逐渐选用触摸屏作为系统的输入设备。

针对这一情况, 作者在开发面向机械故障诊断的智能仪表过程中, 对触摸屏输入接口进行了研究。设计了四线电阻式触摸屏与PXA255 处理器的接口电路, 分析了Linux框架下的字符设备驱动程序设计原理, 完成了触摸屏的接口驱动程序开发, 并设计了用触摸屏作为输入设备的MiniGU I用户程序。触摸屏作为仪器的输入设备, 人机交互直截了当, 大大方便了现场操作人员的使用。

1  硬件结构和工作原理

依据工作原理和传输介质的不同, 触摸屏主要分电阻式、电容式、红外线式以及表面声波式等多种类型。电阻式触摸屏是一块4层透明的复合薄膜屏,如图1所示。下面是玻璃或有机玻璃构成的基层; 上面是一层外表面经过硬化处理从而光滑防刮的塑料层; 中间是两层金属导电层, 在导电层之间有许多细小的透明隔离点把两层隔开。两个金属导电层是触摸屏的工作面, 其两端各涂有一条银胶, 称为触摸屏工作面的一对电极。四线式触摸屏的X 工作面和Y 工作面分别加在两个导电层上, 共有4根引出线, 分别连到触摸屏的X 电极对和Y 电极对上。在触笔触摸屏幕时, 两导电层在接触点处接触。电阻式触摸屏作为输入设备与显示屏配合使用时, 其工作的实质就是通过测量X、Y两个方向电阻的分压, 确定触摸屏的触点坐标, 并将该坐标映射到显示屏坐标上, 从而实现人机交互。由于电阻式触摸屏工作面与外界完全隔离, 受环境影响小, 所以具有不怕灰尘和水汽、稳定性高、不漂移等优点, 特别适合工业现场使用。
一款基于嵌入式技术的智能仪器触摸屏接口设计
图1 电阻式触摸屏结构
在设计过程中, 选用ADS7843 作为触摸屏接口的AD转换芯片,它具有12 位的转换精度, 最大支持4 096 ×4 096点阵的LCD, 满足仪器设计要求。

仪器系统处理器选用Intel Xscale架构的PXA255处理器,用其GPIO口模拟SPI接口与ads7843进行通信。其接口原理如图2所示。ADS7843完成采集通道的切换和接触点处电压的采集, 其操作时序主要由控制字输入、电压采集和模数转换组成, 详见参考文献。只要在驱动程序中根据时序要求向D IN口发送控制字, 即可从DOUT处得到相应通道的采集结果。
一款基于嵌入式技术的智能仪器触摸屏接口设计
图2 ADS7843与PXA255的接口电路

2  触摸屏接口驱动程序

Linux驱动程序是系统内核的一部分, 它把软件和硬件分离开来, 并向上提供应用程序访问硬件的通信接口, 向下管理保护系统硬件。触摸屏在Linux下被定义为字符设备, 其驱动主要完成触点电压的采集, 并向用户空间传递X 坐标、Y坐标和笔动作(按下、抬起或拖拽) 数据。当触笔按下时, ADS7843的11脚输出低电平, 触发PXA255通用IO口的12脚产生外部中断, 开启定时器, 实现触摸屏的动作。触摸屏的驱动流程如图3所示。
一款基于嵌入式技术的智能仪器触摸屏接口设计
图3 触摸屏驱动程序结构流程

2.1 驱动的编写


触摸屏驱动在Linux框架下属于字符设备驱动。

驱动的入口函数为ads7843 _ ts_ init ( ) , 在该函数中,初始化I/O口, 注册笔中断和设备节点, 完成设备文件系统创建标准字符设备的初始化工作[ 8 - 10 ].触摸屏设备操作的结构通过ads7843_ts_fop s定义。

static struct file_operations ads7843_ts_fop s = {
read: ads7843_ts_read,
poll: ads7843_ts_poll,
ioctl: ads7843_ts_ioctl,
fasync: ads7843_ts_fasync,
open: ads7843_ts_open,
release: ads7843_ts_release,
};

这样, 只需根据实际需要正确定义该结构中的几个函数过程, 就可完成设备驱动的开发。
当触摸屏设备被打开时, 首先执行到ads7843_ts_open ( )函数, 并在该函数中, 初始化一个缓冲区, 用于存储坐标数据。在触摸屏被按下后, 系统首先触发中断, 在ads7843_ts_interrup t ( )中断程序中, 判断in_timehandle全局变量的状态, in_ timehandle在定时器函数中被改变, 也就是说进入中断后, 先经过定时器延时20ms, 完成触摸屏的软件去抖, 再判断触摸屏是否被按下。然后通过read_xy ( )函数分别切换至X和Y 通道, 完成触点电压的AD转换, 并读取12 位坐标值。

static void ads7843_ ts_ interrup t ( int irq, void 3 dev_ id,struct p t_regs3 regs){sp in_lock_irq (&tsdevlock) ;if ( in_timehandle > 0){sp in_unlock_irq (&tsdevlock) ;return;}disable_irq ( IRQ_GPIO_ADS7843) ;ads7843_ts_starttimer ( ) ;sp in_unlock_irq (&tsdevlock) ;}

应用程序调用read ( ) 函数时, 进入驱动的ads7843_ts_read ( )接口函数。在该接口函数中获取采样结果, 判断是否要对坐标进行校准, 将最终结果写入到缓冲区中, 并通过copy_to_user ( )函数将其从内核空间复制到用户空间, 以使应用程序能够使用。在ads7843_ts_read ( )函数中采用了非阻塞型操作, 使得在没有数据到达的时候立即返回, 然后用异步触发fasync ( )来通知数据的到来。ads7843 _ ts_poll ( )函数用于驱动程序的非阻塞操作, ads7843_ts_fasync ( )函数用于驱动异步触发。ads7843_ts_ioctl ( )函数中, 提供了可从用户态控制的参数, 如触摸屏是否在驱动中校准、屏幕的最大最小坐标值等。ads7843_ts_release( )函数用来关闭触摸屏设备。

2.2 触摸屏的校准

在仪器开发过程中,触摸屏作为输入设备与LCD配合使用。为了能使从触摸屏采样得到坐标与屏幕的显示坐标对应, 还需要做一个映射, 也就是要对触摸屏进行校准。如图4所示, 所用的触摸屏和液晶屏都是标准的矩形, 只要安装合理, 可以认为触摸屏的X 方向坐标只与显示屏X 方向相关, Y方向坐标只与显示屏的Y方向相关。假设显示屏的分辨率是W ×H, 显示区域的左上角对应的触摸屏采样坐标是( x1 , y1 ) ,右下角对应的坐标是( x2 , y2 ) , 那么触摸屏上任意一点采样坐标( x, y) 与显示屏坐标( xd , yd ) 的对应关系可以按照如下公式计算:
一款基于嵌入式技术的智能仪器触摸屏接口设计
这样, 在测得( x1 , y1 ) 和( x2 , y2 ) 点触摸屏的采样值后, 利用上述公式编制校准函数, 在触摸屏工作的过程中, 计算出实际触摸点对应的显示坐标,完成触摸屏的校准。
图4 触摸屏的校准

3  触摸屏用户应用程序

创建的Linux设备文件系统触摸屏节点为/dev/ts.在应用程序中, 可以像打开文件一样用open函数打开设备文件, 然后用read ( )函数读取由驱动传递到用户空间的数据。仪器应用程序的开发采用MiniGU I进行, MiniGU I是由北京飞漫公司开发, 可应用于实时嵌入式系统中的轻量级图形用户界面支持系统。其函数接口与Windows SDK类似, 开发方便。

MiniGU I的输入抽象层( IAL: Input Abstract Layer)提供了对触摸屏、鼠标等输入设备的丰富支持, 并支持PXA255处理器平台。只要经过简单的设置就可以在应用程序中使用触摸屏。配置安装MiniGU I时, 使用22enable2px255bial项, 由于在安装MiniGU I时采用了内嵌资源的静态编译方式, 所以在编译之前, 需在MiniGU I的src / sysres/目录下建立mgetc2pxa1c 文件,并在其中用下面语句设置系统参数, 将触摸屏设为输入设备。
static char * SYSTEM_VALUES[ ] = { " fbcon" ," PX255B" , " /dev/ ts" , " none" };
MiniGU I对触摸屏输入的处理方式如图5 所示。
一款基于嵌入式技术的智能仪器触摸屏接口设计
图5 MiniGU I中的触摸屏输入

MiniGU I通过触摸屏设备驱动程序接收原始的输入数据, 把它转换为MiniGU I抽象的触摸屏事件和数据。
相关的底层事件处理例程把这些触摸事件转换为上层的触摸消息, 放到相应的消息队列中。应用程序通过消息循环获取这些消息, 交由窗口过程处理。编制针对触摸屏的应用程序时, 需要做的只是在窗口接收到诸如MSG _LBUTTONDOWN 等触屏消息时, 调用相应的语句完成预期操作。

嵌入式智能仪器触摸屏接口增强了仪器系统的人机交互功能, 方便了操作人员的使用; 接口电路和驱动程序的模块化方便了仪器的后续改进和新产品的开发, 并可根据需要移植应用到各种不同场合。设计的触摸屏接口已经成功应用在故障诊断巡检仪器中, 其工作稳定, 运行可靠, 具有很好的实用价值。

相关文章


一种基于嵌入式PC的PIII计算机系统设计与实现

一种基于嵌入式Linux与QT的汽车虚拟仪表设计

收集完这几大技巧,入门开发高可靠性嵌入式系统
相关资讯
半导体产业升级战:三星电子新一代1c DRAM量产布局解析

在全球半导体产业加速迭代的背景下,三星电子日前披露了其第六代10纳米级DRAM(1c DRAM)的产能规划方案。根据产业研究机构TechInsights于2023年8月22日发布的行业简报,这家韩国科技巨头正在同步推进华城厂区和平泽P4基地的设备升级工作,预计将于2023年第四季度形成规模化量产能力。这项技术的突破不仅标志着存储芯片制程进入新纪元,更将直接影响下一代高带宽存储器(HBM4)的市场格局。

蓝牙信道探测技术落地:MOKO联手Nordic破解室内定位三大痛点

全球领先的物联网设备制造商MOKO SMART近期推出基于Nordic Semiconductor新一代nRF54L15 SoC的L03蓝牙6.0信标,标志着低功耗蓝牙(BLE)定位技术进入高精度、长续航的新阶段。该方案集成蓝牙信道探测(Channel Sounding)、多协议兼容性与超低功耗设计,覆盖室内外复杂场景,定位误差率较传统方案降低60%以上,同时续航能力突破10年,为智慧城市、工业4.0等场景提供基础设施支持。

财报季再现黑天鹅!ADI营收超预期为何股价暴跌5%?

半导体行业风向标企业亚德诺(ADI)最新财报引发市场深度博弈。尽管公司第三财季营收预期上修至27.5亿美元,显著超出市场共识,但受关税政策驱动的汽车电子产品需求透支风险显露,致使股价单日重挫5%。这一背离现象揭示了当前半导体产业面临的复杂生态:在供应链重构与政策扰动交织下,短期业绩爆发与长期可持续增长之间的矛盾日益凸显。

全球可穿戴腕带市场首季激增13%,生态服务成决胜关键

根据国际权威市场研究机构Canalys于5月23日发布的调研报告,2025年第一季度全球可穿戴腕带设备市场呈现显著增长态势,总出货量达到4660万台,较去年同期增长13%。这一数据表明,消费者对健康监测、运动管理及智能互联设备的需求持续升温,行业竞争格局亦同步加速重构。

RP2350 vs STM32H7:性能翻倍,成本减半的MCU革新之战

2025年5月23日,全球领先的半导体与电子元器件代理商贸泽电子(Mouser Electronics)宣布,正式开售Raspberry Pi新一代RP2350微控制器。作为RP2040的迭代升级产品,RP2350凭借双核异构架构(Arm Cortex-M33 + RISC-V)、硬件级安全防护及工业级性价比,重新定义了中高端嵌入式开发场景的技术边界。该芯片通过多架构动态切换、可编程I/O扩展及4MB片上存储等创新设计,解决了传统微控制器在实时响应能力、跨生态兼容性与安全成本矛盾上的核心痛点,为工业自动化、消费电子及边缘AI设备提供了更具竞争力的底层硬件方案。