ft5x06 ctpm调试

来源:互联网 发布:网络销售如何提高业绩 编辑:程序博客网 时间:2024/06/05 17:47

1.驱动正常加载:最后是以.o的形式加载,如果.ko要在一个初始脚本里加载。也可手动加载。前提示设备名字大小写一只,并且从地址是对的。

2,i2c通信正常。现在碰到的问题是i2c read error -6.。以前调gc2035时就碰到了。原先以为是引脚错了。其实是reset脚没做操作。

应该是先拉高,延迟100ms,然后拉低。延迟10s,然后在拉高。延迟10ms。

这样i2c就通了。 

今天fae过来说gpio脚没中断功能,(我已配置gpio脚为中断脚了。这个gpio脚必须为外部中断脚(EXT_INT)不能普通中断脚(INT)。)

然后飞线到专门的exint脚。tp。有中断了。

3.现在碰到tp点不准漂移现象了。悲催。!!

 然后我用adb 命令去看数据:



这是我单指放tp上获取的数据,如果我不移开。就一直循环打印这些数据。

最下面的0001 008b 00000001分别叫做type,code,value。
参考linux input,type 对应 【#define EV_KEY 0x01】,code 对应【#define KEY_MENU 139】(8b == 139),value 1表示按下,0表示松开。那么按键的协议就很清楚了,试着在adb shell里面输入“sendevent /dev/input/event2 0 139 1”和”sendevent /dev/input/event2 0 139 2“后发现menu弹出来了,和按键的效果一样。

触摸协议分析
ok,来点复杂的。触摸协议稍微麻烦点,分单点触摸和多点触摸。
先说单点触摸,打开模拟器。同样关闭自动旋屏,进入adb shell。鼠标点击一下屏幕,要足够快,不然数据太多。得到输出和下面类似。

 
可以看到模拟器上的设备数少了很多,单点触摸的协议每次点击会写6条信号。参考linux_input对应的值以及分析分别如下 
/dev/input/event0: 0003 0000 00000117   EV_ABS  ABS_X  0x117
触摸点的x坐标
/dev/input/event0: 0003 0001 0000020f    EV_ABS  ABS_Y  0x20f
触摸点的y坐标
/dev/input/event0: 0001 014a 00000001   EV_KEY  BTN_TOUCH 1
touch down
/dev/input/event0: 0000 0000 00000000   EV_SYN 0 0 
同步信号量
/dev/input/event0: 0001 014a 00000000   EV_KEY  BTN_TOUCH 0
touch up
/dev/input/event0: 0000 0000 00000000   EV_SYN 0 0

同步信号量
使用4.0的模拟器,settings-developer options-show touches 和pointer locations勾上后,可以看到点击的轨迹,adb shell后分别用sendevent输入以上消息,可以看到屏幕上出现点击效果。
再看多点触摸协议,使用adb shell 进入手机,关掉旋屏,getevent后快速点一下屏幕,可以看到类似如下输出。(每个厂商的协议可能不同,以下数据为小米1的)
第一个坐标
/dev/input/event1: 0003 0039 00000000 EV_ABS ABS_MT_TRACKING_ID 0
/dev/input/event1: 0003 0035 000001b0 EV_ABS ABS_MT_POSITION_X 0x1b0
/dev/input/event1: 0003 0036 000000d7 EV_ABS ABS_MT_POSITION_Y 0xd7
/dev/input/event1: 0003 003a 00000001 EV_ABS  ABS_MT_PRESSURE 0x1
/dev/input/event1: 0003 0032 00000001 EV_ABS ABS_MT_WIDTH_MAJOR 0x1
/dev/input/event1: 0000 0002 00000000 EV_SYN SYN_MT_REPORT 0
/dev/input/event1: 0000 0000 00000000 EV_SYN SYN_REPORT 0
第二个坐标
/dev/input/event1: 0003 0039 00000000 EV_ABS ABS_MT_TRACKING_ID 0
/dev/input/event1: 0003 0035 000001b0 EV_ABS ABS_MT_POSITION_X 0x1b0
/dev/input/event1: 0003 0036 000000d7 EV_ABS ABS_MT_POSITION_Y 0xd7
/dev/input/event1: 0003 003a 00000001 EV_ABS  ABS_MT_PRESSURE 0x1
/dev/input/event1: 0003 0032 00000001 EV_ABS ABS_MT_WIDTH_MAJOR 0x1
/dev/input/event1: 0000 0002 00000000 EV_SYN SYN_MT_REPORT 0
/dev/input/event1: 0000 0000 00000000 EV_SYN SYN_REPORT 0
第三个坐标
/dev/input/event1: 0003 0039 00000000 EV_ABS ABS_MT_TRACKING_ID 0
/dev/input/event1: 0003 0035 00000191 EV_ABS ABS_MT_POSITION_X 0x191
/dev/input/event1: 0003 0036 00000098 EV_ABS ABS_MT_POSITION_Y 0x98
/dev/input/event1: 0003 003a 00000001 EV_ABS  ABS_MT_PRESSURE 0x1
/dev/input/event1: 0003 0032 00000001 EV_ABS ABS_MT_WIDTH_MAJOR 0x1
/dev/input/event1: 0000 0002 00000000 EV_SYN SYN_MT_REPORT 0
/dev/input/event1: 0000 0000 00000000 EV_SYN SYN_REPORT 0
松开
/dev/input/event1: 0000 0002 00000000 EV_SYN SYN_MT_REPORT 0
/dev/input/event1: 0000 0000 00000000 EV_SYN SYN_REPORT 0
这里是一次点击,注意到ABS_MT_TRACKING_ID都是一样的。系统检测到三个点,每次会发送点的x,y,以及收到的压力,触摸的范围。最后两条表示松开这个点。如果两个手指同时点击,可以发现ABS_MT_TRACKING_ID会有两个不同的值,分别是两个点。据说最多支持5点。
每个厂商实现协议不一样。htc g3如下
/dev/input/event1: 0003 003a 002a0002
/dev/input/event1: 0003 0039 8b8c0ddc
/dev/input/event1: 0003 003a 00000002
/dev/input/event1: 0003 0039 8bac0dde
/dev/input/event1: 0003 003a 00000000
/dev/input/event1: 0003 0039 802814b1


这是android层获取触摸数据的方法。

当然还有kernel层。就是在驱动里加打印信息了