【TP】产线检测CTP单体异常

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:

这里写图片描述

5.2.Rawdata检测处理流程图

这里写图片描述
图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)
这里写图片描述

图6. Col排列规则
它对RX的Rawdata只是一个粗调的过程;
Col值越大,Rawdate就越大,反之两者都越小,它们是成正比的;
6.3.Rawdata获取以及TX、RX获取的主要代码
131static int ft5x0x_read_rawdata(struct i2c_client *client, u16 rawdata[][FTS_RX_MAX],
132 u8 tx, u8 rx)
133{
134 u8 i = 0, j = 0, k = 0;
135 int err = 0;
136 u8 regvalue = 0x00;
137 u8 regaddr = 0x00;
138 u16 dataval = 0x0000;
139 u8 writebuf[2] = {0};
140 u8 read_buffer[FTS_RX_MAX * 2];
141 /scan/
142 err = read_reg(FTS_DEVICE_MODE_REG, alue);
143 if (err < 0) {
144 return err;
145 } else {
146 regvalue |= 0x80;
147 err = write_reg(FTS_DEVICE_MODE_REG, regvalue);
148 if (err < 0) {
149 return err;
150 } else {
151 for(i=0; i<20; i++)
152 {
153 msleep(8);
154 err = read_reg(FTS_DEVICE_MODE_REG,alue);
155 if (err < 0) {
156 return err;
157 } else {
158 if (0 == (regvalue >> 7))
159 break;
160 }
161 }
162 }
163 }
164
165/get rawdata/
166 //dev_dbg(&client->dev, “%s() – Reading raw data…n”, func);
167 for(i=0; i

来源:GodLieke

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2017年8月8日
下一篇 2017年8月8日

相关推荐