在ARM linux上使用usb接口的触屏
当把4根线,直接连接到开发板上面,为电阻屏预留的4个AD上面后,确实能够使用,不过鼠标并不能实时跟随触屏,会有跳动,而且在左侧区域按下后,鼠标跟随过来,当松开触摸屏后,鼠标并没有固定在按下的区域,而是回到右侧区域,类似于回到原点一样。触摸屏的最还没有反映,但是在Windows下触屏是没有问题的。查看了内核的AD输出结果,看不出来什么原因,不得已只好放弃。
在Windows下的驱动文件中找到了一份使用手册,里面介绍了USB的协议,比较详细。然后查找看看内核是不是能够支持USB的触摸屏,在网上找到资料说能够支持,文件在Linux3.6.9/drivers/input/touchscreen/usbtouchscreen.c,找到后,跟协议进行比较,发现egalax的数据协议和手册里面描述的基本一样。看到了曙光!对内核进行配置Device Drivers--->Input Device Support--->Touchscreens--->USB TouchScreen Driver--->eGalax, eTurboTouch CT-410/510/700 device support。这样就配置好了内核,编译移植到开发板,确实可以用,但是总有一个轴是反的(从左向右滑动时,鼠标从右向左运动,当我把4根触屏线,颠倒后,变成从上到下滑动时,鼠标从下向上运动),单独颠倒x轴或者y轴的两个线也解决不了。最后想到可以认为的通过软件颠倒一下。协议使用的是11位数据,即2048。所以在usbtouchscreen.c中更改egalax_read_data函数,在dev->x = ((pkt[0] & 0x0F) < 7) | (pkt[4] & 0x7F);下增加一行dev->x = 2048 - dev->x;重新编译移植。Ok!!!触屏完全可以使用。下图是使用的触摸屏。
经过之后的验证,这种方式不能算作是触摸屏,而更应该称之为触摸板,类似于笔记本的触摸板一样。如果要求没那么严格倒是可以使用。
ARMlinuxusb接口触 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)