当前位置:首页 > 测试测量 > 测试测量
[导读]1 引言   21世纪计算机迈入新的充满机遇的后PC时代,人们越来越多地接触到嵌入式这个概念。S3c2410是韩国三星公司生产的基于ARM公司16/32位微控制器ARM920T内核的RISC微处理器,主频最高可达到203MHZ[1]。S3c2410以

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触摸屏控制器

  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)来实现。

主要的触摸屏模块初始化程序如下:
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操作系统中的触摸屏驱动程序,并使其成功应用于野外测量和检测的工作中去,为野外检测工作提供了,稳定,高性能,便于携带的嵌入式平台仪器。

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

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭