新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 嵌入式linux 电阻触摸屏 (s3c2440)编程

嵌入式linux 电阻触摸屏 (s3c2440)编程

作者: 时间:2016-11-25 来源:网络 收藏



更多5线8线式的触摸屏介绍:http://www.elecfans.com/baike/waijiepeijian/chugan/20100324205083.html?1324351403
更多资料:http://yunxiong1020.blog.163.com/blog/static/76344309201110283759386/

1.2 在S3C2440中的触摸屏接口
SOC S3C2440的触摸屏接口是与ADC接口结合在一起的,框图如下:




3,触摸屏接口
XP、XM、YP、YM为四线电阻触摸屏接口,四条信号线分别代码的含义为:
nXPONPlus X-axis on-off control signalx轴正极开关控制信号
XMONMinus X-axis on-off control signalx轴负极开关控制信号
nYPONPlus Y-axis on-off control signaly轴正极开关控制信号
YMONMinus Y-axis on-off control signaly轴负极开关控制信号
触摸屏接口的模式有以下几种:
(1)、普通ADC转换模式
(2)、独立X/Y位置转换模式
(3)、自动X/Y位置转换模式
(4)、等待中断模式
我们主要接受触摸屏接口的 等待中断模式和自动X/Y位置转换模式,自动转换模式操作流程如下:触摸屏控制器自动转换X,Y的触摸位置,当转换完毕后将数据分别存放在寄存器ADCDAT0和ADCDAT1.并产生INT_ADC中断通知转换完毕。
更多详细情况请查阅:数据手册

等待中断模式:
Waiting for Interrupt Modesetting value is rADCTSC=0xd3;//
XP_PU, XP_Dis, XM_Dis, YP_Dis, YM_En.
当触摸后,触摸屏控制器产生INT_TC中断,等待中断模式下, Modesetting value (四个引脚设置应该为):
rADCTSC=0xd3;XP_PU, XP_Dis, XM_Dis, YP_Dis, YM_En.




当触摸后,触摸屏控制器产生INT_TC中断,四个引脚设置应该为:

引脚XPXMYPYM
状态PULL UP/XP DisableDisable (初始值即是)DisableEnable
设置1011

当中断产生后,X/Y的位置数据可以选择独立X/Y位置转换模式,和自动X/Y位置转换模式进行读取,采用自动X/Y位置转换模式进行读取需要对我们已经设置的TSC寄存器进行更改,在原有的基础上,
S 3C2410_ADCTSC_PULL_UP_DISABLE| S3C2410_ADCTSC_AUTO_PST | S3C2410_ADCTSC_XY_PST(0)。
数据转换完毕后,也会产生中断,通知转换结束。

2. 输入子系统模型分析
2.1 整体框架:

输入子系统包括三个部分 设备驱动、输入核心、事件处理器。
第一部分 设备驱动
是连接在各个总线上的输入设备驱动,在我们的SOC上,这个总线可以是虚拟总线platformbus,他们的作用是将底层的硬件输入转化为统一事件型式,向输入核心(Input core)汇报.





第二部分 输入核心 的作用如下:
(1) 调用input_register_device() used to 添加设备,调用input_unregister_device() 除去设备。(下面会结合触摸屏驱动讲述)
(2) 在/PROC下产生相应的设备信息,下面这个例子即是:
/proc/bus/input/devices showing a USB mouse:

I: Bus=0003 Vendor=046d Product=c002 Version=0120
N: Name="Logitech USB-PS/2 Mouse M-BA47"
P: Phys=usb-00:01.2-2.2/input0
H: Handlers=mouse0 event2
B: EV=7
B: KEY=f0000 0 0 0 0 0 0 0 0
B: REL=103

(3) 通知事件处理器对事件进行处理

第三部分是 事件处理器:
输入子系统包括了您所需要的大多数处理器,如鼠标、键盘、joystick,触摸屏,也有一个通用的处理器被叫做event
handler(对于内核文件evdev.C).需要注意的是随着内核版本的发展,event handler将用来处理更多的不同硬件的输入事件。在Linux2.6.29版本中,剩下的特定设备事件处理就只有鼠标和joystick。这就意味着越来越多的输入设备将通过event
handler来和用户空间打交道。事件处理层的主要作用就是和用户空间打交道,我们知道Linux在用户空间将所有设备当成文件来处理,在一般的驱动程序中都有提供fops接口,以及在/dev下生成相应的设备文件nod,而在输入子系统的驱动中,这些动作都是在事件处理器层完成的,我们看看evdev.C相关代码吧。


评论


技术专区

关闭