触摸屏驱动学习_第1页
触摸屏驱动学习_第2页
触摸屏驱动学习_第3页
触摸屏驱动学习_第4页
触摸屏驱动学习_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、触摸屏驱动学习http:/blog.csd n.n et/embeddedlo ng/article/details/6112623第一:四线式电阻式触摸屏原理16-T昱示了 AD转集碎MIK?!屛樱口門功能方哽團.;M 0转堆器设备基冉甬坏搂生的.口 盛D-Q-D-D-D-XPXMYPYWAVODAGND*至停1 ADC丘口昶攥牌第口功龍方柜芟S3C2440而言:在直接试用触摸屏的是时,引脚 XP、XM、XP和YM被用于和 触摸屏直接相连。只剩下AIN3:0共4个引脚用于一般的ADC输入;当不使用的 时候,XP、XM、XP和YM也可用于一般的 ADC输入。S3C2440的触摸屏接口可以驱动成

2、四线电阻触摸屏,四线触摸屏的等效电路 如图:14.4所示。图中粗线表示相互绝缘的两层导电层,当按下时,他们触点处 相连;不同的触点在x, y方向电压值不一样,将这两个值经过 A/D转换后即可 得到X,Y的坐标。触摸屏工作过程:YCC上植“r( Iw卜 牡3IPTFYCC-jiVADC MfIPYPUTM斗“图U 5粧按胖0H “尊待中軒甌t”时的毎效电鶉1. 触摸屏没有被按下时,等效电路如14.5所示S4, S5闭合,S1, S2, S3断开,即YM接地、XP上拉、XP作为模拟输入 (对CPU而言),YP作为模拟输入(对CPU而言),XM高阻。触摸屏没有按下的时候,Y_ADC因为上拉,为高电平

3、,当X轴和丫轴受挤 压而接触导通后,Y_ADC的电压由于连通到地变为低电平,此低电平可作 为中断触发信号来通知CPU发生“ Pen Down”事件,称为等待中断模式。Pen Down/Up:就是触摸屏按下(松开),都产生INT_TC中断信号,在2 .采集X_ADC电压,得到X坐标,等效电路如14.6所示S1, S3闭合,S2,S4,S5断开,即XP接上电源,XM接地,YP作为输入(对 CPU而言)、YM高祖、XP禁止上拉。这时,YP即X_ADC就是X轴的分压点, 进行A/D转换后就得到X坐标。3 .采集Y_ADC电压,得到Y坐标,等效电路如14.7所示。S2、S4闭合,S1,S3, S5断开,

4、即YP接上电源、YM接地、XP作为模拟输 入(对CPU而言),XM高祖,XP禁止上拉,这时,XP即Y_ADC就是y轴的分 压点,进行A/D转换后就得到y坐标。触摸屏采用的是PDD+MDD分层驱动程序.第二:几个概念MDD(Model Device Driver模式设备驱动,包含某一类型驱动所用的通用代码, 一般在驱动函数里面看不到原型,可以在 F:/WINCE500/PUBLIC/COMMON/OAK/DRIVERS/TOU找到。没有特定的需要不要 修改MDD层的代码。直接用就行。PDD(Platform Dependence Drive平台相关驱动,用户需要修改的,可以在 F:/WINCE5

5、00/PLATFORM/S3C2440/Src/Drivers/Tou(找 到。DDI(Device driver Interface设备驱动接口,是操作系统与驱动程序交互的接口协 议。DDSI(Device driver Service provider Interfac完)成 PDD与 MDD 之间的交互。 GWES (Graphics Windowing and Event Subsystem 图形窗口和事件子系统, winee里面包括:鼠标驱动,键盘驱动,触摸屏驱动,打印机驱动,显示驱动等。第二:PDD与MDD的主要功能MDD:包含通用的代码。提供面向GWES的 DDI接口,通过DDS

6、I来访问PDDb 对于同一代码可重复使用。进行中断处理。 中断处理线程IST通常位于这一层。PDD:包含与某款硬件相关的代码对于不同的硬件有不同的实现,只能与某一类MDD协同工作。实现MDD所需要的DDSI函数。第三:PDD与MDD如何工作如上图:当用用户访问硬件的时候,是使用 DDI函数与驱动程序交互,然后再驱动程 序内部,MDD通过DDSI函数调用PDD里面的函数,这就是我们通常驱动要实现 的部分。MDD于PDD只是在源代码逻辑层面,在驱动程序的二进制可执行代码中不会存在MDD于PDD的分层,PDD与MDD之间除了 DDSI之外还需要指定定义变量。第四:PDD与MDD各层主要函数简介MDD

7、 层:1. TouchPanelGetDeviceCaps()( DDI)用于查询触摸屏设备支持的具体功能,通过 DDSI(DdsiTouchPanelGetDeviceCaps(INTndex, LPVOID IpOutput)函数查询相应的 信息,当查询屏幕坐标信息时保存屏幕信息,供后面程序计算校准参数所用。.2。TouchPanelSetMode()用于设置触摸屏的工作模式(采用低采样率还是高采样率),当设置IST优先级 时直接通过内核 API来完成,而直接将其他设置交给 DdsiTouchPanelSetMode() 函数来处理。.3。TouchPanelEnable(PFN_TOUC

8、H_PANEL_CALLBA(pKhCallback)PfnCallback是指向处理touch panel事件的回调函数,该函数的执行动作:创建事件 hTouchPanelEvent和 hCalibrationSampleAvailable 其中当触笔按下或 抬起,或者定时器中断时会触发hTouchPanelEvent事件,而在校准状态下当有校 准数据输入时会触发hCalibrationSampleAvailable事件。初始化临界区,初始化所需的触摸屏中断gintrTouch和gintrTouchChanged并且把它们关联到事件hTouchPa nelEve nt中。创建1ST Touc

9、hPa nelplS并设定其优先级。(4 )该函数首先调用 TouchPanelpAttach函数,(在TouchPanelpAttach里面又调用和坐标校正相关的 TouchPanelSetCalibration函数);DdsiTouchPanelEnable(在 PDD 中实现)以及初始化触摸屏驱动的按下弹起、滑动两个线程.4。TouchPanelDisable()禁用触摸屏(touch panel)设备,该函数关闭ISR停止中断和注销事件及其他同步手 段,此函数调用了 DdsiTouchPanelDisable函数。.5。TouchPanelPowerHandler(BOOL boff)

10、Touch Screen的电源管理函数,boff:TRUE表示关闭电源,FALSE表示打开电源,其 只是调用DdsiTouchPanelPowerHandler(函数,该函数在进入或退出 poweroff状 态时产生。TouchPa nelCalibrati on APoi nt()该函数用于校准输入的触摸屏坐标,把触摸屏坐标 转换为显示坐标,利用了公式 Sx=A1*Tx+B1*Ty+(和Sy=A2*Tx+B2*Ty+C26. TouchPanelSetCalibration()该函数通过运行触摸屏校准程序时的校准动作获得显示坐标(Sx,Sy和触笔在十字形上按下的触摸坐标(Tx,Ty)用于计算

11、校准参数A1,B1,C1和A2,B2,C27. TouchPanelCalibrationAPoint()该函数用于校准输入的触摸屏坐标,把触摸屏坐标转换为显示坐标,利用了公式Sx=A1*Tx+B1*Ty+C和 Sy=A2*Tx+B2*Ty+C28. TouchPanelReadCalibrationPoint()在执行触摸屏校准程序时,用这个函数获得在当前校准点的十字形上点击的触摸 屏坐标9. TouchPanelReadCalibrationAbord()该函数在校准取消时被调用(在触摸屏校准程序运行过程中取消校准),仅仅设置 状态位和事件后返回。PDD层1. DdsiTouchPanel

12、GetDeviceCaps(INT ilndex丄PVOID IpOutput) 查询touch panel设备的相关信息。lln dex查询的索引值,其取值如下:TPDC_SAMPLE_RATEJD询采样率信息。TPDC_CALIBRATION_POINT_COUNTJ查询用于校验的点的个数。TPDC_CALIBRATION_POINT_I查询需要校验的点的坐标。LpOutput:根据iIndex值分别指向相关的信息。2. DdsiTouchPanelSetMode()设置Touch Pan el工作模式。iIn dex :模式索引TPSM_SAMPLERATE_HIGH_I高采样率TPSM

13、_SAMPLERATE_LOW_I低采样率lpI nput :指向包含相关信息的内存3. DdsiTouchPanelEnable()该函数所执行的动作:为需要用到的I/O, ADC,PWM和INT寄存器分配内存空间。配置触摸屏控制器、中断控制器和 PWM的寄存器。申请触摸屏中断gIntrTouch和定时器中断gIntrTouchChanged,并且对它们进 行初始化,为物理中断号分配相应的系统逻辑中断号。4. DdsiTouchPanelDisable()屏蔽触摸屏中断和释放为I/O,ADC,PWM和INT寄存器分配的 WinCE内存空间。.5. DdsiTouchPanelAttach()

14、只是简单地返回1。6. DdsiTouchPanelDetach()只是简单地返回0。DdsiTouchPa nelGetPoi nt(TOUCH_PANEL_SAMPLE_FLAGS * pTipStateFlags,INT * pUn calX,INT * pUn calY )获得Touch Pan el上被按下的点的状态和坐标。 pTipState:当前触摸点的状态,比如无效点,有效点,被按下的点等。 pUnCalX触摸点的X坐标 pUnCalY触摸点的Y坐标7. DdsiTouchPanelPowerHandler()设置touch panel的电源状态,boff:TRUE表示关闭电源,FALSE表示打开电源,8. TSP_VirtualFree(VOID); TSP_VirtualAlloc(VOID);分别是释放和获得 wince系统的堆内存9. TSP_SampleStart采样开始,利用 PWM定时器310. TSP_SampleStop停止采样,关闭定时器11. TSP_Power On该函数初始化 AD、定时器,以及消除INT_TC Touch screen interrupt屏蔽12. TSP_PowerOff屏蔽 INT_TC Touch screen interrupt13. TSP_Calibratio nPoi nt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论