当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于Linux系统的触摸屏驱动方案

引言

触摸屏作为一种输入设备,具有坚固耐用、反应速度快、节省空间、易于交流等优点,提供简单、方便、自然的人机交互方式,目前被广泛应用于工业控制、电子查询、消费性电产品领域。

Linux作为是目前最流行的操作系统之一,在桌面系统、服务器领域有大量用户,具有源代码开放,支持的硬件丰富、高可移植等优点,在嵌入式领域也备受青睐。Linux根据不同设备,将驱动程序分为字符设备驱动、块设备驱动、网络设备驱动三种,Linux输入子系统u是对字符类型输入设备驱动实现方式的抽象,是对分散的、多种不同类别的输入设备进行统一处理的内核驱动模型。输入子系统具高效、无Bug和可重用等优点。本文对基于Linux输入子系统的触摸屏驱动进行深入的讨论。

1  硬件平台

S3C2440是三星公司推出的采用ARM920t内核的MCU,集成了丰富的外围设备,其中包括4线电阻式触摸屏控制器和8通道多路复用ADC。

触摸屏由触摸检测部件和触摸屏控制器构成,对应S3C2440平台的四线电阻触摸屏的外接电路和S3C2440芯片自带的A/D转换控制部分。四线电阻触摸屏的外接电路控制上下两层导电层的通断情况以及如何取电压,取电压之后由S3C2440芯片中的A/D将模拟量转换成数字量。S3C2440芯片的A/D转换器有8个输入通道,转换结果为10bit数字,转换过程在芯片内部自动实现,转换的结果从寄存器中取值,再进行一定的转后可直接得到触摸点的坐标。S3C2440提供的ADC和触摸屏接口如图1所示,触摸屏直接与引脚XP,XM,YP和YM连接,对触摸屏两个导电层的通断通过XP,XM,YP和YM4个引脚控制。通过读写指定的特殊寄存器,S3C2440的触摸屏控制器将自动控制触摸屏接口打开或关闭,按指定操作模式完成触点数据的采集。

2  输入子系统体系结构简介

设备驱动程序在Linux内核中占很重要地位,设备驱动以内核模块方式实现,可动态加载和卸载。Linux设备驱动的实现只需根据内核提供的一组相关数据结构和驱动接口标准,完成关键数据结构初始化和回调函数的编写。对字符设备驱动内核提供cdev数据结构和file_operatiONs结构体及操作方法,实现字符设备驱动只需完成cdev的初始化、file_operations中操作函数的实现并向内核注册。

Linux输入子系统是对物理形态各异的功能相似的输入设备的抽象,是内核中字符设备驱动接口的封装。输入子系统由设备驱动层、核心层和事件处理层构成。设备驱动层提供对硬件各寄存器的读写访问和将底层硬件对用户输入访问的响应转换为标准的输入事件,通过核心层提交给事件处理层;核心层对设备驱动层提供编程接口,对事件处理层的也提供编程接口;事件处理层为用户空间的应用程序提供了统一访问设备的接口和驱动层提交来的事件处理。基于输入子系统设计驱动时要实现设备驱动层的驱动和事件处理层的驱动,而输入子系统在事件处理层为触摸屏提供标准的事件接口,所以只要须完成设备驱动层的驱动,即硬件寄存器的操作和提交输入事件信息。基于输入子系统的设备驱动层驱动的实现过程如下:

1)驱动模块加载函数中设置输入设备支持输入子系统的事件;Linux内核用input_dev代表一个输入设备,对于触摸屏通过对input_dev实例的evbit[0]的设置来支持同步(EN_SYN)、按键(EN_KEY)和绝对坐标(EV_ABS)事件。

2)通过内核提供的input_regiSTer_device0函数向输入子系统注册输入设备。

3)输入设备发生输入操作时提交所发生的事件及对应键值或坐标等状态信息。触摸屏使用输入子系统提供的通用输入事件驱动程序Evdev,将事件信息打包成Input_event类型进行报告。

3  Linux触摸屏驱动的实现

3.1 触摸屏触点数据采集

S3C2440触摸屏控制器有四种工作模式,通过读写ADCTSC、ADCDA、ADCDATl和ADCDLY寄存器完成触摸屏控制器工作模式的选择和触摸屏触点数据采集。由于触摸动作时间的随机性,驱动设计时选择中断工作方式。设置ADCTSC寄存器为0xD3使触摸屏控制器进入等待中断模式,设置ADCDLY采样延迟时间。当触摸屏被按下,触摸屏控制器将产生INT_TC中断:在ⅡTC中断处理程序中,设置ADCTSC寄存器为0x0C,触摸屏控制器切换为自动X/Y坐标转换模式,将自动转换触点对应的x,y坐标值,并分别写入ADCDAT0寄存器和ADCDTA1寄存器,发出INTADC中断表示ADC转换完成;进入INT_ADC中断处理程序读取ADCDAT0寄存器和ADCDTA1寄存器中坐标数据并进行相应转换,数据采集后重新设置ADCTSC寄存器为0xD3使触摸屏控制器进入等待中断模式,等待触摸屏被按下。

3.2 驱动初始化模块

Linux驱动程序以内核模块方式加载运行。实现驱动加载函数s3c2440ts_init()并通过module_init(s3c2440ts_init)向内核注册。在驱动加载函数主要完成:启用ADC所需要的时钟、映射10地址、初始化ADC和触摸屏控制器相关的寄存器、申请INT_TS和INT_ADC中断、初始化输入设备、将输入设备注册到输入子系统。关键代码如下:

[!--empirenews.page--]

3.3 中断处理程序及事件报告

用户对触摸屏进行按下、抬起和拖动等操作时,触发中断INT_TS,内核进入到中断处理函数tc_irq0进行中断处理。tcirq0中,通过ADC—LOCK锁机制保证只有一个驱动程序使用ADC的中断线,通过读取ADCDAT0和ADCDAT1寄存器,判断触摸操作的状态,触摸笔按下时调用ts_timer_fireO进行数据转换。当数据转换完成时产进INT_ADC中断,内核进入中断处理函数adc—irqO,adc_irq()完成触点信息采集并调用ts_timer_fire()进行事件报告。事件报告流程如图2所示。

ts_timer_fire0是主要完成触点坐标信息向应用层报告。updown、count为静态全局变量,updown触点状态,count代表1个jiffies时间内ADC转换的次数,count为0,设置自动X/Y轴坐标转换模式,转换完成后产生相应的INT_ADC中断通知转换完毕。count不为0,input_report_abs()函数向输入子系统报告X,Y绝对坐标事件,inputreport_key()触摸屏对应按键被按下事件,输入子系统使用inputsync()将报告的事件组成一个evdev包,通过/dev/input/eventX发送出去,应用程序通过读取/dev/input/eventX即可获得事件信息。关键代码如下:

4  结论

随着信息技术的快速发展,嵌入式技术与人们的生活越来越紧密,触摸屏作为一种新型输入设备因具有轻便、占用空间少、方便灵活等优点,应用逐渐普及,甚至在工业领域也得到了大量的应用,提高了我国工控自动化的水平。要充分发挥触摸屏的优点,嵌入式中驱动设计至关重要。嵌入式Linux中基于输入子系统实现触摸屏驱动时,利用了Linux输入子系统提供标准事件接口,简化了驱动设计,驱动设计的重点变成了触摸屏控制器相关的硬件操作及功能实现,充分体现Linux内核代码的高可重性,对其他类型输入设备驱动程序的设计有一定参考作用。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

基于ABB机器人生产线 ,设计了一种西门子PLC自保护智能控制系统 。该系统采用HK-FKGD40无线手持报警器 , 受机器人挤压时人员通过该报警器便可触发机器人智能判断 、自动回退运动实现自我解救 , 同时系统发出声光...

关键字: 无线手持报警器 自保护;智能 PLC ABB机器人 触摸屏

在科技飞速发展的当下,智能设备已深度融入人们的生活与工作。其中,PDA(Personal Digital Assistant,个人数字助理)作为一款集信息输入、存储、管理和传递于一体,且具备办公、娱乐、移动通信等多种功能...

关键字: 智能设备 触摸屏 微控制器

上海 2025年6月18日 /美通社/ -- 2025年6月18日,第九届国际氢能与燃料电池汽车大会暨展览会(FCVC 2025)在上海汽车会展中心盛大开幕。威孚集团全面展示了其在氢能产业链三大核心领域——燃料电池核心...

关键字: 高压 零部件 BSP 子系统

苏州 2025年5月27日 /美通社/ -- 5月24日-26日,第26届全国医院建设大会暨国际医院建设、装备及管理展览会(CHCC 2025)在武汉举行。艺卓(EIZO)携手术室视觉显示解决方案参展,以科技...

关键字: HC 医学影像 IO 触摸屏

随着手工酿造的普及和复杂程度的不断提高,许多酿酒师——尤其是小规模或独立的酿酒师——仍然依靠手工方法来记录和跟踪关键数据,如温度、pH值、体积和比重。这些读数通常使用手动仪器,记录在纸上或分散在电子表格和文档中,没有集中...

关键字: 触摸屏 物联网 DS18B20 传感器

随着嵌入式系统的广泛应用,触摸屏作为人机交互的重要接口,其驱动开发变得愈发重要。本文将详细介绍在嵌入式Linux环境下,触摸屏驱动的开发流程,从设备树的配置到校准算法的实现,为读者提供一个全面的开发指南。

关键字: 嵌入式Linux 触摸屏 校准算法 设备树

将您的树莓派Pico变成带有触摸屏界面的USB-HID设备!在这个项目中,我们将在Arduino IDE中设置编程环境,为3.5”Pico Touch LCD屏蔽配置库,测试基本功能,创建简单的按钮(用于复制和粘贴),显...

关键字: 树莓派 触摸屏 LCD Windows

ADS7846是美国Burr-Brown公司推出的新一代4线制触摸屏控制器,当与触摸屏连用,只要笔或手指点触摸在屏上时,即可迅速得到该点的位置信号以达到在触摸屏表面寻址的目的。

关键字: ADS7846 触摸屏

‌激光治疗仪触摸屏接口设计‌主要包括触摸屏的工作原理、控制器工作原理以及在激光治疗仪中的应用。

关键字: 触摸屏 激光治疗仪

中国深圳 – TITAN Haptics泰坦触觉宣布推出DRAKE LFi触觉马达,旨在满足中国电子市场不断增长的需求。DRAKE LFi专为需要触觉反馈的设备设计,例如触摸屏和触觉按钮。这款新型触觉马达能够提供精准的局...

关键字: 消费电子 触摸屏 可穿戴设备
关闭