欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

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

    • 资源ID:6488053       资源大小:766.50KB        全文页数:32页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    第十一章 触摸屏电路设计与驱动开发,本章要点 触摸屏的工作原理 ADS7843触摸屏控制芯片的工作原理 基于Linux输入设备子系统框架的驱动设计 触摸屏硬件的软件操控原理 Linux内核线程的作用,11.1 触摸屏的工作原理,触摸屏是一种简单、方便的输入设备,它的应用随着信息社会的发展越来越普遍。为了操作方便,人们用触摸屏代替鼠标或键盘,根据触笔点击的位置来定位选择信息输入。目前在高档PDA上,绝大部分都使用触摸屏作为输入设备。触摸屏附着在显示器的表面,检测用户点击的位置。触摸屏在用户输入时产生一个反映用户点击位置的信号。这个信号通常是模拟信号,它需要通过触摸屏控制器将模拟信号转换为数字信号(也就是用户点击的坐标),再送给处理器进行处理。图11-1所示的是触摸屏、触摸屏控制器与处理器连接的示意图。本章采用BB公司生产的ADS7843触摸屏控制器进行硬件电路设计,将触摸屏与处理器连接起来。,嵌入式系统课件,3,嵌入式系统课件,4,触摸屏按其技术原理可分为矢量压力传感式、电阻式、电容式、红外线式和表面声波式类,其中电阻式触摸屏在嵌入式系统中使用较多。,如图11-2所示,电阻式触摸屏由4层透明的复合薄膜组成。最上面一层是外表面经过硬化处理、光滑防刮的塑料层;最下面一层是玻璃或有机玻璃构成的基层;在基层之上和塑料层内表面中间是两层金属导电层,两导电层之间有许多细小的透明隔离点把这两层隔开。当手指触摸屏幕时,两导电层在触摸点处接触。,嵌入式系统课件,5,触摸屏的两个金属导电层是触摸屏的两个工作面(通常分别称为X工作面和Y工作面),在每个工作面的两端各涂有一条银胶,称为该工作面的一对电极。若对一个工作面的电极对施加电压,则该在工作面上会产生均匀、连续的平行电压分布。四线式触摸屏的X工作面和Y工作面共有4根引出线,分别连到触摸屏的X电极对和Y电极对上。结合图11-1,当在X方向的电极对施加一个确定的电压,而Y方向电极对不加电压时,在X平行电压场中,触点处的电压值可以在Y+(或Y-)电极上反映出来,通过测量Y+电极对地的电压大小,便可得知触点的X坐标值。同理,当在Y电极对加电压,而X电极对不加电压时,通过测量X+电极的电压,便可得知触点的Y坐标。,11.2 ADS7843触摸屏控制器简介,如前所述,触摸屏产生的是模拟信号,将这个模拟信号转换为计算机能处理的数字信号需要通过触摸屏控制器完成。本章所用的触摸屏控制器ADS7843是BB公司生产一款专用的触摸屏控制芯片,它采用16引脚小型薄型封装。该芯片有一个12位的A/D转换器,它作为触摸屏与CPU之间通信的桥梁,能将触摸屏上触点的模拟电压转换成数字信号,从而准确判断出触点的坐标位置。ADS7843的供电电压Vcc为2.75V,参考电压VREF,为1V+Vcc,转换电压的输入范围为0 VREF。它支持单端和差分两种测量方式,最高转换速率可达到125kHz。,ADS7843的各引脚定义如P259表11-1所列。芯片包含一个多路模拟开关组成的供电-测量电路网络和一个12位的AD转换器(参见图11-3)。ADS7843根据处理器发来的不同命令导通不同的模拟开关,向一个工作面电极对提供参考电压,并把另一个工作面测量电极上的代表触点坐标位置的电压模拟量引入AD转换器。ADS7843的电压的测量方式有单端方式和差分方式两种,这两种测量方式可以通过命令控制字选择。当通过命令控制字,将Vcc设置为参考电压时,ADS7843工作在单端方式;当将Y+/Y-或者X+/X-电极对设置为参考电压时,ADS7843就工作在差分方式。,嵌入式系统课件,8,嵌入式系统课件,9,本书所使用的工作方式是差分方式。这主要是因为采用单端方式时,Vcc的波动会引起参考电压的波动,这将引起测量的误差。而在差分方式下,即使Vcc发生波动,测量点电压(X+电压)和参考电压(Y+、Y-引脚之间的电压)的比例也依然保持不变,测量结果不会发生波动,这样可以大大提高测量的精度。,以测量触摸点的Y坐标为例,首先通过命令控制字控制ADS7843内部的模拟开关,将Y+、Y-引脚置为参考电压,X+引脚置为芯片内部A/D模拟输入。此时测量到的电压和参考电压的比例反映了Y轴坐标的大小。图11-4所示的就是测量触摸点的Y坐标的等效电路。同理,若要测量触点X轴坐标值,只要将X+、X-引脚置为与参考电压,Y+引脚置为芯片内部A/D的模拟输入即可。,11.3 处理器与ADS7843的接口设计,PXA255处理器与ADS7843的接口电路涉及PXA255的GPIO口以及地址总线和数据总线,它的电路设计如图11-5所示。,11.3.1 电路接口设计,嵌入式系统课件,12,ADS7843具体外围电路设计,参见图11-6,嵌入式系统课件,13,微处理PXA255与ADS7843的数字接口通过Microwire的数据帧进行通信。芯片完成一次A/D转换要24个时钟周期,前8个时钟周期从DIN引脚输入8位命令控制字,然后等待一个时钟的BUSY周期(此时BUSY引脚会变高),最后用15个时钟周期从高位到低位从DOUT引脚逐位输出A/D转换结果。具体时序如图11-7所示。,11.3.2 Microwire数据帧结构,嵌入式系统课件,14,嵌入式系统课件,15,Microwire数据传输可以分两个阶段:处理器向ADS7843发送命令控制字。该阶段将决定ADS7843的工作方式和状态。该命令控制字一共8位,每一位都有特定的作用和含义,它们分别决定ADC输入通道、A/D转换精度、参考电压输人模式、省电模式、中断允许等,具体含义如P262表11-2所列。处理器接收从ADS7843发送过来的A/D转换结果。该结果是个12位数据,它反映了触摸屏X方向或Y方向的逻辑坐标值。这两个逻辑坐标经过处理后可转成屏幕坐标。触笔坐标的读取要经过2次A/D转换。微处理器前后要通过发送不同命令字,分别选通触摸屏控制器片内A/D转换器(ADC)模块的X输入通道和Y输入通道,分别读取触笔的X坐标值和Y坐标值。,11.4 触摸屏软件驱动原理,Linux内核的输入(Input)设备子系统为按键、鼠标、游戏控制杆、触摸屏等设备提供了设备驱动接口。采用这个接口可简化设备驱动的设计,它的分层结构如图11-8所示。其中硬件操控层负责处理设备所有的底层硬件细节,这也是输入设备驱动须实现的部分;输入设备接口负责接收硬件操控层获取的原始数据并对其进行处理后送人输入设备子系统,输入设备子系统通过Input-Event编程接口向用户程序提供设备的输入信息。触摸屏的驱动采用输入设备驱动接口设计,需要完成的就是硬件操控层的编写。,11.4.1 Linux内核输入设备子系统驱动架构,嵌入式系统课件,17,硬件操控层属于驱动程序的最底层,主要的功能是判断设备的状态、控制设备工作以及实现设备原始数据的读/写。设备所有的硬件细节基本由这层的程序处理。编写硬件操控层的程序要考虑器件的物理电气特性和数字逻辑特性,以准确实现对设备的各种基本操作。在模块化程序设计中,根据实现功能的独立性一般将对硬件的基本操作编写为若干函数。例如可以将设备状态的判断写成一个函数,设备运转的控制写成一个函数,对设备数据的读/写又写成另外一个函数。这样将所有硬件的底层特性利用模块化的方法封装起来。触摸屏驱动程序硬件操控层要处理的关键问题有:设备的初始化、触笔状态的判断和触点原始坐标数据的读/写。,11.4.2 硬件操控原理,嵌入式系统课件,19,设备初始化程序如下:,1.设备初始化,触摸屏设备初始化所作的工作很简单,就是对相关硬件寄存器的设置。这里用到的GPDR0是PXA255 GPIO口的控制寄存器,用于控制GPIO0GPIO31口的输入/输出模式。若GPDR0某位为O,则对应的GPIO口设为输入,反之设为输出。GPIO_bit(ADS7843-BUSY)用于取得ADS7843的BUSY脚在32位GPDR0寄存器中的对应位(0 x00000002)。ADS7843_Enable_IRQ()函数通过向ADS7843发送命令控制字0X00使该触屏控制器中断使能(参见表11-1)。,嵌入式系统课件,20,状态判断函数程序如下:,2.状态判断函数,这个函数用于探测触笔的状态。若触笔按下,则函数返回1;若触笔没按下,则函数返回O。函数中的GPLR0是个宏定义,它读取GPLR0寄存器的值,它的值反映031号GPIO口的电平状态。由前面的硬件描述可知,当触笔没有按下时,ADS7843的PENIRQ引脚为高电平,只有当触笔按下时其引脚电平才变低。从图ll-5可知,PENIRQ与GPIO5相连,因此,GPLR0&GPIO_bit(ADS784_PENIRQ)的值就能反映触笔的状态。,嵌入式系统课件,21,触点坐标读取函数程序如P264:,3.触点坐标读取函数,嵌入式系统课件,22,1接口的初始化 使用输入设备驱动接口之前要做一些接口的初始化工作,设定该接口的工作模式并告之对应设备的事件类型,此外还要设定整个驱动的open()函数和close()函数。这些工作是通过对struct input_dev类型的结构体的成员变量的设置实现的。具体的工作如下:,11.4.3 输入设备驱动接口的使用,嵌入式系统课件,23,如果用到设备的EV_ABS事件,则要设定结构体的absminABS_X、absmaxABS_X、absminABS_Y和absmaxABS_Y域。它们用来确定从设备接收数据的允许取值范围。设备注册之前必须设定好结构体的name、Id.product、Id.vendor和Id.version等域。这些成员变量用于存储设备的产品信息。调用_set_bit()函数设置evbit域的对应位,告诉内核的输入设备子系统该设备会产生哪些类型的事件;设置absbit域的对应位,告诉内核设备会产生哪些类型的绝对值;设置keybit域的对应位,告诉内核设备会产生哪些类型的按键值。编写好驱动程序的open()操作接口函数和close()操作接口函数,并把它们的函数指针赋给dev.open和dev.close成员变量。,嵌入式系统课件,24,做完这些工作之后就可以调用input_device_register(struet input_dev dev)向内核注册设备。这个注册函数除了实现通用的设备注册功能外,还会将内核中特定的设备文件操作接口函数(如read(),write()等函数)映射到驱动程序中去。这样就简化了驱动的设计,不用在驱动程序中编写这些操作接口函数。触摸屏驱动的初始化的源代码如P266。,嵌入式系统课件,25,驱动接收到用户输入的数据后,须使用事件报告函数将数据发送到输入设备子系统。根据事件类型的不同,使用到的事件报告函数也略有不同。这些事件共有3种基本类型,下面对它们及相应的事件报告函数分别给予说明:,2.硬件输入数据的报告,嵌入式系统课件,26,利用等待队列实现阻塞型Io,EV_KEY事件。主要由按键和按钮等设备触发,通过input_report_key(struet input dev*dev,int code,int value)函数把发生的事件通报给内核。EV_REL事件。主要由鼠标等设备触发,通过input_report_rel(struct input_dev*dev,int code,int value)函数把发生的事件通报给内核。EV_ABS事件。主要由触摸屏这类能产生绝对值数据的设备触发,通过input_report_ abs(struct input_dev*dev,int code,int value)函数把产生的数据报给内核。,嵌入式系统课件,27,利用等待队列实现阻塞型Io,驱动程序报告的数据用结构体封装后放到一个先人先出队列(FIFO)中,内核对存入这个FIFO的数据是有选择的,若有前后数据完全相同的情况,则内核只会选择第一个数据送入缓存。这样可以避免冗余的数据占用队列空间。这种措施可以避免用户将触笔按在一点不动的情况下,产生大量冗余数据。,嵌入式系统课件,28,触摸屏的中断处理用到了工作推后执行机制,它采用内核守护线程来完成须推后执行的工作。Linux内核守护线程是一段一直运行在内核的特殊程序。它可以认为是一个特殊的进程,也使用进程的任务结构体进行管理。使用内核守护线程的目的是要在内核中开启一段代码为特定的任务服务。它也可以作为一种工作推后执行机制用于代替第7章提到的工作队列机制。,11.4.4 中断处理,嵌入式系统课件,29,触摸屏事件守护线程是整个触摸屏驱动最为核心的一段代码,它在open()函数中被开启后便一直运行在内核当中。它的任务是不断监测触笔的状态,并根据触笔状态判断是否读取坐标数据。若触笔处于按下状态就以一定时间间隔把触笔的坐标数据送人内核,否则线程自动进入睡眠态。具体的源代码如P268,嵌入式系统课件,30,内核守护线程在触摸屏未工作时处于休眠态。当触笔按下时,线程由中断服务程序唤醒,它从ADS7843触屏控制器读取数据并向内核报告触笔位置;一旦触笔松开,线程马上会进入休眠态。唤醒线程的中断服务程序如P269,11.5 基于触摸屏驱动的应用实例,为了便于理解这里只给出一个简单的触摸屏驱动应用实例。该应用示例的功能是读取触笔的逻辑坐标值并将其在终端显示出来。程序中用到两个结构体:一个是struct input_event,这个结构体可将坐标数据的从输人设备子系统的缓存中读出;另一个是struct xyposition position,这是个自定义结构体可保存触摸屏的逻辑坐标对。程序主要利用一个switch的分支结构通过读取struct input_event结构体的事件代号,判断从驱动中读取数据的含义并将其赋给position对应的成员变量。如果一对坐标值的读取已经完成,就将其在终端显示出来。程序的具体代码见P270,嵌入式系统课件,32,OVER!,

    注意事项

    本文(触摸屏电路设计与驱动开发.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开