当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]测控系统中触摸屏驱动的研发

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触摸屏控制器[!--empirenews.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)来实现。

主要的触摸屏模块初始化程序如下:[!--empirenews.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年6月6日 /美通社/ -- 全球信息处理动态固件领军企业AMI荣幸地宣布,将推出适用于ASPEED 2700服务器管理处理器平台的MegaRAC OneTree™。 这项基于OpenBMC™的创新解决方案具...

关键字: SPEED 处理器 PEN AC

上海2024年5月27日 /美通社/ -- 自ChatGPT的发布引发全球范围内对大模型的广泛关注以来,目前,国内公布的大模型数量已超过300个,行业呈现出"百模大战"的竞争格局。在此背景下,亿欧近日...

关键字: 模型 APP 数据库 PEN

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

近期,运动与控制技术的先行者——派克汉尼汾公司宣布推出一款功能强大的测量设备Service Master COMPACT,为行走机械和工业液压应用提供实时监测和诊断服务。产品采用坚固的IP65防护级外壳及耐油性橡胶保护层...

关键字: 触摸屏 触感键盘 传感器

北京2024年5月13日 /美通社/ -- 5月11日,软通动力在鲲鹏昇腾开发者大会2024期间举办"软硬全栈,加速智能化赋能"分论坛。业界专家学者和优秀企业代表齐聚一堂,共同交流分享鲲鹏昇腾生态的创...

关键字: 智能化 全栈 PEN 计算机

上海2024年4月16日 /美通社/ -- 4月14日,为期四天的第89届中国国际医疗器械博览会(CMEF)盛大收官。澳鹏Appen很荣幸再次作为唯一的人工智能训练数据参展商参与此次"航母级"规模医疗...

关键字: APP 医疗器械 PEN 模型

电容式触摸屏又称电容触摸屏,是一种生长在电子行业中的新型非接触式触摸技术,广泛应用在人机交互界面,实现与人机之间信息传递,它带动了科技发展,改变着日常生活。

关键字: 电容式 触摸屏 交互界面

随着汽车电子技术的飞速发展,汽车电子设备触摸屏已经成为汽车信息娱乐系统、导航系统、车载通信系统等设备的核心组成部分。然而,复杂的电磁环境对汽车电子设备触摸屏的电磁兼容性(EMC)提出了更高的要求。为了使汽车电子设备触摸屏...

关键字: 汽车电子 触摸屏 电子设备

触摸屏显示器是每个现代支付系统和销售点(POS)终端的重要组成部分。触摸屏极大地提升了支付终端的美观度,同时提供了一种对手机、平板电脑和触摸屏笔记本电脑的用户来说都十分熟悉的现代化控制方式。尽管触摸屏拥有这些优点,但也增...

关键字: 触摸屏 POS显示器
关闭
关闭