测控系统中触摸屏驱动的研发

发布者:幸福之路最新更新时间:2011-10-08 关键字:测控系统  触摸屏驱动 手机看文章 扫描二维码
随时随地手机看文章

1 引言

  21世纪计算机迈入新的充满机遇的后PC时代,人们越来越多地接触到嵌入式这个概念。S3c2410是韩国三星公司生产的基于ARM公司16/32位微控制器ARM920T内核的RISC微处理器,主频最高可达到203MHZ[1]。S3c2410以其卓越的性能和良好的扩展性为手持设备和一般类型应用提供了低价格、低功耗、高性能的小型嵌入式微控制器的解决方案,从而可以应用于智能手机、数码相机、信息家电、PDA、移动终端、GPS等领域。Linux操作系统有成本低廉、支持多硬件平台、源代码开放、可订制内核、性能优异、有良好的网络支持等优势。Linux遵守GPL协议,可以在GNU精神下任意修改和裁减其内核,并且使用了众多的GNU开源软件,从而降低了项目的开发成本。嵌入式Linux继承了Linux的全部优点,成为在嵌入式开发中最常被应用的操作系统之一。触摸屏由于其操作简单、方便灵活、便于携带、占用空间小、友好的操作界面,逐渐取代键盘和普通显示器,成为新的人机交流的平台。本文里将讨论在S3c2410平台条件下,触摸屏在Linux操作系统中,驱动程序的研究与开发。

2硬件系统组成

2.1触摸屏原理

  本文采用四线电阻式触摸屏,这种触摸屏利用压力感应进行控制。电阻触摸屏的主要部分是一块与显示器表面非常配合的电阻薄膜屏,这是一种多层的复合薄膜,它以一层玻璃或硬塑料平板作为基层,表面涂有一层透明氧化金属(透明的导电电阻)导电层,上面再盖有一层外表面硬化处理、光滑防擦的塑料层、它的内表面也涂有一层涂层、在他们之间有许多细小的(小于1/1000英寸)的透明隔离点把两层导电层隔开绝缘。当手指触摸屏幕时,两层导电层在触摸点位置就有了接触,电阻发生变化,在X和Y两个方向上产生信号,然后送触摸屏控制器。控制器侦测到这一接触并计算出X和Y的位置,再根据模拟鼠标的方式运作。这就是电阻技术触摸屏的最基本的原理[2]。四线电阻模拟量技术的两层透明金属层工作时每层均增加5V恒定电压:一个竖直方向,一个水平方向。总共需四根电缆。四线电阻触摸屏具有高解析度,高速传输反应,表面硬度处理,减少擦伤、刮伤及防化学处理,具有光面及雾面处理,一次校正,稳定性高,永不漂移的特点[3]。

2.2S3c2410芯片介绍

  S3c2410是Samsung公司开发的16/32位微处理器。S3c2410采用了ARM920T的内核,主频最靠可达203MHZ,它为开发者提供了丰富的内部设备(见图1):分开的16KB的指令Cache和16KB数据Cache,MMU虚拟存储器管理,LCD控制器(支持STN&TFT),支持Nand Flash系统引导,系统管理器(片选逻辑和SDRAM控制器),3通道UART,4通道DMA,4通道PWM定时器,I/O端口,RTC,8通道10位ADC和触摸屏接口,IIC-BUS接口,USB主机,USB设备,SD主卡—MMC卡接口,2通道的SPI以及内部PLL时钟倍频器[4]。

图1 S3C2410系统框架

2.3S3c2410触摸屏控制器[page]

  S3C2410具有8通道模拟输入的10位CMOS模数转换器(ADC)。它将输入的模拟信号转换为10位的二进制数字代码。在2.5MHz的A/D转换器时钟下,最大转化速率可达到500KSPS。A/D转换器支持片上采样和保持功能,并支持掉电模式。S3C2410的AIN[7]和AIN[5]用于连接触摸屏的模拟信号输入。触摸屏接口电路一般由触摸屏,4个外部晶体管和一个外部电压源组成。触摸屏接口的控制和选择信号(nYPON,YMON,nXPON和XMON) 连接切换X坐标和Y坐标转换的外部晶体管。模拟输入引脚(AIN[7],AIN[5])则连接到触摸屏引脚[5]。触摸屏控制接口包括一个外部晶体管控制逻辑和具有中断产生逻辑的ADC接口逻辑(见图2)。

2.4触摸屏接口工作模式

2.4.1普通转换模式

  普通转换模式是用作一般目的下的ADC转换。这个模式可以通过设置ADCCON和ADCTSC来进行对AD转换的初始化;而后读取ADCDAT0的XPDATA域的值来完成转换。

2.4.2独立的X/Y轴的坐标转换模式

  独立的X/Y轴坐标转换模式可以分为两个转换步骤:X轴坐标转换和Y轴坐标转换,这两个过程是各自独立完成的。

2.4.3连续X/Y轴坐标转换模式

  触摸屏控制器将自动地切换X轴坐标和Y轴坐标并读取两个坐标轴方向上的坐标。

2.4.4中断模式

  静态模式实际上是在等待触摸笔的点击。在触摸笔点击到触摸屏上时,控制器产生中断信号。中断产生后,就可以通过设置适当的转换模式来读取X和Y的位置。

2.4.5静态(Standby)模式

  当ADCCON寄存器的STDBM位被设为1时,Standby模式被激活。在该模式下,A/D转换操作停止,ADCDAT0寄存器的XPDATA域和ADCDAT1寄存器的YPDATA域保持着先前转换所得的值。

图2 S3c2410与四线电阻式触摸屏连接电路原理图

3Linux系统中触摸屏驱动程序的实现

  Linux操作系统将硬件设备作为一般文件,我们可以通过访问设备文件来访问我们所要使用的设备。在Linux操作系统中,设备文件分字符设备和块设备,触摸屏属于字符设备[6]。字符设备是指在I/O传输过程中以字符为单位进行传输的设备,当一台字符型设备在硬件上与主机相连之后,必须为这台设备创建字符特别文件。设备与驱动程序的通信方式依赖于硬件接口。当设备上的数据传输完成时,硬件通过总线发出中断信号导致系统执行一个中断处理程序。中断处理程序与设备驱动程序协同工作完成数据传输的底层控制[7]。

3.1屏驱动模块的初始化

  S3c2410触摸屏驱动模块的加载和卸载是通过加载函module_init(s3c2410_ts_init)和卸载函数module_exit(s3c2410_ts_exit)来实现。

主要的触摸屏模块初始化程序如下:

[page]

Ret=register_chrdev (0, DEVICE_NAME, &s3c2410_fops);
//调用register_chrdev(),向系统申请,系统为驱动程序动态的分配一个主设备号
set_GPIO_mode (GPIO106_nYPON_MD);
set_GPIO_mode (GPIO105_YMON_MD);
set_GPIO_mode (GPIO104_nXPON_MD);
set_GPIO_mode (GPIO103_XMON_MD);
//设置IO端口为XP,YM,YP和YM
ret=request_irq (IRQ_ADC_DONE, s3c2410_isr_adc, SA_INTERRUPT, DEVICE_NAME, s3c2410_isr_adc);
//设置了IRQ_ADC_DONE中断,按下触摸屏时触发,中断处理函数为s3c2410_isr_adc
ret=request_irq (IRQ_TC, s3c2410_isr_tc, SA_INTERRUPT, DEVICE_NAME, s3c2410_isr_tc);
//设置了IRQ_TC中断,松开触摸屏时触发,中断处理函数为s3c2410_isr_tc
devfs_tsraw=devfs_register (devfs_ts_dir,”0raw”, DEVFS_FL_DEFAULT, tsMajor, TSRAW_MINOR, S_IFCHR|S_IRUSR|S_IWUSR, &s3c2410_fops, NULL);
//设备驱动程序的注册
Static struck file operations s3c2410_fops=
{
owner::THIS_MODULE;
open::s3c2410_ts_open;
read: s3c2410_ts_read;
release: s3c2410_ts_release;
poll: s3c2410_ts_poll;
}
//对驱动程序与应用程序接口file operations结构的s3c2410_fops定义
static int s3c2410_ts_open (struck inode *inode, struct file *file)
{
tsdev.head=tsdev.tail=0;
tsdev.penStatus=PEN_UP;
#ifdef HOOK_FOR_DRAG
init_timer (&ts_timer); ts_timer.function=ts_timer_handler;
#endif
TsEvent=tsEvent_raw;
init_waitqueue_head (& (tsdev.wq));
MOD_INC_USE_COUNT;
return 0 ;}
//打开设备时对定时器进行初始化

3.2中断处理函数

  主要是分别在static void s3c2410_isr_adc(int irq,void *dev_id,struct pt_regs *reg)和static void s3c2410_isr_tc(int irq,void *dev_id,struct pt_regs *reg)调用s3c2410_get_XY()函数实现的。

3.3触摸屏数据的读取,处理与传递

  触摸操作时具有,PEN_UP, PEN_DOWN和PEN_SAMPLE三种工作状态,当出现触摸屏动作时,PEN_DOWN动作开始,并打开定时器,进行数据采集,最后得到LCD的坐标[8],主要核心是得到坐标的函数static inline void s3c2410_get_XY(void)。

  最终应用程序通过调用read()函数获取触摸屏的数据,并把数据传递给应用程序。
count=tsRead (&ts_ret);
if (count) copy_to_user (buffer,(char *)&te_ret,count);
//读取触摸屏数据,并传向用户

4结论

  本文简单的介绍了四线电阻式触摸屏工作原理和S3c2410的内部组成,并且构建了S3c2410和四线电阻式触摸屏的接口电路,开发了在Linux操作系统中的触摸屏驱动程序,并使其成功应用于野外测量和检测的工作中去,为野外检测工作提供了,稳定,高性能,便于携带的嵌入式平台仪器。

 

 

关键字:测控系统  触摸屏驱动 引用地址:测控系统中触摸屏驱动的研发

上一篇:导弹测试设备故障诊断专家系统的设计与实现
下一篇:基于时间一数字转换的精密时差测量系统设计

推荐阅读最新更新时间:2024-03-30 22:19

基于LPC2214芯片实现机组转速测控系统的设计
电力系统的频率反映了发电机组发出的有功功率与负荷所需有功功率的平衡情况。高精度和高可靠性的频率测量对整个电力系统的稳定运行有着至关重要的作用,机组在开停机过程中,频率变化范围比较大,变化速度比较快,传统的测频方法由于固有的缺陷,难以很好解决这一问题。等精度测量方法的测量精度不随被测脉冲的频率高低变化而改变,只与标准计数器有关,可以使测量精度大大提高,并且闸门时间可变,可快速反应频率的变化。 1 传统测量方法的原理及误差分析 传统测量方法有2种,一种是测频法(M 法),是对被测信号在闸门时间(T—Nfo,N 个基准信号脉冲的时间)内的脉冲进行计数(计数值为M),被测信号的频率为 对于测频法,在相同的闸门时间内,对于任意的f
[单片机]
基于LPC2214芯片实现机组转速<font color='red'>测控系统</font>的设计
基于CAN总线GaAs光电阴极制备测控系统的研究
  GaAs光电阴极是一种负电子亲和势光电阴极,具有量子效率高、发射电子能量和角度分布集中的优点,因而在微光像增强器、半导体敏感器件、自旋极化电子源等众多领域得到了广泛的应用,但GaAs光电阴极的制备过程却极为复杂,对制备工艺和条件都有严格要求。目前GaAs光电阴极的制备都主要依赖熟练操作人员进行手工操作,这种操作方式不尽浪费大量人力物力,而且制备质量和效率得不到保证。而在制备过程中普遍采用的在线光谱响应测试仪,只能用于阴极制备后的光谱响应曲线测试,评估阴极的制备质量,它对阴极制备过程中的许多其它信息量,如真空度、铯源和氧源电流等,都没有实时采集功能,更没有对铯(氧)源电流的计算机控制和制备过程的自动化,从而大大的制约了我国GaAs
[嵌入式]
八 s3c2440 linux 触摸屏 驱动代分析
1、对触摸屏添加设备信息 触摸屏的设备信息的添加跟lcd很像,这里就仿照lcd的platform设备信息给触摸屏添加设备信息。可以在Touchscreen-s3c2410.h(includelinuxplatform_data)文件中看到,其定义了有关触摸屏信息的结构体s3c2410_ts_mach_info,因此我们只需要填充该结构体就可以。 struct s3c2410_ts_mach_info原型为: struct s3c2410_ts_mach_info {undefined int delay; //延时时间 int presc; //预分频,adc时钟=PCLK
[单片机]
触摸屏驱动程序(输入子系统)
#include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux/input.h #include linux/init.h #include linux/serio.h #include linux/delay.h #include linux/platform_device.h #include linux/clk.h #include asm/io.h #include asm/irq.h #include asm/plat-s
[单片机]
<font color='red'>触摸屏</font><font color='red'>驱动</font>程序(输入子系统)
触摸屏驱动分析之S3C2440_ts.c
//短短两百余行程序颇具玄机,在光标抬起后的处理中尤其值得推敲。 #include linux/errno.h #include linux/kernel.h #include linux/module.h #include linux/slab.h #include linux/input.h #include linux/init.h #include linux/serio.h #include linux/delay.h #include linux/platform_device.h #include linux/clk.h #include asm/io.h #include asm/irq.h #include p
[单片机]
单片机测控系统中的抗干扰技术
摘 要:本文针对单片机测控系统中的干扰因素,并结合实际应用系统给出了采取软、硬件两种方法抗干扰的具体措施。 关键词:单片机测控系统抗干扰 概述 干扰是造成单片机测控系统故障的主要原因之一。干扰对系统的影响轻则影响测量与控制精度,重则使工作系统完全失常。要消除干扰必须抓住形成干扰的三要素,即:干扰源、耦合通道和接收设备。 1干扰因素 在单片机测控系统中,主要存在空间辐射干扰、信号通道干扰、电源干扰和数字电路引起的干扰。 抗干扰就是针对干扰的产生性质、传播途径、侵入的位置和侵入的形式,采取适当的方法消除干扰源,抑制耦合通道,减弱电路对噪声干扰的敏感性,通常需要采取“综合治理”的措施。
[单片机]
基于单片机的烤烟房多点温湿度测控系统
0 引言 烟叶烘烤过程的温湿度能否精准测控决定着烟叶的质量。传统上烟叶烘烤过程的几十个小时一般完全由人工监测,利用于湿球玻璃温度计采集数据。主要出现问题如下:无法确保烘烤出的烟叶质量好坏;监测时间长,劳动强度大;效率低,无法实现工业化生产,为解决上述问题,就必须对烤房进行改造。为此,本文介绍了一种基于AT89C51单片机和SHT11数字温湿度传感器的多点采样的新型烤房智能测控系统。 1 系统硬件总体设计 根据烤烟房的具体要求,本系统主要由AT89C51单片机、SHT11温湿度传感器、加热控制装置、排湿控制装置、液晶显示、通信装置和上位机装置等部分组成。系统框图如图1所示。 1.1 微控制器的选择 本文设计的系
[单片机]
基于单片机的烤烟房多点温湿度<font color='red'>测控系统</font>
基于LabVIEW的多路仪器温度测控系统
摘要: 介绍利用图形化编程软件LabVIEW和数据采集卡Lab-PC-1200构建多路仪器温度测控系统的方法和技术及应用实例,研究了多路温度测控系统的性能和精度情况。 关键词:温度测控 虚拟仪器 多路系统 引言 我们开发氮氧化物化学发光法分析仪时,整个系统有三处需要温度测控:反应室,钼转换室,光子计数器PMT。反应室中的温度对化学反应(一氧化氮与臭氧反应)有一定的影响,我们要找到最佳温度,使反应效率最大。钼转换室的温度影响二氧化氮转换为一氧化氮的效率,因此也需要效率最大时的温度。温度测量与控制的要求是:反应室的测控温度范围为:30—70OC,波动:%26;#177;0.5 OC;钼转换室的测控范围为:250—370
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
最新测试测量文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved