《嵌入式系统原理及应用.doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理及应用.doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、?嵌入式系统原理及应用?结课论文2021届结课论文学生姓名 艾力江 学 号 5021212126 所属学院 信息工程学院 专 业 通信工程专业 班 级 通信17-1 塔里木大学教务处制第 24 页目录摘要 .11 前言 .1触摸屏简介 .1系统组成原理 .2触摸屏工作原理 .21.4 LCD触摸屏的应用及开展前景 .41.5 ARM嵌入式处理器 .42 系统整体方案设计 .72.1 系统硬件及整体功能 .72.2 系统软件设计方案的选择 .72.3 硬件实现处理器的选择 .82.4 外围芯片的选择 .92.5 硬件原理图 .113. LCD触摸屏软件设计 .163.1 界面的定制及显示.163
2、.2 触摸屏信息的处理.163.3 主函数初始化 .164 分析驱动 .164.1 触摸屏设备驱动中数据构造 .164.2 触摸屏驱动模块加载与卸载函数 .174.3 触摸屏设备驱动的读函数 .184.4 触摸屏设备驱动的轮询及异步通知 .185 结论 .19参考文献 .20基于嵌入式LCD的触摸屏摘要: 如今LCD 触摸屏应用已成为生活中很常见的现象,通过利用这种装置,改变了传统的较为复杂呆板的机械人机交互方式。使得人际之间信息的交互变得简单,快捷,而且更具形象化。本文针对基于ARM系统LCD 触摸屏设计的介绍,分析LCD触摸屏的工作原理及硬件构造,然后进一步开发除了触摸屏的驱动程序。通过软
3、硬件的结合,可以实现利用触摸屏完成人际之间信息的交互,同时也可以将该设计运用到同类人机交互系统中缩短产品的开发周期,降低产品的开发本钱。关键词:LCD触摸屏;ARM;人机交换系统随着嵌进式系统技术的飞速开展,产业设备产品也越来越现代化,普遍要求可视化,LCD触摸屏低耗能散热小,本钱低,纤薄轻巧,外形尺寸小,安装轻易。使用LCD触摸屏作为产业设备的输进输出设备既能到达可视化的要求,方便现场操纵,又能降低产品的本钱。而在产品的整体设计过程中,人机交互界面的设计往往占据着很大一局部工作,这样,不但极大地增加了产品的开发本钱并且延长了产品的上市周期。本文设计的基于S3C44BOX的人机交互界面是一种可
4、定制、简单易用、性能优良的通用型人机交互界面,能很好地解决上述问题。1.1 触摸屏简介触摸屏起源于20世纪70年代,早期多被装于工控计算机、POS机终端等工业或商用设备之中。2007年Phone手机的推出,成为触控行业开展的一个里程碑。苹果公司把一部至少需要20个按键的移动 ,设计得仅需三四个键就能搞定,剩余操作那么全部交由触控屏幕完成。除赋予了使用者更加直接、便捷的操作体验之外,还使手机的外形变得更加时尚轻薄,增加了人机直接互动的亲切感,引发消费者的热烈追捧,同时也开启了触摸屏向主流操控界面迈进的征程。触摸屏touch screen又称为“触控屏“触控面板,是一种可接收触头等输入讯号的感应式
5、液晶显示装置,当接触了屏幕上的图形按钮时,屏幕上的触觉反应系统可根据预先编程的程式驱动各种连结装置,可用以取代机械式的按钮面板,并借由液晶显示画面制造出生动的影音效果。触摸屏作为一种最新的电脑输入设备,它是目前最简单、方便、自然的一种人机交互方式。它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。系统组成原理 触摸屏输入系统由触摸屏、触摸屏控制器与微控制器三局部组成。图1示出了一个实际的触摸屏输入系统,在该系统中触摸屏采用信利公司的四线电阻式触摸屏,触摸屏控制器采用BB公司的ADS7846,微控制器为Motorola MCORE系列的MMC2107。 图1 触摸屏输入系统的组成图2
6、触摸屏的触摸示意图 触摸屏工作原理触摸屏附着在显示器的外表,及显示器相配合使用,如果能测量出触摸点在屏幕上的坐标位置,那么可根据显示屏上对应坐标点的显示内容或图符获知触摸者的意图。触摸屏按其技术原理可分为五类:矢量压力传感式、电阻式、电容式、红外线式、外表声波式,其中电阻式触摸屏在嵌入式系统中用的较多。电阻触摸屏是一块4层的透明的复合薄膜屏,如图2所示,最下面是玻璃或有机玻璃构成的基层,最上面是一层外外表经过硬化处理从而光滑防刮的塑料层,中间是两层金属导电层,分别在基层之上与塑料层内外表,在两导电层之间有许多细小的透明隔离点把它们隔开。当手指触摸屏幕时,两导电层在触摸点处接触。 触摸屏的两个金
7、属导电层是触摸屏的两个工作面,在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极,假设在一个工作面的电极对上施加电压,那么在该工作面上就会形成均匀连续的平行电压分布。如图1所示,当在X方向的电极对上施加一确定的电压,而Y方向电极对上不加电压时,在X平行电压场中,触点处的电压值可以在Y+(或Y-)电极上反映出来,通过测量Y+电极对地的电压大小,便可得知触点的X坐标值。同理,当在Y电极对上加电压,而X电极对上不加电压时,通过测量X+电极的电压,便可得知触点的Y坐标。电阻式触摸屏有四线与五线两种。四线式触摸屏的X工作面与Y工作面分别加在两个导电层上,共有四根引出线,分别连到触摸屏的X电极对与Y
8、电极对上。五线式触摸屏把X工作面与Y工作面都加在玻璃基层的导电涂层上,但工作时,仍是分时加电压的,即让两个方向的电压场分时工作在同一工作面上,而外导电层那么仅仅用来充当导体与电压测量电极。因此,五线式触摸屏的引出线需为5根。触摸屏接口工作模式: 1普通转换模式 普通转换模式(AUTO_PST = 0,XY_PST = 0)是用作一般目的下的ADC转换。这个模式可以通过设置ADCCON与ADCTSC来进展对AD转换的初始化;而后读取ADCDAT0ADC数据存放器0的XPDATA域普通ADC转换的值来完成转换。2别离的X/Y轴坐标转换模式:X轴坐标转换与Y轴坐标转换。 X轴坐标转换(AUTO_PS
9、T=0且XY_PST=1)将X轴坐标转换数值写入到ADCDAT0存放器的XPDATA域。转换后,触摸屏接口将产生中断源INT_ADC到中断控制器。 Y轴坐标转换(AUTO_PST=0且XY_PST=2)将X轴坐标转换数值写入到ADCDAT1存放器的YPDATA域。转换后,触摸屏接口将产生中断源INT_ADC到中断控制器。 3自动(连续)X/Y轴坐标转换模式。 自动连续X/Y轴坐标转换模式AUTO_PST=1且XY_PST= 0以下面的步骤工作: 触摸屏控制器将自动地切换X轴坐标与Y轴坐标并读取两个坐标轴方向上的坐标。触摸屏控制器自动将测量得到的X轴数据写入到ADCDAT0存放器的XPDATA域
10、,然后将测量到的Y轴数据到ADCDAT1的YPDATA域。自动连续转换之后,触摸屏控制器产生中断源INT_ADC到中断控制器。 4等待中断模式 当触摸屏控制器处于等待中断模式下时,它实际上是在等待触摸笔的点击。在触摸笔点击到触摸屏上时,控制器产生中断信号INC_TC。中断产生后,就可以通过设置适当的转换模式别离的X/Y轴坐标转换模式或自动X/Y轴坐标转换模式来读取X与Y的位置。 5静态Standby模式 当ADCCON存放器的STDBM位被设为1时,Standby模式被激活。在该模式下,A/D转换操作停顿,ADCDAT0存放器的XPDATA域与ADCDAT1存放器的YPDATA正常ADC域保持
11、着先前转换所得的值。 1.4 LCD触摸屏的应用及开展前景目前,触摸屏应用范围正在变得越来越广泛,从工业用途的工厂设备的控制/操作系统、公共信息查询的电子查询设施、商业用途的提款机,到消费性电子的移动 、PDA、数码相机等都可看到触控屏幕的身影。当然,这其中应用最为广泛的仍是手机。2021年采用触控式屏幕的手机出货量将超过1亿部,如今,安装触控界面的手机出货量已超过5亿部。而且有迹象说明,触摸屏在消费电子产品中的应用范围正从手机屏幕等小尺寸领域向具有更大屏脑拓展。目前,戴尔、惠普、富士通、华硕等一线笔记本电脑品牌厂商都方案推出具备触摸屏的笔记本电脑或UMPC。由此可以看出,触摸屏市场未来的开展
12、前景也十分诱人。根据市场调研机构的预测,到2021年触摸屏产值将到达239亿美元。1.5 ARM嵌入式处理器RISC嵌入式处理器是目前高中端嵌入式设计与应用的主流,现今比拟流行的RISC处理器有PowerPC、MIPS与ARM。其中ARM嵌入式处理器以其小体积、低功耗、低本钱与高性能等特点占据了业界领先地位,已经成为一种事实上的标准。目前市场上常用的基于ARM体系构造的通用嵌入式处理器系列有ARM7 与ARM9 系列。ARM7系列处理器包括ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ 等几种类核是低功耗的32位RISC架构处理器,三级流水线,主频到达66MHz。ARM9
13、系列处理器包括ARM920TDMI、ARM922T、ARM940T等几种类型的核,采用五级流水线,主频到达533MHz。此外,ARM系列处理器还包括ARM9E、ARM10E与ARM11等几个系列。SAMSUNG公司推出的一系列采用ARM处理器与微控制器的产品,性能良好,数据手册丰富,配套应用方案完善,因此迅速在通信产品民用市场上获得了广泛的应用,在ARM 处理器产品中极具代表性。如ADS7846.1ADS7846触摸屏控制器的工作原理 各种类型的触摸屏均有其相应的控制器,如:ADS7846是四线式触摸屏的控制器,而ADS7845是五线式触摸屏的控制器。控制器的主要功能是分时向X、Y电极对施加电
14、压,并把测量电极上的电压信号转换为相应触摸点的X、Y坐标。2操作原理 ADS7846内部有一个由多个模拟开关组成的供电-测量电路网络与12位的A/D转换器参见图3。ADS7846根据微控制器发来的不同测量命令导通不同的模拟开关,以便向工作面电极对提供电压,并把相应测量电极上的触点坐标位置所对应的电压模拟量引入A/D转换器。在触摸点X、Y坐标的测量过程中,测量电压及测量点的等效电路如图4所示,图中P为测量点。 图3 ADS7846的功能框图 图4 测量关系 3数字接口 ADS7846及MMC2107之间通过标准的SPI口相连,由MMC2107启动3次SPI传送来完成转换,如图5所示。第一次SPI
15、传送由MMC2107向ADS846发控制字,包括起始位、通道选择、8/12位模式、差分/单端选择与掉电模式选择,接下来的两次SPI传送那么是MMC2107从ADS7846取A/D转换结果数据最后四位自动补零,完成触摸屏控制器与微控制器之间的一次通信。 图5 转换时序 4笔中断PENIRQ输出 ADS7846通过笔中断请求向MMC2107表示有触摸发生。如图6所示,当没有触摸时,MOSFET与翻开、关闭,那么笔中断输出引脚通过外加的上拉电阻输出为高。当有触摸时,与翻开、关闭,那么笔中断输出引脚通过内部连接到地而输出为低,从而向MMC2107提中断请求。 图6笔中断请求 本系统采用LCD触摸屏模块
16、OCMJ15x20D,配以相应的外围硬件,通过ARM芯片S3C44B0X对触摸屏从外界采集的信息的处理,然后据此控制受控系统,并给及触摸屏信息确认及输出。2.1 系统硬件及整体功能系统硬件组成及整体功能系统主要包括三个局部,分别为PC机、S3C4480X微处理器与LCD触摸屏模块。该系统有三局部组成:PC机,用于定制人机交互界面信息;S3C4480X处理器,用于控制触摸模块接收到的外界信息;LCD触摸屏模块,是直接参及人机交互的层面,通过它可以显示出虚拟按键,人们可以对其操作,然后配以处理器及外围硬件的协同工作,到达完成对一起的控制目的。通过该系统可以给产业设备提供一个可视化的人机界面。来自P
17、C机的定制好的界面信息存储在ARM的FLASH存储器内。在应用当中,当微处理器接收到触摸屏按键信息时,对产业设备进展控制。同时微处理器也对LCD进展界面的刷新,这样以完成人机交互。 2.2 系统软件设计方案的选择为增强系统的稳定性与可靠性,在软件设计中将进展操作系统Operating System,OS的移植,进而对应用程序进展设计。嵌入式OS负责嵌入式系统全部软、硬件资源的分配、调度,控制与协调各部件的工作,及普通OS相比,嵌入式OS在系统实时高效性、硬件依赖性、软件固化及应用的专用性方面具有较为突出的特点。 嵌入式OS种类繁多,大体上分为商用型与免费型两大块,其中商用型功能稳定、可靠,有完
18、善的技术支持与售后效劳,但价格昂贵,典型的有VxWorks、WinCE等。免费型的源代码公开,性能也较良好,主要有嵌入式Linux与C/OS。随着开源软件的迅速开展,Linux与C/OS已经具有非常广泛的应用。基于良好的性价比,本文将采用uClinux作为触摸屏终端的操作系统。uClinux是一种优秀的嵌入式Linux版本,它秉承了标准Linux的优良特性,是经过各方面的小型化改造,形成的一个高度优化的、代码紧凑的嵌入式Linux。虽然它的体积很小,但性能稳定,有良好的移植性。在操作系统移植完成后,本文将结合触摸屏终端所需实现的功能,给出其整体的软件设计方案。2.3 硬件实现处理器的选择本系统
19、选择三星公司基于ARM7TDMI的16/32位微处理器S3C44B0X。该芯片为手持设备以及一般嵌入式应用提供了一个本钱低廉、功能强大的微控制器解决方案。有丰富的内置部件,包括:8KB cache,内部SRAM,LCD控制器,带自动握手的2通道UART,4通道DMA,系统管理器片选辑,FP/EDO/SDRAM 控制器,代用PWM功能的5通道定制器,I/O端口,RTC 8通道10位ADC,IIC-BUS接口,IIS-BUS接口,PLL倍频器。S3C44B0X内部构造图S3C44B0X 内部构造如图7所示:图7 S3C44B0X内部构造图 S3C44B0X引脚图S3C44B0X引脚情况如图8所示:
20、图8 S3C44B0X引脚图由于S3C44B0X引脚数量众多,此处不再对其详细说明,有关各引脚功能可以参阅相关资料。2.4 外围芯片的选择根据功能要求,该系统还需配置其他外围芯片,用于辅助完成要求功能。此处选用的外围芯片为FM7843,不过它已被集成在触摸屏模块OCMJ15x20D中,它主要用来对触摸点进展检测,并把检测到的信息送出转换为相应的坐标,以供S3C44BOX处理器读取。下面对该芯片构造及原理作简要介绍V电压下的功耗为750W而在封闭模式下的功耗仅为0.5W。它具有低功耗与高速等特性,因此被广泛应用。引脚X+、Y+、X-、Y-是转换器模拟输进端,DCLK是外部时钟输进;CS是片选端:
21、DIN是串行输进,其控制数据通过该引脚输进;DOUT是串行数据输出用于输出转换后的触摸位置数据。最大数为二进制的4095;IN3、IN4是辅助输进;PENIRQ是PEN中断引脚。其中,S3C44BOX共使用6条及FM7843接口相连。其构造如图9所示:图9 FM7843构造图FM7843有关引脚介绍列表如下;表1 FM7843引脚介绍2.5 硬件原理图图10图11 触屏模块OCMJ15x20D上图为触屏模块OCMJ15x20D的实体图与外形尺寸图本系统显示局部采用的正是该模块系列中文液晶湿示模块,其中OCMJ表示奥可拉中文集成模块。这是一个中英文文字及绘图模式的点阵液晶屁示模块,内建512KB
22、yte的ROM字形码,可以显示中文字型、数字符号、英日欧文等字母,并且内建双图层(Two Page)的显爪内存。在文字模式中,可接收标准中文文字内码直接显示中文,而不需要进进绘图模式以绘图方式描绘中文,提升液晶显示中文之效率。该模块整合了多项的实用界面,包含内建的10-Bit ADC提供触控屏接口。OCMJ15X20D(V3.2)的触摸屏是用FM7843控制的,该控制器已集成在模块上,模块已留出FM7843的控制线供客户使用(OCMJ15X20D上的J5脚),可直接使用3V供电而不需外接负电压。该模块同时支持支持文字及绘图两种混与显示模式。支持2 Page 显示模式(And, Or, Nor,
23、 Xor),内建两个4.8K / 9.6 K15x20DByte 的显示RAM (Display Data RAM)共9.6K / 19.2 K15x20DByte RAM并且可做成4 阶的显示效果。内建512KByte ROM,控制IC 分带繁体字库IC 与带简体字库IC,其中标准繁体中文BIG5 码,包含13,094个常用及次常用字型、408 个特殊字及两组ASCII CODE,简体字库储存7602 个标准GB 码的简体中文。提供全角(16x16)及半角(8x16)文字显示模式。支持4/8 位之6800/8080 MCU 接口。内建8x8 键盘扫瞄界面(Key Scan)。带光标、反白、闪
24、烁功能,且光标高度及宽度可调。支持屏幕水平卷动及垂直卷动功能。内建512Byte SRAM 可自行造字。提供中/英文文字对齐功能。显示字型可放大到32x32、48x48 或64x64,以及混合显示模式。支持可将字型由ROM 直接读出使用。内建粗体字形及行距设定。内建10-Bit ADC 支持触控屏幕应用OCMJ4X15D 与OCMJ5X10D 屏蔽了此功能。 OCMJ4X15D 与OCMJ5X10D 当为黄绿屏而不使用背光时,或者为蓝屏使用背光时,可使用3V 供电而。不需外接负电压。OCMJ8X10D 与OCMJ8X15D 也可使用3V 供电但需外接负电压,除OCMJ8X10D 的蓝屏背光可使
25、用。3V 供电外,其他背光都要4.1V 以上供电。OCMJ15X20D 可直接使用3V 供电而不需外接负电压,但其背光为CCFL 背光,需另外供电,一般要45V。对于触摸屏模块OCMJ15X20D 其直接参及人机交互的构造为电阻式触摸面板。电阻式触摸面板是由两层极薄的电阻面板组成,如图12所示,两层面板之间有一个很小的间距,当有外力在面板上的某一点压下去时,会在施力点造成两层电阻接触,也就是短路(Short),而两层电阻面板的端点都各有电极,如图13所示YU, YD, XL, XR因此配合一些开关就可侦测出面板上哪一相对位置被Touch。图12 电阻式触摸面板构造 图13 触摸面板及侦测开关在
26、图14中,设定开关SW2SW3 是OFF(Open)SW0 及SW1 是ON(Close),当有外力在面板上的某一点压下去时,由于点取得电压接到ADC(Analog to Digital Converter),就可以得到被Touch 点的X 坐标相对位置。图14 读取X坐标在图14 中,因为开关SW2 及SW3 是OFF,因此YD 点是Floating,所以当有外力在面板上的某一点压下去时,YU 上的电压事实上就是X 的Panel(也就是电阻)上的分压结果,压在面板上的不同一点,就会得到不同的分压结果,如图15所示。图15 Resistor-X的分压同理,在图16中,设定开关SW0 及SW1
27、是OFF(Open),SW2 及SW3 是ON(Close),当有外力在面板上的某一点压下去时,由XL 点取得电压接到ADC(Analog to Digital Converter),就可以得到被Touch 点的Y 坐标相对位置。一般说来许多触摸面板都是贴在LCD 面板上面,因此在程序设计上如果重复图14及16的读取步骤就可以顺利得知被touTouch 的点是在屏幕上的哪一位置。图16 读取Y坐标图17 Resistor-Y的分压在图16 中,因为开关SW0 及SW1 是OFF,因此XR 点是Floating,所以当有外力在面板上的某一点压下去时,XL 上的电压事实上就是Y 的Panel(也就
28、是电阻)上的分压果,压在面板上的不同一点,就会得到不同的分压值,如图17所示。3.LCD触摸屏软件设计3.1 界面的定制及显示界面的定制是通过建立网络链表的方式实现的。构建好链表网络后就进进应用程序阶段,即系统进进正常运行状态。通过系统中设定当前屏指针、当前项指针及已构建的链表网络等来实现人机交互界面的操纵。同一屏幕的项构成双向循环链表、链接屏幕构成单向循环链表。实现方法:先以屏为单位建立每屏的横向双向循环链表;再遍历各屏的双向链表,为各屏的项建立链接关系,进而构成一个链表网络。通过遍历当前屏幕的横向双向循环链表来逐一显示屏幕的项。其巾对各类项的处理如下:当屏幕项是文本时,直接读取并显示。当屏
29、幕项为整型、浮点时通过向控制系统索取其值并显示。当屏幕项为枚举时,通过向控制系统索取其值,再按值读取对应的字符串并显示。3.2 触摸屏信息的处理触摸屏按键分为数字键、换屏键、确认键与选择键。数字键用于键进所按的数字。换屏键用于切换屏幕内容,进进所选中项的链接屏幕,假设当前屏幕没有选中项,那么进进首项链接的屏幕。选择键主要是使下拉菜单的内容显示到屏幕上来。确认键是用于选择下拉菜单内容。3.3 主函数初始化 该软件系统主函数采用的是等待触摸键值的死循环构造。4 分析驱动触摸屏驱动在/kernel/drivers/char/s3c2410-ts.c 文件中。4.1 触摸屏设备驱动中数据构造1触摸屏的
30、static struct s3c2410_fops= owner: THIS_MODULE, open: s3c2410_ts_open, read: s3c2410_ts_read, release: s3c2410_ts_release,#ifdef USE_ASYNC fasync: s3c2410_ts_fasync,/异步通知#endif poll: s3c2410_ts_poll,/轮询2触摸屏设备构造体的成员及按键设备构造体的成员类似,也包含一个缓冲区,同时包括自旋锁、等待队列与fasync_struct指针。typedef struct unsigned int penSta
31、tus; /* PEN_UP, PEN_DOWN, PEN_SAMPLE */ TS_RET bufMAX_TS_BUF; /* protect against overrun环形缓冲区 */ unsigned int head, tail;/* head and tail for queued events 环形缓冲区的头尾*/ wait_queue_head_t wq; /* 等待队列数据构造 spinlock_t lock; /* 自旋锁#ifdef USE_ASYNC struct fasync_struct *aq;#endif#ifdef CONFIG_PM struct pm_d
32、ev *pm_dev; /友善之臂专有的,我后面的代码删除了这段#endif TS_DEV;3触摸屏构造体中包含的TS_RET值的类型定义,包含X、Y坐标与状态PEN_DOWN、PEN_UP等信息,这个信息会在用户读取触摸信息时复制到用户空间。 typedef struct unsigned short pressure; /* 压力,这里可定义为笔按下,笔抬起,笔拖曳 unsigned short x; /* 横坐标的采样值 unsigned short y; /* 纵坐标的采样值 unsigned short pad; /* 填充位 TS_RET;4在触摸屏设备驱动中,将实现open()、
33、release()、read()、fasync()与poll()函数,因此,其文件操作构造体定义。触摸屏驱动文件操作构造体:static struct s3c2410_fops=4.2 触摸屏驱动模块加载与卸载函数1在触摸屏设备驱动的模块加载函数中,要完成申请设备号、添加cdev、申请中断、设置触摸屏控制引脚YPON、YMON、XPON、XMON等多项工作。触摸屏设备驱动的模块加载函数 static int _init s3c2410_ts_init(void)触摸屏设备驱动模块卸载函数 static void _exit s3c2410_ts_exit(void)2可知触摸屏驱动中会产生两类
34、中断,一类是触点中断INT-TC,一类是X/Y位置转换中断INT-ADC。在前一类中断发生后,假设之前处于PEN_UP状态,那么应该启动X/Y位置转换。另外,将抬起中断也放在INT-TC处理程序中,它会调用tsEvent()完成等待队列与信号的释放。触摸屏设备驱动的触点/抬起中断处理程序static void s3c2410_isr_tc(int irq, void *dev_id, struct pt_regs *reg)当X/Y位置转换中断发生后,应读取X、Y的坐标值,填入缓冲区触摸屏设备驱动X/Y位置转换中断处理程序static void s3c2410_isr_adc(int irq,
35、 void *dev_id, struct pt_regs *reg)触摸屏设备驱动中获得X、Y坐标static inline void s3c2410_get_XY(void)3tsEvent最终为tsEvent_raw(),这个函数很关键,当处于PEN_DOWN状态时调用该函数,它会完成缓冲区的填充、等待队列的唤醒以及异步通知信号的释放;否那么处于PEN_UP状态,将缓冲区头清0,也唤醒等待队列并释放信号。触摸屏设备驱动的tsEvent_raw()函数static void tsEvent_raw(void)4在包含了对拖动轨迹支持的情况下,定时器会被启用,周期为10ms,在每次定时器处理
36、函数被引发时,调用start_ts_adc()开场X/Y位置转换过程。触摸屏设备驱动的定时器处理函数static void ts_timer_handler(unsigned long data)5在触摸屏设备驱动的翻开函数中,应初始化缓冲区、penStatus与定期器、等待队列及tsEvent时间处理函数指针。触摸屏设备驱动的翻开函数static int s3c2410_ts_open(struct inode *inode, struct file *filp)6触摸屏设备驱动的释放函数非常简单,删除为用于拖动轨迹所使用的定时器即可。触摸屏设备驱动的释放函数 static int s3c2
37、410_ts_release(struct inode *inode, struct file *filp)4.3 触摸屏设备驱动的读函数触摸屏设备驱动的读函数实现缓冲区中信息向用户空间的复制,当缓冲区有内容时,直接复制;否那么,如果用户阻塞访问触摸屏,那么进程在等待队列上睡眠,否那么,立即返回-EAGAIN。触摸屏设备驱动的读函数static ssize_t s3c2410_ts_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)4.4 触摸屏设备驱动的轮询及异步通知在触摸屏设备驱动中,通过s3c2410_ts_
38、poll()函数实现了轮询接口,这个函数的实现非常简单。它将等待队列添加到poll_table,当缓冲区有数据时,返回资源可读取标志,否那么返回0。触摸屏设备驱动的poll()函数static unsigned int s3c2410_ts_poll(struct file *filp, struct poll_table_struct *wait)而为了实现触摸屏设备驱动对应用程序的异步通知,设备驱动中要实现s3c2410_ts_fasync()函数。触摸屏设备驱动的fasync()函数static int s3c2410_ts_fasync(int fd, struct file *fil
39、p, int mode)5.结论 本设计充分利用OCMJ15x20D以及S3C44BOX内置资源FM7843,设计了ARM处理器控制LCD触摸屏的软硬件系统,该系统具有可定制特性。它不仅仅能够方便用户的对机床等其它设备的操纵,而且也使得开发职员对界面的修改即对产品的升级变得简单、快捷。本设计只是人机交互技术运用之一,同样其设计理念及相关理论同样也可以应用其它嵌入式开发系统中。参考文献1程昌南,方强等?ARMLinux入门及实践234黄智伟,邓月明,王彦?ARM9嵌入式系统设计根底教程?M北京:北京航空航天大学出版社,202185吕骏.?嵌入式系统设计?M.北京:电子工业出版社,20026王田苗,魏洪兴.?嵌入式系统设计实例及开发?M.北京:清华大学出版社,20217于明?ARM嵌入式系统设计及开发教程?M.北京:电子工业出版社,20068田泽.?ARM嵌入式Linux开发实验及实践?M.北京:北京航空航天大学出版社,20069周立功.?ARM&WinCE实验及实践基于S3C2410?M.北京:北京航空航天大学出版社,200710魏洪兴.?嵌入式系统设计师教程?M.北京:清华大学出版社,2006
限制150内