触摸屏电路设计与驱动开发

上传人:工**** 文档编号:591027926 上传时间:2024-09-16 格式:PPT 页数:32 大小:766.50KB
返回 下载 相关 举报
触摸屏电路设计与驱动开发_第1页
第1页 / 共32页
触摸屏电路设计与驱动开发_第2页
第2页 / 共32页
触摸屏电路设计与驱动开发_第3页
第3页 / 共32页
触摸屏电路设计与驱动开发_第4页
第4页 / 共32页
触摸屏电路设计与驱动开发_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《触摸屏电路设计与驱动开发》由会员分享,可在线阅读,更多相关《触摸屏电路设计与驱动开发(32页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统课件嵌入式系统课件1第十一章 触摸屏电路设计与驱动开发本章要点本章要点 触摸屏的工作原理触摸屏的工作原理 ADS7843触摸屏控制芯片的工作原理触摸屏控制芯片的工作原理 基于基于Linux输入设备子系统框架的驱动设计输入设备子系统框架的驱动设计 触摸屏硬件的软件操控原理触摸屏硬件的软件操控原理 Linux内核线程的作用内核线程的作用嵌入式系统课件嵌入式系统课件211.1 触摸屏的工作原理 触摸屏是一种简单、方便的输入设备,它的应用触摸屏是一种简单、方便的输入设备,它的应用随着信息社会的发展越来越普遍。为了操作方便,人随着信息社会的发展越来越普遍。为了操作方便,人们用触摸屏代替鼠标或键

2、盘,根据触笔点击的位置来们用触摸屏代替鼠标或键盘,根据触笔点击的位置来定位选择信息输入。目前在高档定位选择信息输入。目前在高档PDAPDA上,绝大部分都上,绝大部分都使用触摸屏作为输入设备。触摸屏附着在显示器的表使用触摸屏作为输入设备。触摸屏附着在显示器的表面,检测用户点击的位置。触摸屏在用户输入时产生面,检测用户点击的位置。触摸屏在用户输入时产生一个反映用户点击位置的信号。这个信号通常是模拟一个反映用户点击位置的信号。这个信号通常是模拟信号,它需要通过触摸屏控制器将模拟信号转换为数信号,它需要通过触摸屏控制器将模拟信号转换为数字信号字信号( (也就是用户点击的坐标也就是用户点击的坐标) ),

3、再送给处理器进行,再送给处理器进行处理。图处理。图11-111-1所示的是触摸屏、触摸屏控制器与处理所示的是触摸屏、触摸屏控制器与处理器连接的示意图。本章采用器连接的示意图。本章采用BBBB公司生产的公司生产的ADS7843ADS7843触触摸屏控制器进行硬件电路设计,将触摸屏与处理器连摸屏控制器进行硬件电路设计,将触摸屏与处理器连接起来。接起来。3 触摸屏按其技术原理可分为矢量压力传感式、电阻式、触摸屏按其技术原理可分为矢量压力传感式、电阻式、电容式、红外线式和表面声波式类,其中电阻式触摸屏在电容式、红外线式和表面声波式类,其中电阻式触摸屏在嵌入式系统中使用较多。嵌入式系统中使用较多。 如图

4、如图11-211-2所示,电阻式所示,电阻式触摸屏由触摸屏由4 4层透明的复合薄膜层透明的复合薄膜组成。最上面一层是外表面组成。最上面一层是外表面经过硬化处理、光滑防刮的经过硬化处理、光滑防刮的塑料层;最下面一层是玻璃塑料层;最下面一层是玻璃或有机玻璃构成的基层;在或有机玻璃构成的基层;在基层之上和塑料层内表面中基层之上和塑料层内表面中间是两层金属导电层,两导间是两层金属导电层,两导电层之间有许多细小的透明电层之间有许多细小的透明隔离点把这两层隔开。当手隔离点把这两层隔开。当手指触摸屏幕时,两导电层在指触摸屏幕时,两导电层在触摸点处接触。触摸点处接触。4 触摸屏的两个金属导电层是触摸屏的两个工

5、作面触摸屏的两个金属导电层是触摸屏的两个工作面( (通通常分别称为常分别称为X X工作面和工作面和Y Y工作面工作面) ),在每个工作面的两端各,在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极。若对一个工涂有一条银胶,称为该工作面的一对电极。若对一个工作面的电极对施加电压,则该在工作面上会产生均匀、作面的电极对施加电压,则该在工作面上会产生均匀、连续的平行电压分布。连续的平行电压分布。 四线式触摸屏的四线式触摸屏的X X工作面和工作面和Y Y工作面共有工作面共有4 4根引出线,根引出线,分别连到触摸屏的分别连到触摸屏的X X电极对和电极对和Y Y电极对上。结合图电极对上。结合图11-

6、111-1,当在当在X X方向的电极对施加一个确定的电压,而方向的电极对施加一个确定的电压,而Y Y方向电极方向电极对不加电压时,在对不加电压时,在X X平行电压场中,触点处的电压值可以平行电压场中,触点处的电压值可以在在Y+(Y+(或或Y-)Y-)电极上反映出来,通过测量电极上反映出来,通过测量Y+Y+电极对地的电电极对地的电压大小,便可得知触点的压大小,便可得知触点的X X坐标值。同理,当在坐标值。同理,当在Y Y电极对电极对加电压,而加电压,而X X电极对不加电压时,通过测量电极对不加电压时,通过测量X+X+电极的电压,电极的电压,便可得知触点的便可得知触点的Y Y坐标。坐标。5嵌入式系

7、统课件嵌入式系统课件611.2 ADS7843触摸屏控制器简介 如前所述,触摸屏产生的是模拟信号,将这个模如前所述,触摸屏产生的是模拟信号,将这个模拟信号转换为计算机能处理的数字信号需要通过触摸拟信号转换为计算机能处理的数字信号需要通过触摸屏控制器完成。屏控制器完成。 本章所用的触摸屏控制器本章所用的触摸屏控制器ADS7843ADS7843是是BBBB公司生产公司生产一款专用的触摸屏控制芯片,它采用一款专用的触摸屏控制芯片,它采用1616引脚小型薄型引脚小型薄型封装。该芯片有一个封装。该芯片有一个1212位的位的A/DA/D转换器,它作为触摸转换器,它作为触摸屏与屏与CPUCPU之间通信的桥梁

8、,能将触摸屏上触点的模拟之间通信的桥梁,能将触摸屏上触点的模拟电压转换成数字信号,从而准确判断出触点的坐标位电压转换成数字信号,从而准确判断出触点的坐标位置。置。ADS7843ADS7843的供电电压的供电电压VccVcc为为5V5V,参考电压,参考电压V VREFREF,为为1V1V+Vcc+Vcc,转换电压的输入范围为,转换电压的输入范围为0 0 V VREFREF。它支。它支持单端和差分两种测量方式,最高转换速率可达到持单端和差分两种测量方式,最高转换速率可达到125kHz125kHz。嵌入式系统课件嵌入式系统课件7 ADS7843 ADS7843的各引脚定义如的各引脚定义如P259P2

9、59表表11-111-1所列。所列。 芯片包含一个多路模拟开关组成的供电芯片包含一个多路模拟开关组成的供电- -测量电路测量电路网络和一个网络和一个1212位的位的A AD D转换器转换器( (参见图参见图11-3)11-3)。 ADS7843 ADS7843根据处理器发来的不同命令导通不同的模拟开关,向一根据处理器发来的不同命令导通不同的模拟开关,向一个工作面电极对提供参考电压,并把另一个工作面测量个工作面电极对提供参考电压,并把另一个工作面测量电极上的代表触点坐标位置的电压模拟量引入电极上的代表触点坐标位置的电压模拟量引入A AD D转换转换器。器。 ADS7843 ADS7843的电压的

10、测量方式有单端方式和差分方式的电压的测量方式有单端方式和差分方式两种,这两种测量方式可以通过命令控制字选择。当通两种,这两种测量方式可以通过命令控制字选择。当通过命令控制字,将过命令控制字,将VccVcc设置为参考电压时,设置为参考电压时,ADS7843ADS7843工作工作在单端方式;当将在单端方式;当将Y+/Y-Y+/Y-或者或者X+/X-X+/X-电极对设置为参考电电极对设置为参考电压时,压时,ADS7843ADS7843就工作在差分方式。就工作在差分方式。8 本书所使用的工作本书所使用的工作方式是差分方式。这主方式是差分方式。这主要是因为采用单端方式要是因为采用单端方式时,时,VccV

11、cc的波动会引起的波动会引起参考电压的波动,这将参考电压的波动,这将引起测量的误差。而在引起测量的误差。而在差分方式下,即使差分方式下,即使VccVcc发生波动,测量点电压发生波动,测量点电压(X+(X+电压电压) )和参考电压和参考电压(Y+(Y+、Y-Y-引脚之间的电引脚之间的电压压) )的比例也依然保持的比例也依然保持不变,测量结果不会发不变,测量结果不会发生波动,这样可以大大生波动,这样可以大大提高测量的精度。提高测量的精度。9嵌入式系统课件嵌入式系统课件10 以测量触摸点的以测量触摸点的Y Y坐标为例,首先通过坐标为例,首先通过命令控制字控制命令控制字控制ADS7843ADS7843

12、内部的模拟开关,内部的模拟开关,将将Y+Y+、Y-Y-引脚置为参考电压,引脚置为参考电压,X+X+引脚置为芯引脚置为芯片内部片内部A/DA/D模拟输入。此时测量到的电压和模拟输入。此时测量到的电压和参考电压的比例反映了参考电压的比例反映了Y Y轴坐标的大小。图轴坐标的大小。图11-411-4所示的就是测量触摸点的所示的就是测量触摸点的Y Y坐标的等效坐标的等效电路。电路。 同理,若要测量触点同理,若要测量触点X X轴坐标值,只要轴坐标值,只要将将X+X+、X-X-引脚置为与参考电压,引脚置为与参考电压,Y+Y+引脚置为引脚置为芯片内部芯片内部A/DA/D的模拟输入即可。的模拟输入即可。嵌入式系

13、统课件嵌入式系统课件1111.3 处理器与ADS7843的接口设计 PXA255 PXA255处理器与处理器与ADS7843ADS7843的接口电路涉及的接口电路涉及PXA255PXA255的的GPIOGPIO口以及地址总线和数据总线,它的电路设计如口以及地址总线和数据总线,它的电路设计如图图11-511-5所示。所示。11.3.1 11.3.1 电路接口设电路接口设计计ADS7843ADS7843具体外围电路设计,参见图具体外围电路设计,参见图11-611-612 微处理微处理PXA255PXA255与与ADS7843ADS7843的数字接口通过的数字接口通过MicrowireMicrowi

14、re的数据帧进行通信。芯片完成一次的数据帧进行通信。芯片完成一次A/DA/D转换要转换要2424个时钟周期,前个时钟周期,前8 8个时钟周期从个时钟周期从DINDIN引脚输入引脚输入8 8位命令控制字,然后等待一个时钟的位命令控制字,然后等待一个时钟的BUSYBUSY周期周期( (此时此时BUSYBUSY引脚会变高引脚会变高) ),最后用,最后用1515个个时钟周期从高位到低位从时钟周期从高位到低位从DOUTDOUT引脚逐位输出引脚逐位输出A/DA/D转换结果。具体时序如图转换结果。具体时序如图11-711-7所示。所示。11.3.2 11.3.2 MicrowireMicrowire数据帧结

15、数据帧结构构1314 Microwire Microwire数据传输可以分两个阶段:数据传输可以分两个阶段: 处理器向处理器向ADS7843ADS7843发送命令控制字。该阶段将决发送命令控制字。该阶段将决定定ADS7843ADS7843的工作方式和状态。该命令控制字一共的工作方式和状态。该命令控制字一共8 8位,位,每一位都有特定的作用和含义,它们分别决定每一位都有特定的作用和含义,它们分别决定ADCADC输入输入通道、通道、A/DA/D转换精度、参考电压输人模式、省电模式、转换精度、参考电压输人模式、省电模式、中断允许等,具体含义如中断允许等,具体含义如P262P262表表11-211-2

16、所列。所列。 处理器接收从处理器接收从ADS7843ADS7843发送过来的发送过来的A/DA/D转换结果。转换结果。该结果是个该结果是个1212位数据,它反映了触摸屏位数据,它反映了触摸屏X X方向或方向或Y Y方向的方向的逻辑坐标值。这两个逻辑坐标经过处理后可转成屏幕坐逻辑坐标值。这两个逻辑坐标经过处理后可转成屏幕坐标。标。 触笔坐标的读取要经过触笔坐标的读取要经过2 2次次A/DA/D转换。微处理器前后转换。微处理器前后要通过发送不同命令字要通过发送不同命令字, ,分别选通触摸屏控制器片内分别选通触摸屏控制器片内A/DA/D转换器转换器(ADC)(ADC)模块的模块的X X输入通道和输入

17、通道和Y Y输入通道,分别读输入通道,分别读取触笔的取触笔的X X坐标值和坐标值和Y Y坐标值。坐标值。15嵌入式系统课件嵌入式系统课件1611.4 触摸屏软件驱动原理 Linux Linux内核的输入内核的输入(Input)(Input)设备子系统为按键、鼠设备子系统为按键、鼠标、游戏控制杆、触摸屏等设备提供了设备驱动接口。标、游戏控制杆、触摸屏等设备提供了设备驱动接口。采用这个接口可简化设备驱动的设计,它的分层结构采用这个接口可简化设备驱动的设计,它的分层结构如图如图11-811-8所示。其中硬件操控层负责处理设备所有的所示。其中硬件操控层负责处理设备所有的底层硬件细节,这也是输入设备驱动

18、须实现的部分;底层硬件细节,这也是输入设备驱动须实现的部分;输入设备接口负责接收硬件操控层获取的原始数据并输入设备接口负责接收硬件操控层获取的原始数据并对其进行处理后送人输入设备子系统,输入设备对其进行处理后送人输入设备子系统,输入设备子系统通过子系统通过Input-EventInput-Event编程接口向用户程序提供设编程接口向用户程序提供设备的输入信息。备的输入信息。 触摸屏的驱动采用输入设备驱动接口设计,需要触摸屏的驱动采用输入设备驱动接口设计,需要完成的就是硬件操控层的编写。完成的就是硬件操控层的编写。11.4.1 11.4.1 LinuxLinux内核输入设备子系统驱动内核输入设备

19、子系统驱动架构架构17嵌入式系统课件嵌入式系统课件18 硬件操控层属于驱动程序的最底层,主要的功能是硬件操控层属于驱动程序的最底层,主要的功能是判断设备的状态、控制设备工作以及实现设备原始数据判断设备的状态、控制设备工作以及实现设备原始数据的读的读/写。设备所有的硬件细节基本由这层的程序处理。写。设备所有的硬件细节基本由这层的程序处理。编写硬件操控层的程序要考虑器件的物理电气特性和数编写硬件操控层的程序要考虑器件的物理电气特性和数字逻辑特性,以准确实现对设备的各种基本操作。在模字逻辑特性,以准确实现对设备的各种基本操作。在模块化程序设计中,根据实现功能的独立性一般将对硬件块化程序设计中,根据实

20、现功能的独立性一般将对硬件的基本操作编写为若干函数。例如可以将设备状态的判的基本操作编写为若干函数。例如可以将设备状态的判断写成一个函数,设备运转的控制写成一个函数,对设断写成一个函数,设备运转的控制写成一个函数,对设备数据的读备数据的读/写又写成另外一个函数。这样将所有硬件的写又写成另外一个函数。这样将所有硬件的底层特性利用模块化的方法封装起来。底层特性利用模块化的方法封装起来。 触摸屏驱动程序硬件操控层要处理的关键问题有触摸屏驱动程序硬件操控层要处理的关键问题有:设备的初始化、触笔状态的判断和触点原始坐标数据的设备的初始化、触笔状态的判断和触点原始坐标数据的读读/写。写。11.4.2 11

21、.4.2 硬件操控原硬件操控原理理设备初始化程序如下:设备初始化程序如下:1. 1. 设备初始设备初始化化触摸屏设备初始化所作的工作很简单,就是对相关硬件寄存触摸屏设备初始化所作的工作很简单,就是对相关硬件寄存器的设置。这里用到的器的设置。这里用到的GPDR0GPDR0是是PXA255 GPIOPXA255 GPIO口的控制寄存器,用口的控制寄存器,用于控制于控制GPIO0GPIO0GPIO31GPIO31口的输入口的输入/ /输出模式。若输出模式。若GPDR0GPDR0某位为某位为O O,则,则对应的对应的GPIOGPIO口设为输入,反之设为输出。口设为输入,反之设为输出。GPIO_bit(

22、ADS7843-GPIO_bit(ADS7843-BUSY)BUSY)用于取得用于取得ADS7843ADS7843的的BUSYBUSY脚在脚在3232位位GPDR0GPDR0寄存器中的对应位寄存器中的对应位(0x00000002)(0x00000002)。ADS7843_Enable_IRQ()ADS7843_Enable_IRQ()函数通过向函数通过向ADS7843ADS7843发送命发送命令控制字令控制字0X000X00使该触屏控制器中断使能使该触屏控制器中断使能( (参见表参见表11-1)11-1)。19状态判断函数程序如下:状态判断函数程序如下:2. 2. 状态判断函数状态判断函数这个

23、函数用于探测触笔的状态。若触笔按下,则函数返回这个函数用于探测触笔的状态。若触笔按下,则函数返回1 1;若触笔没按下,则函数返回若触笔没按下,则函数返回O O。函数中的。函数中的GPLR0GPLR0是个宏定义,它读是个宏定义,它读取取GPLR0GPLR0寄存器的值,它的值反映寄存器的值,它的值反映0 03131号号GPIOGPIO口的电平状态。由口的电平状态。由前面的硬件描述可知,当触笔没有按下时,前面的硬件描述可知,当触笔没有按下时,ADS7843ADS7843的的PENIRQPENIRQ引脚引脚为高电平,只有当触笔按下时其引脚电平才变低。从图为高电平,只有当触笔按下时其引脚电平才变低。从图

24、ll-5ll-5可知,可知,PENIRQPENIRQ与与GPIO5GPIO5相连,因此,相连,因此,GPLR0&GPIO_bit(ADS784_PENIRQ)GPLR0&GPIO_bit(ADS784_PENIRQ)的的值就能反映触笔的状态。值就能反映触笔的状态。20 触点坐标读取函数程序如触点坐标读取函数程序如P264:3. 3. 触点坐标读取函数触点坐标读取函数21 1 1接口的初始化接口的初始化 使用输入设备驱动接口之前要做一些接口的初始使用输入设备驱动接口之前要做一些接口的初始化工作,设定该接口的工作模式并告之对应设备的事化工作,设定该接口的工作模式并告之对应设备的事件类型,此外还要设

25、定整个驱动的件类型,此外还要设定整个驱动的open()open()函数和函数和closeclose()()函数。这些工作是通过对函数。这些工作是通过对struct input_devstruct input_dev类型的类型的结构体的成员变量的设置实现的。结构体的成员变量的设置实现的。 具体的工作如下:具体的工作如下:11.4.3 11.4.3 输入设备驱动接口的使输入设备驱动接口的使用用22 如果用到设备的如果用到设备的EV_ABSEV_ABS事件,则要设定结构体的事件,则要设定结构体的absminABS_XabsminABS_X、absmaxABS_XabsmaxABS_X、absminA

26、BS_YabsminABS_Y和和absmaxABS_YabsmaxABS_Y域。它们用来确定从设备接收数据的允域。它们用来确定从设备接收数据的允许取值范围。许取值范围。 设备注册之前必须设定好结构体的设备注册之前必须设定好结构体的namename、和等、和等域。这些成员变量用于存储设备的产品信息。域。这些成员变量用于存储设备的产品信息。 调用调用_set_bit()_set_bit()函数设置函数设置evbitevbit域的对应位,告域的对应位,告诉内核的输入设备子系统该设备会产生哪些类型的事诉内核的输入设备子系统该设备会产生哪些类型的事件;设置件;设置absbitabsbit域的对应位,告

27、诉内核设备会产生哪域的对应位,告诉内核设备会产生哪些类型的绝对值;设置些类型的绝对值;设置keybitkeybit域的对应位,告诉内核域的对应位,告诉内核设备会产生哪些类型的按键值。设备会产生哪些类型的按键值。 编写好驱动程序的编写好驱动程序的open()open()操作接口函数和操作接口函数和closeclose()()操作接口函数,并把它们的函数指针赋给和成员变操作接口函数,并把它们的函数指针赋给和成员变量。量。 23 做完这些工作之后就可以调用做完这些工作之后就可以调用input_device_register(struet input_dev input_device_register

28、(struet input_dev dev)dev)向内核注册设备。这个注册函数除了实现通向内核注册设备。这个注册函数除了实现通用的设备注册功能外,还会将内核中特定的设备用的设备注册功能外,还会将内核中特定的设备文件操作接口函数文件操作接口函数( (如如read()read(),write()write()等函数等函数) )映射到驱动程序中去。这样就简化了驱动的设计,映射到驱动程序中去。这样就简化了驱动的设计,不用在驱动程序中编写这些操作接口函数。不用在驱动程序中编写这些操作接口函数。 触摸屏驱动的初始化的源代码如触摸屏驱动的初始化的源代码如P266P266。 24 驱动接收到用户输入的数据后

29、,须使用事驱动接收到用户输入的数据后,须使用事件报告函数将数据发送到输入设备子系统。根件报告函数将数据发送到输入设备子系统。根据事件类型的不同,使用到的事件报告函数也据事件类型的不同,使用到的事件报告函数也略有不同。这些事件共有略有不同。这些事件共有3 3种基本类型,下面对种基本类型,下面对它们及相应的事件报告函数分别给予说明:它们及相应的事件报告函数分别给予说明:2. 2. 硬件输入数据的报告硬件输入数据的报告25利用等待队列实现阻塞型利用等待队列实现阻塞型Io EV_KEY EV_KEY事件。主要由按键和按钮等设备事件。主要由按键和按钮等设备触发,通过触发,通过input_report_k

30、ey(struet input input_report_key(struet input dev *devdev *dev,int codeint code,int value)int value)函数把发生函数把发生的事件通报给内核。的事件通报给内核。 EV_REL EV_REL事件。主要由鼠标等设备触发,事件。主要由鼠标等设备触发,通过通过input_report_rel(struct input_dev input_report_rel(struct input_dev *dev*dev,int codeint code,int value)int value)函数把发生的事函数把发生

31、的事件通报给内核。件通报给内核。 EV_ABS EV_ABS事件。主要由触摸屏这类能产生事件。主要由触摸屏这类能产生绝对值数据的设备触发,通过绝对值数据的设备触发,通过input_report_ input_report_ abs(struct input_dev *devabs(struct input_dev *dev,int codeint code,int int value)value)函数把产生的数据报给内核。函数把产生的数据报给内核。26利用等待队列实现阻塞型利用等待队列实现阻塞型Io 驱动程序报告的数据用结构体封装后放到驱动程序报告的数据用结构体封装后放到一个先人先出队列一个先

32、人先出队列(FIFO)(FIFO)中,内核对存入这个中,内核对存入这个FIFOFIFO的数据是有选择的,若有前后数据完全相的数据是有选择的,若有前后数据完全相同的情况,则内核只会选择第一个数据送入缓同的情况,则内核只会选择第一个数据送入缓存。这样可以避免冗余的数据占用队列空间。存。这样可以避免冗余的数据占用队列空间。这种措施可以避免用户将触笔按在一点不动的这种措施可以避免用户将触笔按在一点不动的情况下,产生大量冗余数据。情况下,产生大量冗余数据。27 触摸屏的中断处理用到了工作推后执行机制触摸屏的中断处理用到了工作推后执行机制,它采用它采用内核守护线程来完成须推后执行的工作。内核守护线程来完成

33、须推后执行的工作。 Linux Linux内核守护线程是一段一直运行在内核内核守护线程是一段一直运行在内核的特殊程序。它可以认为是一个特殊的进程,也的特殊程序。它可以认为是一个特殊的进程,也使用进程的任务结构体进行管理。使用内核守护使用进程的任务结构体进行管理。使用内核守护线程的目的是要在内核中开启一段代码为特定的线程的目的是要在内核中开启一段代码为特定的任务服务。它也可以作为一种工作推后执行机制任务服务。它也可以作为一种工作推后执行机制用于代替第用于代替第7 7章提到的工作队列机制。章提到的工作队列机制。11.4.4 11.4.4 中断处理中断处理28 触摸屏事件守护线程是整个触摸屏驱动最触

34、摸屏事件守护线程是整个触摸屏驱动最为核心的一段代码,它在为核心的一段代码,它在open()open()函数中被开启函数中被开启后便一直运行在内核当中。它的任务是不断监后便一直运行在内核当中。它的任务是不断监测触笔的状态,并根据触笔状态判断是否读取测触笔的状态,并根据触笔状态判断是否读取坐标数据。若触笔处于按下状态就以一定时间坐标数据。若触笔处于按下状态就以一定时间间隔把触笔的坐标数据送人内核,否则线程自间隔把触笔的坐标数据送人内核,否则线程自动进入睡眠态。动进入睡眠态。 具体的源代码如具体的源代码如P268P26829 内核守护线程在触摸屏未工作时处于休眠内核守护线程在触摸屏未工作时处于休眠态

35、。当触笔按下时,线程由中断服务程序唤醒,态。当触笔按下时,线程由中断服务程序唤醒,它从它从ADS7843ADS7843触屏控制器读取数据并向内核报告触屏控制器读取数据并向内核报告触笔位置;一旦触笔松开,线程马上会进入休触笔位置;一旦触笔松开,线程马上会进入休眠态。眠态。 唤醒线程的中断服务程序如唤醒线程的中断服务程序如P269P26930嵌入式系统课件嵌入式系统课件3111.5 基于触摸屏驱动的应用实例 为了便于理解这里只给出一个简单的触摸屏驱动为了便于理解这里只给出一个简单的触摸屏驱动应用实例。该应用示例的功能是读取触笔的逻辑坐标应用实例。该应用示例的功能是读取触笔的逻辑坐标值并将其在终端显

36、示出来。程序中用到两个结构体:值并将其在终端显示出来。程序中用到两个结构体:一个是一个是struct input_eventstruct input_event,这个结构体可将坐标数,这个结构体可将坐标数据的从输人设备子系统的缓存中读出;另一个是据的从输人设备子系统的缓存中读出;另一个是struct xyposition positionstruct xyposition position,这是个自定义结构体,这是个自定义结构体可保存触摸屏的逻辑坐标对。程序主要利用一个可保存触摸屏的逻辑坐标对。程序主要利用一个switchswitch的分支结构通过读取的分支结构通过读取struct input_eventstruct input_event结构结构体的事件代号,判断从驱动中读取数据的含义并将其体的事件代号,判断从驱动中读取数据的含义并将其赋给赋给positionposition对应的成员变量。如果一对坐标值的读对应的成员变量。如果一对坐标值的读取已经完成,就将其在终端显示出来。取已经完成,就将其在终端显示出来。 程序的具体代码见程序的具体代码见P270P270OVER !32

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号