转载自:http://blog.csdn.net/loongembedded/article/details/6683548
视频教程:http://download.farsight.com.cn/download/index.htm
课件:http://download.farsight.com.cn/download/pdf/Farsight081115WinCE.pdf
备注:
MSPS(million samples per second)表示每秒采样百万次,是转换速率的单位,而转换速率(conversion rate)是指完成一次从模拟量到数字量的AD转换所需要时间的倒数。我们知道S3C6410的ADC最大的A/D转换时钟频率是5MHZ,所以可以计算出一次A/D转换的时间=5*(1/5MHZ)=1us,所以1s中的采样次数=1s/1us=1MSPS,这就是1MSPS的由来。
1. 电阻式触摸屏的工作原理
四线电阻式触摸屏是电阻式家族中应用最广、最普及的一种。其结构由下线路(玻璃或薄膜材料)导电ITO层和上线路(薄膜材料)导电ITO层组成。中间有细微绝缘点隔开,其中下层的ITO与玻璃基板附着,上层的ITO附着在PET薄膜上。当触摸屏表面没有压力时,上下线路处于开路状态。一旦有压力施加到触摸屏表面。上下线路就会导通,控制器通过下线路导电ITO层在X坐标方向上施加驱动电压,通过上线路导电ITO层上的探针,侦测X方向上的电压,由此推算出触点的X坐标。通过控制器改变施加电压的方向,同理可测出触点的Y坐标,从而明确触点的位置。当有物体接触触摸屏表面并施以一定的压力时,上层的ITO导电层发生形变与下层ITO发生接触,该结构可以等效为相应的电路,如下图
![【电阻触摸屏】嵌入式Win <wbr>CE <wbr>电阻触摸屏 <wbr>驱动编程](https://i-blog.csdnimg.cn/blog_migrate/dfa71115b370cbf8f262418a0306d692.gif)
图1
计算触点的X,Y坐标分为如下两步:
⑴. 计算Y坐标,在Y+电极施加驱动电压Vdrive, Y-电极接地,X+做为引出端测量得到接触点的电压,由于ITO层均匀导电,触点电压与Vdrive电压之比等于触点Y坐标与屏高度之比。
⑵. 计算X坐标,在X+电极施加驱动电压Vdrive, X-电极接地,Y+做为引出端测量得到接触点的电压,由于ITO层均匀导电,触点电压与Vdrive电压之比等于触点X坐标与屏宽度之比。
测得的电压通常由ADC转化为数字信号,再进行简单处理就可以做为坐标判断触点的实际位置。
![【电阻触摸屏】嵌入式Win <wbr>CE <wbr>电阻触摸屏 <wbr>驱动编程](https://i-blog.csdnimg.cn/blog_migrate/0ca00aee440bb0ef8c15c7ce2767699d.gif)
图2
2. WINCE触摸屏驱动模型及接口函数
2.1 WINCE触摸屏驱动模型
WINCE触摸屏驱动模型如下图所示:
(什么是GWES:用户、用户应用程序和操作系统之间的 图形化用户接口http://zhidao.baidu.com/question/173304664.html&__bd_tkn__=67bc462d2c3793384959a767a4b169aa944cd5aa8078338d51fed8133ea5c69d362ad36bb4bcda3b39bb3949f6bbe47087ac3af56e60b1f4e7eb6015795bfe319d63affe5a0f03de0125270aa637bf0e3e029a717828b98fd13f42750228445bce130d3b3ac0d9a89f798faccbdc8c0bcc3520fe4eab)
(什么是DDI:DDI(Device-Driver Interface)一般的解释是:设备驱动程序接口(DDI))
(什么是MDD\PDD: MDD到OS间的接口 就是我们所说的driver和OS的接口,PDD是PDD层代码和MDD层代码间的接口! MDD层只负责完成driver与OS得交互,他吧与硬件相关的代码留作接口让PDD层来实现,所以如果要用MDD+PDD类型,就看MDD代码里面是怎么定义接口的)
![【电阻触摸屏】嵌入式Win <wbr>CE <wbr>电阻触摸屏 <wbr>驱动编程](https://i-blog.csdnimg.cn/blog_migrate/25fcf352e23452a332210f0a2326f73b.gif)
图3
在WINCE系统中,触摸屏驱动是一种分为MDD(Model Device Driver,模型设备驱动)层和PDD(Platform Device Drvier,平台设备驱动)层的分层驱动。其中MDD层一般不需要修改就可以直接使用,该部分提供DDI接口给GWES调用,而MDD层通过调用PDD层提供的DDSI函数接口来实现自身的功能。MDD层和PDD层除了DDSI函数接口之外,还要通过一些全局变量来协调者两层的工作,比如gIntrTouch和gIntrTouchChanged全局变量就是在PDD层定义,在MDD层和PDD层都有使用。
我们在触摸屏驱动中