最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

基于TQ2440和Linux的触摸屏的驱动研究

来源:动视网 责编:小OO 时间:2025-10-02 18:44:55
文档

基于TQ2440和Linux的触摸屏的驱动研究

随着信息查询技术的发展,触摸屏因具有坚固耐用、反应速度快、节省空间、易于交流等优点,而得到了广泛应用[1]。触摸屏作为一种新兴的电脑输入设备,是目前最简单、方便的一种人机交互设备。1硬件简介1.1TQ2440开发板简介天嵌公司生产的TQ2440开发板,微处理器采用SamsungS3C2440AL,板载MBSDRAM、256MBNandFlash、2MBNorFlash,板载5线异步串行口(UART0)、100Mb/sDM9000网卡、USBHOST接口、USBDevice接口和一个SD卡接
推荐度:
导读随着信息查询技术的发展,触摸屏因具有坚固耐用、反应速度快、节省空间、易于交流等优点,而得到了广泛应用[1]。触摸屏作为一种新兴的电脑输入设备,是目前最简单、方便的一种人机交互设备。1硬件简介1.1TQ2440开发板简介天嵌公司生产的TQ2440开发板,微处理器采用SamsungS3C2440AL,板载MBSDRAM、256MBNandFlash、2MBNorFlash,板载5线异步串行口(UART0)、100Mb/sDM9000网卡、USBHOST接口、USBDevice接口和一个SD卡接
随着信息查询技术的发展,触摸屏因具有坚固耐用、反应速度快、节省空间、易于交流等优点,而得到了广泛应用[1]。触摸屏作为一种新兴的电脑输入设备,是目前最简单、方便的一种人机交互设备。

1硬件简介

1.1TQ2440开发板简介

天嵌公司生产的TQ2440开发板,微处理器采用Samsung S3C2440AL,板载MB SDRAM、256MB Nand Flash、2MB Nor Flash,板载5线异步串行口(UART0)、100Mb/s DM9000网卡、USB HOST接口、USB Device接口和一个SD 卡接口,集成了4线电阻式触摸屏接口和JTAG接口等,音频接口采用芯片UDA1341,立体声音频输出,可录音。

1.2S3C2440处理器简介

S3C2440是由三星公司推出的16/32bit RISC微处理器,最高主频可达533MHz,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。处理器内部集成SDRAM控制器、LCD控制器、4通道DMA、3通道UART、I2C总线、I2S总线、SD接口、PWMtimer、触摸屏接口、8通道10bit A/D控制器和camera接口等,很便于一般开发。

1.3触摸屏

按照触摸屏的工作原理和传输信息的介质一般可分为4种,分别为电阻式、红外线式、电容感应式以及表面声波式。本次设计采用的是东华3.5英寸触摸屏,为4线电阻式触摸屏。具体参数为:型号:WXCAT35-TG3#001F;尺寸:103mm×83mm;显示面积:70.08mm (H)×52.56mm(V);显示颜色:16.7兆色分辨率;对比度:300:1;亮度:320cd/m2;电源:5V电压供电。

电阻式触摸屏利用压力感应进行控制,由触摸检测部件和触摸屏控制器组成。触摸检测部件安装在显示器屏幕前面,用于检测用户触摸位置,并将触摸位置信息送到触摸屏控制器;触摸屏控制器的主要作用是从触摸点检测装置上接收触摸信息,并将它转换成触点坐标,再送给CPU,它同时能接收来自CPU的命令并加以执行。触摸屏的屏体部分是一块与显示器表面非常配合的多层复合薄膜,由一层玻璃或有机玻璃作为基层,表面涂有一层透明的导电层氧化铟(OTI),上面再覆盖有一层外表面硬化处理、光滑防刮的塑料层,它的内表面也

基于TQ2440和Linux的触摸屏的驱动研究

印盼,赵建军,袁宏攀

(昆明理工大学理学院,云南昆明650093)

摘要:嵌入式技术在工业和日常生活中变得越来越普及,触摸屏作为交互终端已经逐渐取代键盘成为嵌入式系统的输入设备。使用TQ2440开发板,通过对嵌入式Linux内核中触摸屏驱动的研究,编写和移植了触摸屏的驱动程序,校准之后触摸屏可以正常使用。

关键词:TQ2440;Linux;触摸屏;驱动

中图分类号:TP316文献标识码:B文章编号:1674-7720(2011)02-0075-04

Driver study and use of touch screen based on TQ2440and Linux

Yin Pan,Zhao Jianjun,Yuan Hongpan

(College of Science,Kunming University of Science and Technology,Kunming650093,China)

Abstract:With the development of information,intelligence and network,embedded technology is becoming increasingly popu-lar in the field of electronic industry as well as daily life.As the medium for the terminal-user interaction,the touch screen has gradually replaced keyboard to be the inputting equipment in the embedded system.In this experiment,using the TQ2440board,driver of touch screen in Linux kernel is introduced briefly,write and transplant the touch screen driver,touch screen can be used after calibrating.

Key words:TQ2440;Linux;touch screen;driver涂有一层OTI,在两层导电层之间有许多细小(小于1/1 000)的透明隔离点把它们隔开绝缘。当手指接触屏幕时,两层OTI导电层将出现一个接触点,因其中一面导电层接通Y轴方向的5V均匀电压场,使得侦测层的电压由零变为非零,控制器侦测到这个接通数据后,进行A/D转换,并将得到的电压值与5V相比较,即可得出触摸点的Y轴坐标。同理可得出X轴的坐标。

S3C2440的触摸屏接口包括触摸触点控制逻辑和有中断产生逻辑的ADC接口逻辑,可以控制或选择触摸屏触点用于XY坐标的转换。触摸屏接口为了完成相应的工作,具有4种工作模式[2]:

(1)正常转换模式:此模式与通用的AD转换模式相似,可以在ADCCON(ADC控制寄存器)中设置,在ADC-DAT0(ADC数据寄存器0)中完成数据读写。

(2)X/Y坐标各自转换:触摸屏控制器支持两种转换模式,X/Y坐标各自转换与X/Y坐标自动转换。各自转换是在X模式下,将X坐标写入ADCDAT0后产生中断;在Y模式下,将Y坐标写入ADCDAT1后产生中断。

(3)X/Y坐标自动转换:在此模式下,触摸屏控制器先后转换触摸点的X坐标与Y坐标。当X坐标与Y坐标都转换完成时,中断控制器产生中断。

(4)等待中断模式:当触摸笔按下时,触摸屏产生中断(INT_TC)。等待中断模式必须将寄存器rADCTSC设置为0xd3;在触摸屏控制器产生中断以后,必须将此模式清除。

如果GCLK是50MHz且预分频器的分频值设置为49MHz,10bit的转换时间按下式计算:

A/D转换频率=50MHz/(49+1)MHz=1MHz

转换时间=1/(1MHz/5个周期)=1/200kHz=5μs,可见转换时间很短。

2触摸屏驱动程序

2.1建立嵌入式Linux系统开发环境

建立此开发环境的步骤为:

(1)在Windows XP SP3系统下安装虚拟机vmware5.5.3,在虚拟机里安装Redhat9.0系统。在Redhat9.0系统下编译开发板所需的镜像和文件,使用虚拟机工具实现了Windows和Redhat的文件共享,在Windows系统下可以直接下载镜像和文件到开发板上。

(2)使用Windows XP SP3自带的超级终端,并使用串口线连接PC和开发板。这样就可以在PC上对开发板进行相关的操作。

(3)本次实验开发板使用的是Linux2.6.30.4内核,而Redhat9.0系统是2.4.20.8内核,所以需要下载适合开发板的编译器。下载最新版本的支持EABI技术的交叉编译器(本次实验使用的是EABI_4.3.3_2009版本),复制到Redhat9.0系统目录/opt/EABI_4.3.3_2009/下,打开系统文件/etc/profile(可在终端使用命令vim/etc/profile),添加相应语句(本次实验使用vim命令打开profile文件,在第20行添加语句pathmunge/opt/EABI_4.3.3_2009/4.3.3/ bin)让编译器生效,这样就可以在PC上交叉编译开发板所需要的文件。至此开发环境已经建立。

2.2Linux内核的移植

本次实验使用的boatload是天嵌公司自己开发的u-boot,用J-TAG烧写方式写入NOR Flash,然后便可以使用u-boot自带的USB下载(需要在Windows下安装USB下载驱动程序)功能下载开发板上需要的Linux内核镜像了,这样方便而且高效。下载Linux2.6.30.4内核源代码,复制到Redhat9.0系统目录/opt下,并解压。在目录/opt/linux2.6.30.4/目录下便可以进行修改和编译开发板上需要的内核镜像。在移植触摸屏驱动之前,需要移植板载256MB NAND Flash的驱动、yaffs文件系统,这样便完善了串口驱动程序,最后移植LCD屏的驱动。

2.3触摸屏驱动程序

Linux系统将存储器和外设分为字符设备、块设备、网络设备三大类。触摸屏属于字符设备,以串行顺序依次进行访问。在Linux系统中,以文件名的形式在/dev目录下建立触摸屏设备文件,应用程序可以通过系统调用函数open()打开此文件,建立起与设备的连接,然后通过函数read()、write()、release()、ioctl()等常规的文件操作对目标设备进行操作。Linux为了把所有的设备当作文件系统进行管理,为所有的文件及设备文件定义了统一的操作函数接口file_operations,每个文件都通过指向file_operations结构的指针字段与它自己的函数集相关联。file_operations中成员为一系列指向各操作函数的指针,这些操作函数主要负责系统调用的实现,不同类型的设备文件系统有不同类型的file_operations结构[4]。触摸屏的file_operations结构定义为:

static struct file_operation s3c2410_fops=

{

owner:THIS_MODULE,

open:s3c2410_ts_open,//打开

read:s3c2410_ts_read,//读坐标

release:

s3c2410_ts_release,

#ifdef USE_ASYNC

Fasync:s3c2410_ts_fasync,//fasync()函数#endif

poll:s3c2410_ts_poll,//轮询}

结构中s3c2410_ts_open函数为file_operations中函数指针open所指向的函数,即打开触摸屏设备时open操作即为调用s3c2410_ts_open函数,完成触摸屏初始状态参数的设置、消息队列初始化等。read所指向s3c2410_ts_ read函数主要是向消息队列提供触摸屏坐标采集数据,以供应用程序调用。s3c2410_ts_poll为查询设备的可读写状态,s3c2410_ts_release则在释放设备时调用。

在触摸屏驱动程序中定义了一组宏,用于控制触摸屏和ADC进入不同的工作模式,如等待中断、X/Y位置转换等。定义了触摸屏结构体TS_DEV包含一个缓冲区、自旋锁、等待队列和fasync_struct指针,结构为:typedef struct

{

unsigned int penStatus;

TS_RET buf[MAX_TS_BUF];/*缓冲区*/

unsigned int head,tail;/*缓冲区头和尾*/

wait_queue_head_t wq;/*等待队列*/

spinlock_t lock;

#ifdef USE_ASYNC

struct fasync_struct*aq;

#endif

struct cdev cdev;

}TS_DEV;

触摸屏结构体中的TS_RET包含屏幕的X、Y坐标和触摸状态信息(PEN_DOWN、PEN_UP),这个信息会在用户读取触摸屏信息时复制到用户空间,结构为:typedef struct

{

unsigned short pressure;

unsigned short x;//X坐标

unsigned shorty;//Y坐标

unsigned short pad;

}TS_RET;

触摸屏工作时会产生两类中断:一类是触点中断(INT_TC),一类是X/Y位置转换中断(INT_ADC)。使用函数s3c2410_isr_tc用来处理触摸屏的触点/抬起中断,在触点中断发生后,若之前处于PEN_UP状态,则应该启动X/Y位置转换;当处于PEN_DOWN状态时,则调用函数tsEvent完成缓冲区的填充、等待队列的唤醒和异步通知信号的释放。使用函数s3c2410_isr_adc来处理X/ Y位置转换中断,当X/Y位置转换中断发生后,读取X、Y的坐标值,填入缓冲区。在函数s3c2410_isr_adc中通过调用函数s3c2410_get_XY来获取X、Y坐标的。最后由函数s3c2410_ts_poll实现轮询接口,将等待队列添加到结构体poll_table中,当缓冲区有数据时,返回资源可读取标志,否则返回0。函数s3c2410_ts_fasync完成触摸屏对应用程序的异步通知。在程序的最后,由函数__init s3c2410_ts_init和__exit s3c2410_ts_exit完成从内核中加载和卸载触摸屏驱动程序,加载函数__init s3c2410_ts_init还需要完成申请设备号、添加cdev、申请中断、设置触摸屏控制引脚等多项工作,卸载函数_exit s3c2410_ts_exit完成释放设备号、删除cdev、释放中断等工作[3]。2.4实验操作过程

将编写好的触摸屏驱动ts.c文件拷贝到内核源码目录“drivers/input/touchsreen/”下,并修改同目录下的“Kconfig”和“Makefile”文件。在内核配置单中添加触摸屏编译配置选项,修改Kconfig文件的第468行,添加如下内容:

config TOUCHSCREEN

tristate"TouchScreen input driver"

depends on ARCH_S3C2410&&INPUT&&

INPUT_TOUCHSCREEN help

Say Y here if you have the TouchScreen.

and depends on ADC

If unsure,say N.

To compile this driver as a module,choose M here:the

module will be called ts.

在目录的Makefile文件中添加触摸屏的编译条目,添加内容如下:

obj-$(CONFIG_TOUCHSCREEN)+=ts.o

内核配置单的选择:

Device Drivers--->

Input device support--->

[*]Touchscreens--->

<*>TouchScreen input driver

配置完毕后,保存配置单,然后编译内核,再将编译好的镜像下载到开发板中运行。

2.5触摸屏的校准

TQ2440出厂时使用的是Linux2.6.25.8内核,触摸屏已经完成校准,但本次实验重新使用了最新的Lin-ux2.6.30.4内核,所以需要重新校准。移植好内核之后,下载了天嵌公司已经做好的QT图形界面到开发板,并重启开发板,校准时只需要将触摸笔点中十字架的中心,然后进行5点校准,完毕后触摸屏就可以正常使用。如图1所示。

触摸屏因其使用方便、快捷,而得到广泛应用。Linux 系统因其源代码公开、成本低廉、裁减性好、高效、灵活等特点,在嵌入式领域得到了很好的发展和应用。本文介绍了触摸屏的工作原理,对嵌入式Linux系统内核源

(上接第71页)

用,并通过实验和其他负载均衡策略进行对比,证明了它的有效性和高效性。在今后的工作中,将进一步完善本文提出的负载均衡这一数据库集群关键技术,进一步提升分布式集群数据库系统的可靠性、稳定性以及高效性。参考文献

[1]YANG X J,DOU Y,HU Q F.Progress and challenges in

high performance computer technology[J].J Comput Sci&

Technol,2006,21(5):674-681.

[2]蒋江,张民选,廖湘科.基于多种资源的负载均衡算法的

研究[J].电子学报,2002,30(8):1148-1152.

[3]ZHENG G B.Achieving high performance on extremely

large parallel machines:Performance Prediction and Load

Balancing[D].Urbana:UIUC,2005.[4]徐泽水.不确定多属性决策方法及应用[M].北京:清华

大学出版社,2004.

[5]陈勇.一种高效的分布式反馈流量负载均衡算法[J].计算

机工程,2009,35(2):98-102.

[6]谷凤娜,张志斌,王丽宏.基于分布式入侵检测系统的负

载均衡算法的比较[J].计算机科学,2008,35(11):63-73.

(收稿日期:2010-07-28)作者简介:

何骏,男,1986年生,硕士研究生,主要研究方向:地理信息系统与数据库技术。

熊伟,男,1976年生,博士研究生,副教授,主要研究方向:地理信息系统与数据库技术。

陈荦,男,1973年生,博士研究生,副教授,主要研究方向:地理信息系统与数据库技术。

(上接第74页)

参考文献

[1]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清

华大学出版社,2005.

[2]AKYILDIZ I F,SU W,SANKARASUBRAMANIAM Y,et al.

Wireless sensor networks:a survey[J].Computer Networks,2002,38(4):393-422.

[3]LUO J,HUBAUX J P.Joint mobility and routing for lifetime

enlongation in wireless sensor networks[J],Proc.INFOCOM,2005:819-830.

[4]吴小兵,陈贵海.无线传感器网络中节点非均匀分布的

能量空洞问题[J].计算机学报,2008,31(2):253-261. [5]LI J,MOHAPATRA P.An analytical model for the energy

hole problem in many-to-one sensor networks[C].Proceed-ings of IEEE Vehicular Technology Conference,Dallas,TX,

2005:2721-2725.

[6]YU Fengxin,GUVEN T,SHAYMAN M.Relay deployment

and power control for life time elongation in sensor

networks[C].Proc.IEEE int’l Conf.Comm,2006:3461-3466.

[7]掌明.基于最大生存周期的无线传感器网络能力模型研

究[J].现代电子技术,2007,31(21):38-40.

(收稿日期:2010-08-20)作者简介:

傅菊平,女,1985年生,硕士研究生,主要研究方向:无线传感器网络优化。

王东方,女,1984年生,硕士研究生,主要研究方向:无线传感器网络路由算法。

齐小刚,男,1973年生,副教授,博士,硕士生导师,主要研究方向:图论与组合最优化、网络优化理论与方法以及路由与交换。

码的触摸屏驱动做了深入探讨,编译和下载Linux内核到开发板上运行,并且移植了QT图形界面,触摸屏校准之后,使用情况良好。

参考文献

[1]吴金宏.触摸屏技术及其应用[J].家庭电子,1998,9(4):

96-99.

[2]王立凤.触摸屏技术及其应用[J].电子工业专用设备,

2006,35(1):63-66.

[3]宋宝华.Linux设备驱动开发详解[M].北京:人民邮电出

版社,2008.

(收稿日期:2010-08-16)作者简介:

印盼,男,1985年生,在读硕士研究生,主要研究方向:嵌入式系统。

赵建军,男,1962年生,副教授,主要研究方向:电子信息及嵌入式。

袁宏攀,男,1984年生,在读硕士研究生,主要研究方向:嵌入式系统。

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

文档

基于TQ2440和Linux的触摸屏的驱动研究

随着信息查询技术的发展,触摸屏因具有坚固耐用、反应速度快、节省空间、易于交流等优点,而得到了广泛应用[1]。触摸屏作为一种新兴的电脑输入设备,是目前最简单、方便的一种人机交互设备。1硬件简介1.1TQ2440开发板简介天嵌公司生产的TQ2440开发板,微处理器采用SamsungS3C2440AL,板载MBSDRAM、256MBNandFlash、2MBNorFlash,板载5线异步串行口(UART0)、100Mb/sDM9000网卡、USBHOST接口、USBDevice接口和一个SD卡接
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top