第11章--触摸屏电路设计与驱动开发课件

上传人:无*** 文档编号:241601225 上传时间:2024-07-08 格式:PPT 页数:32 大小:813.54KB
返回 下载 相关 举报
第11章--触摸屏电路设计与驱动开发课件_第1页
第1页 / 共32页
第11章--触摸屏电路设计与驱动开发课件_第2页
第2页 / 共32页
第11章--触摸屏电路设计与驱动开发课件_第3页
第3页 / 共32页
点击查看更多>>
资源描述
嵌入式系嵌入式系统统课课件件1第十一章 触摸屏电路设计与驱动开发本章要点本章要点 触摸屏的工作原理触摸屏的工作原理 ADS7843触摸屏控制芯片的工作原理触摸屏控制芯片的工作原理 基于基于Linux输入设备子系统框架的驱动设计输入设备子系统框架的驱动设计 触摸屏硬件的软件操控原理触摸屏硬件的软件操控原理 Linux内核线程的作用内核线程的作用嵌入式系嵌入式系统统课课件件211.1 触摸屏的工作原理 触摸屏是一种简单、方便的输入设备,它的应用触摸屏是一种简单、方便的输入设备,它的应用随着信息社会的开展越来越普遍。为了操作方便,人随着信息社会的开展越来越普遍。为了操作方便,人们用触摸屏代替鼠标或键盘,根据触笔点击的位置来们用触摸屏代替鼠标或键盘,根据触笔点击的位置来定位选择信息输入。目前在高档定位选择信息输入。目前在高档PDAPDA上,绝大局部都上,绝大局部都使用触摸屏作为输入设备。触摸屏附着在显示器的外使用触摸屏作为输入设备。触摸屏附着在显示器的外表,检测用户点击的位置。触摸屏在用户输入时产生表,检测用户点击的位置。触摸屏在用户输入时产生一个反映用户点击位置的信号。这个信号通常是模拟一个反映用户点击位置的信号。这个信号通常是模拟信号,它需要通过触摸屏控制器将模拟信号转换为数信号,它需要通过触摸屏控制器将模拟信号转换为数字信号字信号(也就是用户点击的坐标也就是用户点击的坐标),再送给处理器进行,再送给处理器进行处理。图处理。图11-111-1所示的是触摸屏、触摸屏控制器与处理所示的是触摸屏、触摸屏控制器与处理器连接的示意图。本章采用器连接的示意图。本章采用BBBB公司生产的公司生产的ADS7843ADS7843触触摸屏控制器进行硬件电路设计,将触摸屏与处理器连摸屏控制器进行硬件电路设计,将触摸屏与处理器连接起来。接起来。?嵌入式系统嵌入式系统?课件课件3?嵌入式系统嵌入式系统?课件课件4 触摸屏按其技术原理可分为矢量压力传感式、电阻式、触摸屏按其技术原理可分为矢量压力传感式、电阻式、电容式、红外线式和外表声波式类,其中电阻式触摸屏在电容式、红外线式和外表声波式类,其中电阻式触摸屏在嵌入式系统中使用较多。嵌入式系统中使用较多。如图如图11-211-2所示,电阻式所示,电阻式触摸屏由触摸屏由4 4层透明的复合薄膜层透明的复合薄膜组成。最上面一层是外外表组成。最上面一层是外外表经过硬化处理、光滑防刮的经过硬化处理、光滑防刮的塑料层;最下面一层是玻璃塑料层;最下面一层是玻璃或有机玻璃构成的基层;在或有机玻璃构成的基层;在基层之上和塑料层内外表中基层之上和塑料层内外表中间是两层金属导电层,两导间是两层金属导电层,两导电层之间有许多细小的透明电层之间有许多细小的透明隔离点把这两层隔开。当手隔离点把这两层隔开。当手指触摸屏幕时,两导电层在指触摸屏幕时,两导电层在触摸点处接触。触摸点处接触。?嵌入式系统嵌入式系统?课件课件5 触摸屏的两个金属导电层是触摸屏的两个工作面触摸屏的两个金属导电层是触摸屏的两个工作面(通通常分别称为常分别称为X X工作面和工作面和Y Y工作面工作面),在每个工作面的两端各,在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极。假设对一个涂有一条银胶,称为该工作面的一对电极。假设对一个工作面的电极对施加电压,那么该在工作面上会产生均工作面的电极对施加电压,那么该在工作面上会产生均匀、连续的平行电压分布。匀、连续的平行电压分布。四线式触摸屏的四线式触摸屏的X X工作面和工作面和Y Y工作面共有工作面共有4 4根引出线,根引出线,分别连到触摸屏的分别连到触摸屏的X X电极对和电极对和Y Y电极对上。结合图电极对上。结合图11-111-1,当在当在X X方向的电极对施加一个确定的电压,而方向的电极对施加一个确定的电压,而Y Y方向电极方向电极对不加电压时,在对不加电压时,在X X平行电压场中,触点处的电压值可以平行电压场中,触点处的电压值可以在在Y+(Y+(或或Y-)Y-)电极上反映出来,通过测量电极上反映出来,通过测量Y+Y+电极对地的电电极对地的电压大小,便可得知触点的压大小,便可得知触点的X X坐标值。同理,当在坐标值。同理,当在Y Y电极对电极对加电压,而加电压,而X X电极对不加电压时,通过测量电极对不加电压时,通过测量X+X+电极的电压,电极的电压,便可得知触点的便可得知触点的Y Y坐标。坐标。嵌入式系嵌入式系统统课课件件611.2 ADS7843触摸屏控制器简介 如前所述,触摸屏产生的是模拟信号,将这个模如前所述,触摸屏产生的是模拟信号,将这个模拟信号转换为计算机能处理的数字信号需要通过触摸拟信号转换为计算机能处理的数字信号需要通过触摸屏控制器完成。屏控制器完成。本章所用的触摸屏控制器本章所用的触摸屏控制器ADS7843ADS7843是是BBBB公司生产公司生产一款专用的触摸屏控制芯片,它采用一款专用的触摸屏控制芯片,它采用1616引脚小型薄型引脚小型薄型封装。该芯片有一个封装。该芯片有一个1212位的位的A/DA/D转换器,它作为触摸转换器,它作为触摸屏与屏与CPUCPU之间通信的桥梁,能将触摸屏上触点的模拟之间通信的桥梁,能将触摸屏上触点的模拟电压转换成数字信号,从而准确判断出触点的坐标位电压转换成数字信号,从而准确判断出触点的坐标位置。置。ADS7843ADS7843的供电电压的供电电压VccVcc为为5V5V,参考电压,参考电压VREFVREF,为为1V1V+Vcc+Vcc,转换电压的输入范围为,转换电压的输入范围为0 0 VREF VREF。它支。它支持单端和差分两种测量方式,最高转换速率可到达持单端和差分两种测量方式,最高转换速率可到达125kHz125kHz。嵌入式系嵌入式系统统课课件件7 ADS7843 ADS7843的各引脚定义如的各引脚定义如P259P259表表11-111-1所列。所列。芯片包含一个多路模拟开关组成的供电芯片包含一个多路模拟开关组成的供电-测量电路测量电路网络和一个网络和一个1212位的位的A AD D转换器转换器(参见图参见图11-3)11-3)。ADS7843ADS7843根据处理器发来的不同命令导通不同的模拟开关,向一根据处理器发来的不同命令导通不同的模拟开关,向一个工作面电极对提供参考电压,并把另一个工作面测量个工作面电极对提供参考电压,并把另一个工作面测量电极上的代表触点坐标位置的电压模拟量引入电极上的代表触点坐标位置的电压模拟量引入A AD D转换转换器。器。ADS7843ADS7843的电压的测量方式有单端方式和差分方式的电压的测量方式有单端方式和差分方式两种,这两种测量方式可以通过命令控制字选择。当通两种,这两种测量方式可以通过命令控制字选择。当通过命令控制字,将过命令控制字,将VccVcc设置为参考电压时,设置为参考电压时,ADS7843ADS7843工作工作在单端方式;当将在单端方式;当将Y+/Y-Y+/Y-或者或者X+/X-X+/X-电极对设置为参考电电极对设置为参考电压时,压时,ADS7843ADS7843就工作在差分方式。就工作在差分方式。?嵌入式系统嵌入式系统?课件课件8?嵌入式系统嵌入式系统?课件课件9 本书所使用的工作本书所使用的工作方式是差分方式。这主方式是差分方式。这主要是因为采用单端方式要是因为采用单端方式时,时,VccVcc的波动会引起的波动会引起参考电压的波动,这将参考电压的波动,这将引起测量的误差。而在引起测量的误差。而在差分方式下,即使差分方式下,即使VccVcc发生波动,测量点电压发生波动,测量点电压(X+(X+电压电压)和参考电压和参考电压(Y+(Y+、Y-Y-引脚之间的电引脚之间的电压压)的比例也依然保持的比例也依然保持不变,测量结果不会发不变,测量结果不会发生波动,这样可以大大生波动,这样可以大大提高测量的精度。提高测量的精度。嵌入式系嵌入式系统统课课件件10 以测量触摸点的以测量触摸点的Y Y坐标为例,首先通过坐标为例,首先通过命令控制字控制命令控制字控制ADS7843ADS7843内部的模拟开关,内部的模拟开关,将将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的模拟输入即可。的模拟输入即可。嵌入式系嵌入式系统统课课件件1111.3 处理器与ADS7843的接口设计 PXA255 PXA255处理器与处理器与ADS7843ADS7843的接口电路涉及的接口电路涉及PXA255PXA255的的GPIOGPIO口以及地址总线和数据总线,它的电路设计如口以及地址总线和数据总线,它的电路设计如图图11-511-5所示。所示。11.3.1 11.3.1 电路接口设电路接口设计计?嵌入式系统嵌入式系统?课件课件12ADS7843ADS7843具体外围电路设计,参见图具体外围电路设计,参见图11-611-6?嵌入式系统嵌入式系统?课件课件13 微处理微处理PXA255PXA255与与ADS7843ADS7843的数字接口通过的数字接口通过MicrowireMicrowire的数据帧进行通信。芯片完成一次的数据帧进行通信。芯片完成一次A/DA/D转换要转换要2424个时钟周期,前个时钟周期,前8 8个时钟周期从个时钟周期从DINDIN引脚输入引脚输入8 8位命令控制字,然后等待一个时钟的位命令控制字,然后等待一个时钟的BUSYBUSY周期周期(此时此时BUSYBUSY引脚会变高引脚会变高),最后用,最后用1515个个时钟周期从高位到低位从时钟周期从高位到低位从DOUTDOUT引脚逐位输出引脚逐位输出A/DA/D转换结果。具体时序如图转换结果。具体时序如图11-711-7所示。所示。11.3.2 Microwire11.3.2 Microwire数据帧结数据帧结构构?嵌入式系统嵌入式系统?课件课件14?嵌入式系统嵌入式系统?课件课件15 Microwire Microwire数据传输可以分两个阶段:数据传输可以分两个阶段:处理器向处理器向ADS7843ADS7843发送命令控制字。该阶段将决发送命令控制字。该阶段将决定定ADS7843ADS7843的工作方式和状态。该命令控制字一共的工作方式和状态。该命令控制字一共8 8位,位,每一位都有特定的作用和含义,它们分别决定每一位都有特定的作用和含义,它们分别决定ADCADC输入输入通道、通道、A/DA/D转换精度、参考电压输人模式、省电模式、转换精度、参考电压输人模式、省电模式、中断允许等,具体含义如中断允许等,具体含义如P262P262表表11-211-2所列。所列。处理器接收从处理器接收从ADS7843ADS7843发送过来的发送过来的A/DA/D转换结果。转换结果。该结果是个该结果是个1212位数据,它反映了触摸屏位数据,它反映了触摸屏X X方向或方向或Y Y方向的方向的逻辑坐标值。这两个逻辑坐标经过处理后可转成屏幕坐逻辑坐标值。这两个逻辑坐标经过处理后可转成屏幕坐标。标。触笔坐标的读取要经过触笔坐标的读取要经过2 2次次A/DA/D转换。微处理器前后转换。微处理器前后要通过发送不同命令字要通过发送不同命令字,分别选通触摸屏控制器片内分别选通触摸屏控制器片内A/DA/D转换器转换器(ADC)(ADC)模块的模块的X X输入通道和输入通道和Y Y输入通道,分别读输入通道,分别读取触笔的取触笔的X X坐标值和坐标值和Y Y坐标值。坐标值。嵌入式系嵌入式系统统课课件件1611.4 触摸屏软件驱动原理 Linux Linux内核的输入内核的输入(Input)(Input)设备子系统为按键、鼠设备子系统为按键、鼠标、游戏控制杆、触摸屏等设备提供了设备驱动接口。标、游戏控制杆、触摸屏等设备提供了设备驱动接口。采用这个接口可简化设备驱动的设计,它的分层结构采用这个接口可简化设备驱动的设计,它的分层结构如图如图11-811-8所示。其中硬件操控层负责处理设备所有的所示。其中硬件操控层负责处理设备所有的底层硬件细节,这也是输入设备驱动须实现的局部;底层硬件细节,这也是输入设备驱动须实现的局部;输入设备接口负责接收硬件操控层获取的原始数据并输入设备接口负责接收硬件操控层获取的原始数据并对其进行处理后送人输入设备子系统,输入设备对其进行处理后送人输入设备子系统,输入设备子系统通过子系统通过Input-EventInput-Event编程接口向用户程序提供设编程接口向用户程序提供设备的输入信息。备的输入信息。触摸屏的驱动采用输入设备驱动接口设计,需要触摸屏的驱动采用输入设备驱动接口设计,需要完成的就是硬件操控层的编写。完成的就是硬件操控层的编写。11.4.1 Linux11.4.1 Linux内核输入设备子系统驱动内核输入设备子系统驱动架架构构?嵌入式系统嵌入式系统?课件课件17嵌入式系嵌入式系统统课课件件18 硬件操控层属于驱动程序的最底层,主要的功能是硬件操控层属于驱动程序的最底层,主要的功能是判断设备的状态、控制设备工作以及实现设备原始数据判断设备的状态、控制设备工作以及实现设备原始数据的读的读/写。设备所有的硬件细节根本由这层的程序处理。写。设备所有的硬件细节根本由这层的程序处理。编写硬件操控层的程序要考虑器件的物理电气特性和数编写硬件操控层的程序要考虑器件的物理电气特性和数字逻辑特性,以准确实现对设备的各种根本操作。在模字逻辑特性,以准确实现对设备的各种根本操作。在模块化程序设计中,根据实现功能的独立性一般将对硬件块化程序设计中,根据实现功能的独立性一般将对硬件的根本操作编写为假设干函数。例如可以将设备状态的的根本操作编写为假设干函数。例如可以将设备状态的判断写成一个函数,设备运转的控制写成一个函数,对判断写成一个函数,设备运转的控制写成一个函数,对设备数据的读设备数据的读/写又写成另外一个函数。这样将所有硬件写又写成另外一个函数。这样将所有硬件的底层特性利用模块化的方法封装起来。的底层特性利用模块化的方法封装起来。触摸屏驱动程序硬件操控层要处理的关键问题有触摸屏驱动程序硬件操控层要处理的关键问题有:设备的初始化、触笔状态的判断和触点原始坐标数据的设备的初始化、触笔状态的判断和触点原始坐标数据的读读/写。写。11.4.2 11.4.2 硬件操控原硬件操控原理理?嵌入式系统嵌入式系统?课件课件19设备初始化程序如下:设备初始化程序如下:1.1.设备初始设备初始化化触摸屏设备初始化所作的工作很简单,就是对相关硬件存放触摸屏设备初始化所作的工作很简单,就是对相关硬件存放器的设置。这里用到的器的设置。这里用到的GPDR0GPDR0是是PXA255 GPIOPXA255 GPIO口的控制存放器,用口的控制存放器,用于控制于控制GPIO0GPIO0GPIO31GPIO31口的输入口的输入/输出模式。假设输出模式。假设GPDR0GPDR0某位为某位为O O,那么对应的那么对应的GPIOGPIO口设为输入,反之设为输出。口设为输入,反之设为输出。GPIO_bit(ADS7843-GPIO_bit(ADS7843-BUSY)BUSY)用于取得用于取得ADS7843ADS7843的的BUSYBUSY脚在脚在3232位位GPDR0GPDR0存放器中的对应位存放器中的对应位(0 x00000002)(0 x00000002)。ADS7843_Enable_IRQ()ADS7843_Enable_IRQ()函数通过向函数通过向ADS7843ADS7843发送命发送命令控制字令控制字0X000X00使该触屏控制器中断使能使该触屏控制器中断使能(参见表参见表11-1)11-1)。?嵌入式系统嵌入式系统?课件课件20状态判断函数程序如下:状态判断函数程序如下:2.2.状态判断函数状态判断函数这个函数用于探测触笔的状态。假设触笔按下,那么函数返这个函数用于探测触笔的状态。假设触笔按下,那么函数返回回1 1;假设触笔没按下,那么函数返回;假设触笔没按下,那么函数返回O O。函数中的。函数中的GPLR0GPLR0是个宏定是个宏定义,它读取义,它读取GPLR0GPLR0存放器的值,它的值反映存放器的值,它的值反映0 03131号号GPIOGPIO口的电平口的电平状态。由前面的硬件描述可知,当触笔没有按下时,状态。由前面的硬件描述可知,当触笔没有按下时,ADS7843ADS7843的的PENIRQPENIRQ引脚为高电平,只有当触笔按下时其引脚电平才变低。从引脚为高电平,只有当触笔按下时其引脚电平才变低。从图图ll-5ll-5可知,可知,PENIRQPENIRQ与与GPIO5GPIO5相连,因此,相连,因此,GPLR0&GPIO_bit(ADS784_PENIRQ)GPLR0&GPIO_bit(ADS784_PENIRQ)的值就能反映触笔的状态。的值就能反映触笔的状态。?嵌入式系统嵌入式系统?课件课件21 触点坐标读取函数程序如触点坐标读取函数程序如P264:3.3.触点坐标读取函数触点坐标读取函数?嵌入式系统嵌入式系统?课件课件22 1 1接口的初始化接口的初始化 使用输入设备驱动接口之前要做一些接口的初始使用输入设备驱动接口之前要做一些接口的初始化工作,设定该接口的工作模式并告之对应设备的事化工作,设定该接口的工作模式并告之对应设备的事件类型,此外还要设定整个驱动的件类型,此外还要设定整个驱动的open()open()函数和函数和closeclose()()函数。这些工作是通过对函数。这些工作是通过对struct input_devstruct input_dev类型的类型的结构体的成员变量的设置实现的。结构体的成员变量的设置实现的。具体的工作如下:具体的工作如下:11.4.3 11.4.3 输入设备驱动接口的使输入设备驱动接口的使用用?嵌入式系统嵌入式系统?课件课件23 如果用到设备的如果用到设备的EV_ABSEV_ABS事件,那么要设定结构体事件,那么要设定结构体的的absminABS_XabsminABS_X、absmaxABS_XabsmaxABS_X、absminABS_YabsminABS_Y和和absmaxABS_YabsmaxABS_Y域。它们用来确定从设备接收数据的允域。它们用来确定从设备接收数据的允许取值范围。许取值范围。设备注册之前必须设定好结构体的设备注册之前必须设定好结构体的namename、和等、和等域。这些成员变量用于存储设备的产品信息。域。这些成员变量用于存储设备的产品信息。调用调用_set_bit()_set_bit()函数设置函数设置evbitevbit域的对应位,告域的对应位,告诉内核的输入设备子系统该设备会产生哪些类型的事诉内核的输入设备子系统该设备会产生哪些类型的事件;设置件;设置absbitabsbit域的对应位,告诉内核设备会产生哪域的对应位,告诉内核设备会产生哪些类型的绝对值;设置些类型的绝对值;设置keybitkeybit域的对应位,告诉内核域的对应位,告诉内核设备会产生哪些类型的按键值。设备会产生哪些类型的按键值。编写好驱动程序的编写好驱动程序的open()open()操作接口函数和操作接口函数和closeclose()()操作接口函数,并把它们的函数指针赋给和成员变操作接口函数,并把它们的函数指针赋给和成员变量。量。?嵌入式系统嵌入式系统?课件课件24 做完这些工作之后就可以调用做完这些工作之后就可以调用input_device_register(struet input_dev input_device_register(struet input_dev dev)dev)向内核注册设备。这个注册函数除了实现通向内核注册设备。这个注册函数除了实现通用的设备注册功能外,还会将内核中特定的设备用的设备注册功能外,还会将内核中特定的设备文件操作接口函数文件操作接口函数(如如read()read(),write()write()等函数等函数)映射到驱动程序中去。这样就简化了驱动的设计,映射到驱动程序中去。这样就简化了驱动的设计,不用在驱动程序中编写这些操作接口函数。不用在驱动程序中编写这些操作接口函数。触摸屏驱动的初始化的源代码如触摸屏驱动的初始化的源代码如P266P266。?嵌入式系统嵌入式系统?课件课件25 驱动接收到用户输入的数据后,须使用事驱动接收到用户输入的数据后,须使用事件报告函数将数据发送到输入设备子系统。根件报告函数将数据发送到输入设备子系统。根据事件类型的不同,使用到的事件报告函数也据事件类型的不同,使用到的事件报告函数也略有不同。这些事件共有略有不同。这些事件共有3 3种根本类型,下面对种根本类型,下面对它们及相应的事件报告函数分别给予说明:它们及相应的事件报告函数分别给予说明:2.2.硬件输入数据的报告硬件输入数据的报告?嵌入式系统嵌入式系统?课件课件26利用等待队列实现阻塞型利用等待队列实现阻塞型Io EV_KEY EV_KEY事件。主要由按键和按钮等设备事件。主要由按键和按钮等设备触发,通过触发,通过input_report_key(struet input input_report_key(struet input dev*devdev*dev,int codeint code,int value)int value)函数把发生函数把发生的事件通报给内核。的事件通报给内核。EV_RELEV_REL事件。主要由鼠标等设备触发,事件。主要由鼠标等设备触发,通过通过input_report_rel(struct input_dev input_report_rel(struct input_dev *dev*dev,int codeint code,int value)int value)函数把发生的事函数把发生的事件通报给内核。件通报给内核。EV_ABSEV_ABS事件。主要由触摸屏这类能产生事件。主要由触摸屏这类能产生绝对值数据的设备触发,通过绝对值数据的设备触发,通过input_report_ input_report_ abs(struct input_dev*devabs(struct input_dev*dev,int codeint code,int int value)value)函数把产生的数据报给内核。函数把产生的数据报给内核。?嵌入式系统嵌入式系统?课件课件27利用等待队列实现阻塞型利用等待队列实现阻塞型Io 驱动程序报告的数据用结构体封装后放到驱动程序报告的数据用结构体封装后放到一个先人先出队列一个先人先出队列(FIFO)(FIFO)中,内核对存入这个中,内核对存入这个FIFOFIFO的数据是有选择的,假设有前后数据完全的数据是有选择的,假设有前后数据完全相同的情况,那么内核只会选择第一个数据送相同的情况,那么内核只会选择第一个数据送入缓存。这样可以防止冗余的数据占用队列空入缓存。这样可以防止冗余的数据占用队列空间。这种措施可以防止用户将触笔按在一点不间。这种措施可以防止用户将触笔按在一点不动的情况下,产生大量冗余数据。动的情况下,产生大量冗余数据。?嵌入式系统嵌入式系统?课件课件28 触摸屏的中断处理用到了工作推后执行机制,它采触摸屏的中断处理用到了工作推后执行机制,它采用内核守护线程来完成须推后执行的工作。用内核守护线程来完成须推后执行的工作。Linux Linux内核守护线程是一段一直运行在内核的特殊内核守护线程是一段一直运行在内核的特殊程序。它可以认为是一个特殊的进程,也使用进程的任程序。它可以认为是一个特殊的进程,也使用进程的任务结构体进行管理。使用内核守护线程的目的是要在内务结构体进行管理。使用内核守护线程的目的是要在内核中开启一段代码为特定的任务效劳。它也可以作为一核中开启一段代码为特定的任务效劳。它也可以作为一种工作推后执行机制用于代替第种工作推后执行机制用于代替第7 7章提到的工作队列机章提到的工作队列机制。制。11.4.4 11.4.4 中断处理中断处理?嵌入式系统嵌入式系统?课件课件29 触摸屏事件守护线程是整个触摸屏驱动最触摸屏事件守护线程是整个触摸屏驱动最为核心的一段代码,它在为核心的一段代码,它在open()open()函数中被开启函数中被开启后便一直运行在内核当中。它的任务是不断监后便一直运行在内核当中。它的任务是不断监测触笔的状态,并根据触笔状态判断是否读取测触笔的状态,并根据触笔状态判断是否读取坐标数据。假设触笔处于按下状态就以一定时坐标数据。假设触笔处于按下状态就以一定时间间隔把触笔的坐标数据送人内核,否那么线间间隔把触笔的坐标数据送人内核,否那么线程自动进入睡眠态。程自动进入睡眠态。具体的源代码如具体的源代码如P268P268?嵌入式系统嵌入式系统?课件课件30 内核守护线程在触摸屏未工作时处于休眠内核守护线程在触摸屏未工作时处于休眠态。当触笔按下时,线程由中断效劳程序唤醒,态。当触笔按下时,线程由中断效劳程序唤醒,它从它从ADS7843ADS7843触屏控制器读取数据并向内核报告触屏控制器读取数据并向内核报告触笔位置;一旦触笔松开,线程马上会进入休触笔位置;一旦触笔松开,线程马上会进入休眠态。眠态。唤醒线程的中断效劳程序如唤醒线程的中断效劳程序如P269P269嵌入式系嵌入式系统统课课件件3111.5 基于触摸屏驱动的应用实例 为了便于理解这里只给出一个简单的触摸屏驱动为了便于理解这里只给出一个简单的触摸屏驱动应用实例。该应用例如的功能是读取触笔的逻辑坐标应用实例。该应用例如的功能是读取触笔的逻辑坐标值并将其在终端显示出来。程序中用到两个结构体:值并将其在终端显示出来。程序中用到两个结构体:一个是一个是struct input_eventstruct input_event,这个结构体可将坐标数,这个结构体可将坐标数据的从输人设备子系统的缓存中读出;另一个是据的从输人设备子系统的缓存中读出;另一个是struct xyposition positionstruct xyposition position,这是个自定义结构体,这是个自定义结构体可保存触摸屏的逻辑坐标对。程序主要利用一个可保存触摸屏的逻辑坐标对。程序主要利用一个switchswitch的分支结构通过读取的分支结构通过读取struct input_eventstruct input_event结构结构体的事件代号,判断从驱动中读取数据的含义并将其体的事件代号,判断从驱动中读取数据的含义并将其赋给赋给positionposition对应的成员变量。如果一对坐标值的读对应的成员变量。如果一对坐标值的读取已经完成,就将其在终端显示出来。取已经完成,就将其在终端显示出来。程序的具体代码见程序的具体代码见P270P270?嵌入式系统嵌入式系统?课件课件32OVER!
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!