FT5406电容屏驱动移植总结

*目的(需求)及思路
完善FT5406电容屏驱动:
型号 FocalTech ft5406

*修改内容

修改位置 = kernel
分支 = remotes/origin/froyo_almond
change ID = commit 9a9c8769ae6c0a835f73f0ae615afd118f5d065a
ts: changed the FT5406 slave address

change ID = commit 7ef5f376aca5e23a6229eb0f5b8968ed932398aa
ts: fixed the bugs of FT5406

*可能的影响

备注:
关于上次电容屏移植的总结可参考以下链接http://lab5/bugfree/Bug.php?BugID=10118
本次提交主要修改的内容是针对报点算法的,主要是对多点触摸时手指离开的侦测。这也是所有电容屏调试的重点。截止目前没有看到任何一家芯片的FAE能对此提供可靠的代码。所以这部分东西都需要我们自己完成。针对这款IC,其芯片设置有RST引脚,但是模组厂却没有连接该引脚,而是连接了芯片的wake引脚用以让芯片进入低功耗模式。我们在前期调试时一直是将3.3V供电完成后才会将该引脚拉高以使芯片进入全速运行模式。然而,这样做芯片却无法工作。只有将FPC拔掉再从新插上后芯片才可正常工作。和FAE的沟通中,他们一直强调只要上电后,这个芯片就可以工作。我们当然会无条件的相信FAE,但是无论怎么搞都TMD没效果。我曾和高启飞怀疑过是否要将该wake引脚拉高后在开始供电。但是我们也只是转瞬即逝的想法。因为FAE都说了没什么时序要求,而且DATE sheet 上也没有提到任何时序要求。昨天我想到了在前面调试了好几个其他IC的电容TP,期间也遇到一些因为FAE给的信息错误导致的问题,我就想,没准儿这个FAE也是个大忽悠。。。。。 
于是乎,我便在IC的3.3V供电之前把这个wake引脚拉高了。你猜怎么着,,TNND,竟然都好了。。。。事实再一次证明大部分FAE都是混混!!!!!
总结一下,这个芯片要求在供电之前,这个wake引脚的状态不能是悬浮的,要么拉高,你要么拉低!就是你的提前配配先!BTW:因为TP的3.3V供电和LCM共用,所以,我在board_7x27.c的代码中找到系统初始化的部分(就是init) 然后在那里找到了lcdc的初始化函数,好了,现在把TP的引脚初始化放到这前边就好了。
其他的好像也没啥写的了。关于TP的移植,我总结下经验吧。没啥子难度。
1.看dateSheet 研究寄存器列表。知道我们感兴趣的寄存器。对于android来说,我们不需要从寄存器里面读手势,因为android的手势判断由上层应用完成。因此我们只会关心存放坐标的寄存器!
2.单点触摸的判断比较简单。大部分IC都会在某个寄存器表示手指按下和抬起的状态。但是当两点的时候就要注意了,因为很多IC在多点的状态下会采用栈的形式来存放信息,所以可能会出现坐标存储位置方面的疑惑,尤其是当两点变成一点的时候。有些寄存器栈的内容会“剧变”。此时,如果不能从其他方面获得有效的判断方法的话,你最简单的做法就是打出一系列的寄存器值,然后观察又两点变为一点时的寄存器变化,稍微用心便可总结一些规律出来的 。
3.一般情况下所有的两点都是由一点过度出来的,两点的离开也是经由一点的离开过度的。我的意思是当你认为你是两个手指同时触摸的,但实际上这两个手指还是有先后顺序的。当你认为你是两个手指同时离开的,其实他们也是有先有后的。基于这个方式,我们在多点判断是会留意,但是也有些TP 比如FT5406,他在多点处理的时候允许两点同时离开和两点同时出现!所以在编程是就要考虑到这些问题。否则你可能会发现手指离开了,点还在屏幕上!可悲的是这样的问题总是由我们自己发现的,FAE和dateSheet总是不把这些东西当问题列出来,我一直想不明白!(这有点儿类似于最终用户想要的,而软件设计者却总是想不到或者认为用户应该知道这些吧。。。。) 我真希望FAE能把我当傻子!从而把一切都告诉我。可是,他们却总以为我的智商很高!NND
兄弟们,今天就写道这里吧,知识不是女人,知识和经验是可以来分享的,所以我把我平时的点滴都放到了我的blog上,有事没事希望我们经常沟通,共同进步! 虽然神马都是浮云。但是每每在blog上写下东西的时候,我知道,我写的不是浮云。。。
这是最后一次提交代码。
后悔有期,我的曾经熟悉的兄弟姐妹们。 

你可能感兴趣的:(FT5406电容屏驱动移植总结)