您的位置:首页 > 移动开发 > Android开发

【Android】【TP】TP开发常见问题&分析&产线检测CTP单体异常

2017-12-11 17:33 1861 查看

TP开发常见问题&分析

1.TP重点关注范围以及checklist

先附录上TP的内部checklist,所有在列内容都为常见问题切比较严重问题,如下:上下电时序Operating VoltageTP ic and manufacturer ID(Module ID)Check I2C SCL设置频率工厂测试项目(RAW data/短路/划线测试)TP 中断频率TP报点率tp精准度tp灵敏度重力测试悬空测试(比如将设备放在抱枕或者手拿着选用,用手机触碰)不会出现误报点充电器干扰测试Double Tap,功耗增量FW升级流程确认(double confirm)1)不会反复升级2)不同模组版本号不能被包含在一个区间3)错烧FW,不能强制升级,使用默认的4)push低版本后不会升级fw升级修复:升级过程,强制断电,开机后要能正常升级OK快速点击TP,大面积触摸测试back、home、menu键多次快速点击测试两指横向/纵向划动(鬼点),断线测试手势支持boot the phone with no TP(取下TP测试手机是否能开机)boot in META mode日常防水测试

2.各问题分析日记

各需要观察硬件图等方面内容这里皆不具体描述。

TP ic and manufacturer ID(Module ID)

TP的IC和运营商ID确认是有必要的,尤其是存在多供应商和共基线开发情况。TP的IC ID和模组ID都是作为Firmware升级等功能的必备条件,该功能都是通过判断IC和模组ID来确定具体的手机,以便做正确driver的加载和Firmware的升级

Check I2C SCL设置频率

该项个人认为从HW方面check会更快捷容易,正常情况下该项已经工作电压、上下电时序都由HW去检测。

MINI测试项目(RAW data/短路/划线测试)

该项主要用于工厂检测用,rawdata是工厂检测TP的原始数据,从第一次检测分辨出屏体硬件方面是否有异常(详情请参考《产线检测CTP单体异常需求分析及实现》)。Rawdata都会有open\short测试,整体测试完成后会保存一个数据(一般存在sdcard/下,具体从driver中可以查到)。同样,driver会注册一个节点提供给上层的MMITest做接口,可供上层读取数据(工厂会从MMI中去读取,如果该项出现问题,会影响工厂生产)。同样,MMI也需要上层Rawdata.java配合工作,同时也需要FAE提供ini卡控文件来配合测试,至此,该项才能PASS。同理,在MMI中Firmware选择同样需要提供Firmware信息的接口给上层,具体是在MMI中的Firmware.java和SysClass.java中修改。

TP的报点率,灵敏度

主观测试项目需要和VAL,SPM分析,并等待客户验证反馈,决定将修改到什么层度,这两项修改都在Firmware中。需要FAE处理。

悬空测试,快速点击TP,大面积触摸测试,水雾测试

例如,在拨号界面长按一个数字,拨号界面中不会出现“该数字一直被反复点击”的情况,该项修改同样在firmware中。水雾测试的话是防汗方水雾测试,具体要根据TP本身的质量情况相关,高端TP可以接触大面积水而不会有异常影响,低端TP比如pixi4-4.5 VF的msg,只能做到水雾和汗,大块水滴都会造成乱报点等问题。

误报点,跳点,断线等主观情况

需要打开报点功能后测试全部屏幕,确定各部分屏幕都能正常报点,该问题同样block在firmware中。触摸屏(TP)乱跳原因总结导致触摸屏乱跳的原因大概分为5类:(1) 触摸屏硬件通道损坏   (2)触摸屏固件版本太低  (3) 触摸屏工作电压异常   (4) 射频干扰   (5)触摸屏校准异常[b]硬件通道损坏[/b]1.现象:       点击TP的某块区域,无反应,但是该区域周围被感应到,产生了触摸事件2.问题分析:       TP的感应区域是由一条条的感应通道组成的,若某几条感应通道坏了,那么点击该区域时,TP无法感应到电场       发生了变化,因此点击该区域时无反应,但是周围相邻的正常通道会感应到电场的变化,因此那块区域就会出现       触摸事件。给人的感觉就是,触摸了这块区域,但是另外一块区域响应了3.根本原因:       Tp硬件通道损坏4.改进措施:       更换硬件[b]TP固件版本太低[/b]1.现象:       TP可以正常使用,但是按下区域和响应区域成镜像反,例如按左边区域右边响应,按右边区域左边响应2.问题分析:       TP局部区域可以使用只是按下去不准确,但是但是中断正常,报点位置镜像反,引起此现象可能是TP固件太老,       与当前驱动不匹配引起的3.根本原因:       TP固件不匹配4.改进措施:       升级TP固件 [b]TP供电电压异常[/b]1.现象:       TP无规律的乱跳2.问题分析:       TP无规律的乱跳,说明TP自身工作不正常,当TP的供电小于其正常工作电压时,会引起此现象3.根本原因:       TP供电异常4.改进措施:       修改TP供电电压,使其正常,可能需要修改LDO供电,硬件有可能需要改板 [b]射频干扰[/b]1.现象:       拨号打电话时,号码拨出去之后,屏幕出现按键乱跳现象2.问题分析:       打电话时才出现乱跳现象,说明是打电话时有干扰,经测量Tp的工作电压,发现TP的工作电压在上下波动3.根本原因:       打电话引起TP电压上下波动4.改善措施:       调整TP工作电压,使其在正常的工作范围内 [b]TP校准异常[/b]1.现象:       大面积按压TP后,来电接听,触屏失效,需按两次power键才能解锁2.问题分析:       大面积按压TP后,TP可能发生了校准,此时TP的触摸响应的阈值发生改变,为手指按下时的阈值,当来电去接       听时,手指按上去后TP参照之前的阈值判断没有touch事件,因此就没有响应;当按power键休眠和唤醒后,TP       会进行校准,此时恢复正常状态,所以就可以使用了3.根本原因:       大面积触摸TP后,产生了不需要的校准,使得TP参考环境发生变化,导致正常触摸时TP产生了不正确的判断4.改善措施:       优化TP校准算法,避免发生不必要的校准,或者隔断时间按照正常的参考值进行校准一次

充电器干扰测试

工模干扰等情况,都很有可能是频段的问题,我司一般会对特定厂家的充电器或者市场占有率较高的充电器做匹配,某些低端的充电器是没有匹配的,所以有可能会出现一些干扰情况是无法避免的,具体情况具体分析。如果需要修改该方面内容,具体情况要和HW及FAE确定修改方式。

Double Tap

VDF高端机会有此需求,同样需要做到双击之后产生中断,sensor上报距离过近等事件,由上层关闭掉屏幕,此时TP需要重新进入手势等待模式。处理该需求的时候同时也要注意该功能带来的负面影响,比如已经出现过的,打开double tap后无法进入睡眠模式,或者是双击唤醒后会短时间TP失灵等问题。

FW升级流程确认

这是比较严重的一块逻辑,正常情况下该逻辑是由屛厂修改好后提供给我司,但不排除粗版本上会存在遗漏,尤其是新项目开发阶段,所以这是必须检查问题。确定固件判断流程是否正常,首先需要检查现有的firmware是否完整,再判断依据为TP的IC和模组ID,此ID是否是符合项目的需求,一般不介意自己独立优化修改该流程,如有修改,请double check。

Firmware断电保护机制

firmware升级保护机制,在firmware升级过程中断电,要保证开机的时候能继续上次升级。以上情况,在断电的时候,firmwarwe所有寄存器都会全部清零,所以开机的时候无法再读到手机中的firmware version以及各类ID信息,此时需要从boot中读取上次的数据,重新得到ID和version,然后继续完成升级功能。该块逻辑比较复杂且重要,需要多加熟悉。

back、home、menu键多次快速点击测试

确定三个虚拟键不存在问题,三个虚拟键除了在driver中报点外,上报的是事件还是坐标同样有区别,同时,上层也会有映射文件来具体控制每个按键的作用。映射值和driver中上报的值需要匹配。

两指横向/纵向划动(鬼点)

在check该项的时候,首先需要了解屏幕是自容屏还是互容屏,目前市面高端机都用的是互容屏体,支持报点数等方面具体有很大优势,而自容屏体,受限于硬件设计和成本,只能支持假两点的方式,并且在限制区域会出现报鬼点等现象,且无法优化。详情可以参考msg给出的自容屏设计概述中的缺陷。

3.其他

[b]GPIO的设置和延时[/b]对于TP相关,还有两个需要注意点,一个是GPIO在reset的时候,延时是必备的,但最小延时需要和FAE确定,比如reset后拉低后再拉高,是需要在低电平上200ms等待稳定后才能继续操作的。二是需要注意GPIO口输入还是输出,如果硬件量下来有问题的话,该方面是需要更正的,GPIO Reset一般都是默认是拉高的,要做一次reset,是需要拉低后再拉高,这中间的延时需要20ms,而reset完成后,需要有200ms延时,因为拉高之后,GPIO脚还不稳定,该状态下操作会造成上报错误的数据之类的问题,200ms的时间是给GPIO状态稳定下来,20ms则是则是要等待地电平有效时间,如果不加,那么整个reset失效。对于TP方面GPIO reset的方向(output/input),都是output。gpio_set_value()是设置拉高或者拉低电平,但不修改方向(方向在最早处设定),gpio_dirction_output/input()可以在设置拉高或者拉低的情况下设置方向。[b]Input上报事件[/b]“接触”一词用于描述直接接触表面的工具,手指、笔或者橡皮,都可以归类为接触。TP的报点方式,正常情况下driver是上报的坐标而非事件(可能会单独定义三个虚拟键为事件)。上报的input方式有两种,一种是不记名报点方式,另一种为带参数(slot)的报点方式(BTN是上报必须有的,至少第一种方式是必须上报该点的).ABS_MT_TOUCH_MAJOR接触主轴的长度,长度应该以表面的单位给出。如果表面有X倍Y分辨率,ABS_MT_TOUCH_MAJOR最大的可能值是sqrt(X^2+Y^2),即对角线。ABS_MT_TOUCH_MINOR接触面短轴长度,单位是表面单位。如果接触面是圆形的,此事件可以被忽略。ABS_MT_WIDTH_MAJOR接触工具的长轴长度,单位是表面单位。这应该被理解为工具自身的尺寸。接触面的方向和相应工具假设是相同的。ABS_MT_WIDTH_MINOR接触工具的短轴长度,单位是表面单位。如果是圆形,则忽略。以上四个值可以被用于派生关于接触的附加信息。ABS_MT_TOUCH_MAJOR/ABS_MT_WIDTH_MAJOR接近压力的概念。手指和手掌有不同的特性宽度。ABS_MT_PRESSURE压力,可以是任意单位,在接触区域。可能被用于相应的TOUCH和WIDTH,对于基于压力的设备或者任何空间信号密度分布设备。ABS_MT_ORIENTATION椭圆形的方向。这个值应该描述一个有符号的围绕触点中心的顺时针方向的旋转度。这个有符号值的范围是任意的,但是对于手指沿着表面Y轴应该返回0,负值当手指转向左边,正值当手指转向右边。当完全沿着X轴方向时,返回值的最大值。如果接触物体是圆形的,或者内核驱动不提供这些信息,方向可以被忽略。如果设备可以区分两个维度,但是不能保证任意值,那么可能是部分支持方向。这时,ABS_MT_ORIENTATION的值域应该是在[0,1] [4].ABS_MT_POSITION_X接触椭圆中心的X表面坐标。ABS_MT_POSITION_Y接触椭圆中心的Y表面坐标。ABS_MT_TOOL_TYPE接触工具的类型。很多内核驱动不区分不同工具类型,例如手指和笔。在这种情况下,事件应该被忽略。协议当前支持MT_TOOL_FINGER和MT_TOOL_PEN。[2].ABS_MT_BLOB_IDBLOB_ID将多个数据包编成到一组任意形状的接触。这是一个低级的匿名组,并且不应该和高级跟踪ID混淆。 [5].多数内核驱动没有blob能力,可以安全的忽略此事件。ABS_MT_TRACKING_IDTRACKING_ID标识了一个初始的接触,贯穿整个生命周期。[5].现在只有很少的设备支持,所以此事件通常被忽略。[b]ScreenPinning[/b]这是VDF在Android L上的一个特殊需求,是用来锁定屏幕无法使用home 和back虚拟键直接退出程序的,相当于儿童锁。该功能在TP底层的要求是需要同时上报back和menu键,如果不加处理的话,每一个虚拟键都会在不停的报DOWN/UP事件,相当于两手指都在快速点击按钮,实际上这样是不达标的,该功能需要back和menu同时且稳定的上报DOWN,不能有UP事件才能解锁。该功能处理同时需要注意是否会被USB接口所影响。针对该功能,如果在driver中修改的话,是需要修改报点逻辑的(比如msg)。也有方案说firmware中处理,比如FT。[b]Tp模拟P-sensor功能[/b]在有些低端项目上,由于成本等原因不会配置sensor,但为了达到在通话等过程中避免误触等操作,会用TP来模拟P-sensor。整体思维如下,整体TP牺牲灵敏度调高,在通话过程中,如果TP在有触碰的情况下接收到中断,并且触摸区域属于屏幕上半部分,那么则灭屏进去睡眠状态,在离开时TP没有受到触摸时,判断远离,屏幕点亮。该功能会设计到通话的流程以及TP中断流程和suspend以及resume,对于该功能同样会引起别的一些问题需要处理,比如在通话过程中如果接着耳机,或者本身因为造假限制,TP档次偏低,在重压等情况也会出现异常情况。

TP fw升级逻辑/FW升级中断回复机制



正常Touchpanel的升级是在probe函数里面进行的,一般会在升级函数中新建一个工作队列,让它独立于主进程,成为一个专门用于firmware升级的子进程。然后会根据升级的逻辑来进行升级前的判断和甄别。    主要判断手机中的FW和从.h/bin文件读取出来的FW是否是同一个IC/模组厂商。然后再判断对应版FW的版本号是否达到要求,满足上述一系列要求后才会进行升级。升级的过程大概持续10s左右,中途不会有log吐出。针对升级的逻辑,上海site的特殊要求是,在MMI版本不需要判断版本号强制进行升级。这样会验证在多次升级的过程是否会出现异常。    由于FW升级的时间较长,所以得保证它在出现异常时能够自我修复。对于在升级过程中被断电等情况中断,会导致手机中FW的版本号和IC厂商号都为0x00(因为断电会导致相应的寄存器全部为0x00).来开机流程读取到这样的版本号是会走断电保护机制,从boot中去读取之前的版本号进行升级。    正常的升级时对寄存器的操作都是边擦出边写入,所以不会出现从boot中完全无法读到信息的情况。但有两种特殊的升级方式:1.使用apk进行升级;2.通过节点直接写入.bin文件升级(FT保留该功能)    这两种方式都是先将手机中寄存器信息全部擦除后再写入。所以如果升级的过程被打断,很有可能造成直接变砖,无法重新回复的异常。
**产线检测CTP单体异常Rawdata采集需求分析及实现**
1.需求来源分析 
在产线式生产检测中,无法做到逐个去使用体验TP运行正常稳定的情况,于是可以采取读取Rawdata值的方式来初步检测CTP是否出现异常。为满足终端客户对触控屏体品质的要求,在终端设备上增加触控屏体验的功能。在触控IC方面一般分为两大类:互电容触控IC(如FT5316、FT5406)和自电容触控IC(如FT6206、FT6306)。互电容触控IC在终端设备上,建议检测Rawdata值。而自电容IC在终端设备上,建议检测Rawdata值和CI值。 
2.Rawdata原理分析 
Rawdata是测试线路导通性,这个值会有一个范围,偏离这个范围就存在OPEN或者SHORT的情况,一般测试软件线路与产品线路均有对应。Rawdata是ADC后的采样值,它与节点电容,屏阻电容,驱动信号打码事件和频率都有一定的联系,在手机中都“xxx“一个节点,通过该节点我们可以查询Rawdata的值,若超出正常范围,说明该TP出现异常。TP一般会使用一种透明的导电材质,叫做铟锡氧化物,英文简称ITO,用玻璃作为承载ITO的基材。 
3.检测参数说明及测试参数范围 
互电容触控IC: 
屏体rawdata值:该值是sensor节点电容经过相应算法换算出来的数字值,通过检测Rawdata值是否在控制范围内,可以有效的判断屏体是否有开、短路现象。 
Rawdata值的范围:6500~11000. 
自电容触控IC: 
屏体Rawdata值:该值是sensor节点电容经过相应算法换算出来的数字值,涌过检测rawdata值可以判断三角形Sensor对地电容是否过大或者过小而无法正常校准CI值,出现功能性不良,如开路、短路等。 
Rawdata值范围:11500~ 17500. 
屏体CI值:该值是sensor图案及走线的一个电容补偿值,用于保证Rawdata值在合理的范围内,便于功能的正常使用。 
CI值范围:2~253. 
4.可行性分析 
如果由人力逐个使用检测TP是否异常,在工序上不仅繁琐、机械,不仅消耗了大量的时间和人力资源,效率上也不理想,并且,仅在人力检测的情况下,在大量繁复的操作下,人为的检测很容易出现纰漏和错误。而先以产线式的方法粗略的通过Rawdata筛选过滤一次TP,将Rawdata超出阀值的TP标记出现,然后再单独、精确的去检测标记中的个例。不仅避免了由人为疲惫造成的错误,同样节约了人力资源和大量时间,虽然对Rawdata的采集存在一定的风险,但考虑到以产线检测Rawdata的方式带来的优势足够弥补可能出现的风险,所以推断该方案可行。 
5.方案概述 
5.1.Rawdata节点以及配置文件 
在手机中存在一个节点,用于采集rawdata的值(不用手机的节点位置不同,可以通过驱动代码去查找),例如Yarisxxl-L中,节点存放的位置以及节点信息如下图1: 


先将一个数量的批次检测该节点的信息,当采集到rawdata的值在阀值范围之内,则此项为PASS,若采集到的Rawdata值不在阀值之内,标记此项为FAIL。再将FAIL项的TP提取出来单独做检测,由于Rawdata值出现错误的情况多由硬件本身引起,一般情况都是反馈给IC屏厂厂商处理。
针对设置Rawdata、CI值范围的Rawdata Max和Rawdata Min值,正常情况下是使用自电容(互电容)机通用配置文件(ini格式)。具体内容如图2:


5.2.Rawdata检测处理流程图 


 
6.与Rawdata相关的参数 
6.1.内部反馈电容cap_internal 
反馈电容的调节主要影响了触摸变化量(diffdata)。在firwmare和PC TOOLS分TX反馈电容和RX反馈电容,在cap_internal变化时,通常Rawdata也会随之变化,但Rawdata通常由offset参数来控制。具体情况,下文中详细讲解:(在Firmware中的变量如图4) 


 
图4 firmware中的变量 
6.2.Offset参数 
offset调节的主要是影响扫描数据的Rawdata,在Firwmare和PC TOOLS中分TX基准电容(aucRowOffset)和RX基准电容(aucColOffset)。 
6.2.1.AucRowOffset 
表示TX方向的Offset电容调节; 
每个TX,RX交叉点的和不能超过0x0f,在firwmare中两个RX的值是合在一个字节中的,排RX规则如下:(如图5) 


图5 Row的排列规则 
在FR5X01和FT5X02中,所有的TX都是用第一个TX的值,但在FT5X06中,所有TX都可以用单独的Offset电容调节; 
在对TX方向的Rawdata进行调节是一个粗调的过程,Row值越大,Rawdata越大;RX值越小,Rawdata也越小。 
6.2.2.AucColOffset 
调节RX方向的Offset电容,同上,每个TX和TX交叉点的和不能超过0x0f,在Firmware中两个通道的值合在一个字节中,RX排列的顺序如下(如图6): 


图6. Col排列规则 
它对RX的Rawdata只是一个粗调的过程; 
Col值越大,Rawdate就越大,反之两者都越小,它们是成正比的; 
转载地址:http://blog.csdn.net/sinat_34606064/article/details/77921207
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: