FAE疑难问题总结

FAE疑难问题总结
FAE疑难问题总结

疑难问题总结

一、传统互容1(06、16系列)

1、06系列项目,在下边缘画线,容易画出超出AA区的折线(尤其在分辨率特别大时)

此时需修改flowwork.c中void FlowWork(void)函数中参数:

3220行:

#ifdef TOUCHKEY_EN

structFrameInfoVar.ucFrameRow += 1;

if (structTouchKeyStatus.ucTouchKeyFlg == 1)

{for(i = 0; i

{structTouchStatusVar.structPointStatusArrayOriginal[structTouchStatusVar.ucCurrentPo intNum + i].usPosX = \

structTouchKeyStatus.ucTouchKeyIndex[i];

structTouchStatusVar.structPointStatusArrayOriginal[structTouchStatusVar.ucCurrentP ointNum + i].usPosY= \2100;(修改为按键Y坐标值)

}

3359行:

#ifdef TOUCHKEY_EN

//for(i = 0; i

for(i = 0; i

{if (structAppTouchStatusVar.structPointStatusArray[i].usPosY ==2100)(修改为按键Y坐标值) {j = structAppTouchStatusVar.structPointStatusArray[i].usPosX;

structAppTouchStatusVar.structPointStatusArray[i].usPosX= \

structTouchKeyStatus.aucTouchKeyOutput[j][0];

structAppTouchStatusVar.structPointStatusArray[i].usPosY= \

structTouchKeyStatus.aucTouchKeyOutput[j][1];

//break; }

#endif //TOUCHKEY_EN

2、电源干扰调试步骤;

(1)、增大CAP值;一般调试到最大,即160/80;

(2)、选择最佳频率;可通过频谱仪选择干扰最小的频率;

(3)、ID滤针算法;针对偶尔出现的干扰跳点问题,改善较明显;

(4)、前级针滤波算法;可很大程度上改善严重跳点问题,但会影响整体体验;

3、ESD跳点调试步骤;

(1)、打开ESD宏定义;

(2)、滤针;参见以下代码;

DateProcessPost.c中PointFilterProcess函数:

230行:

voidPointFilterProcess(STRUCTAPPTOUCHSTATUS *pstructTouchStatus)

{ if (pstructTouchStatus->ucLastPointNum> 0)

{return; }

if (pstructTouchStatus->ucCurrentPointNum>pstructTouchStatus->ucLastPointNum)

{if (G_ucTouchedCnter<2)(滤除的针数)

{G_ucTouchedCnter ++;

pstructTouchStatus->ucCurrentPointNum = pstructTouchStatus->ucLastPointNum;

else

{G_ucTouchedCnter = 0; }

if (pstructTouchStatus->ucCurrentPointNum == 0)

{pstructTouchStatus->bTouchStatus = 0; }

}

4、按键几率性无功能调试;

(1)、TP整体rowdate值调试至相差不超过300且TP需校准并保存;

(2)、打开按键宏定义,未使用的通道需挖空处理;

(3)、关闭防水宏;

5、手指分离算法;

详见说明文档(PeakMergeProcess);

6、电源干扰(表现为快速点击时乱跳点)

修改代码如下:

voidPointFilterProcess(STRUCTAPPTOUCHSTATUS *pstructTouchStatus)

{ if (pstructTouchStatus->ucLastPointNum> 0)

{return; }

if (pstructTouchStatus->ucCurrentPointNum>pstructTouchStatus->ucLastPointNum)

{

//if (G_ucTouchedCnter<= pstructTouchStatus->ucFilterPointCnt)

if (G_ucTouchedCnter< 2)//pstructTouchStatus->ucFilterPointCnt)

{//G_ucTouchedCnter ++;

G_ucTouchedCnter = G_ucTouchedCnter -1;

pstructTouchStatus->ucCurrentPointNum = pstructTouchStatus->ucLastPointNum;

}}

7、大尺寸整机(5506、5606),在应用中出现边缘区域问题处理;

最新FW“config.h”中:

#define TRACE_STABLE_OFFSET 210//180 //a bit smaller than biggest

touch diff-data

//differ的一致性的差值不要超过的阈值

二、传统互容2(02系列)

三、单层多点(i系列)

1、5436I划线飞点处理;

修改AppTouchKeyProcess.c函数,可之间改善此问题,参考代码见附件;

四、自容(6x06系列)

1、TP视窗与按键中间黑色丝印上报按键坐标问题调试;

按键上方的黑色区域一般客户要求触摸无功能,但在实际调试时,因为手指触摸面积较大,会让按键通道产生较大differ变化量从而上报按键坐标;如果将按键的触发阀值调高可改善此问题,但会使按键悬空时无功能,所以一般解决此问题时,我们加入AA区的最后两个通道做判断,即当按键通道的differ的变化量超出阀值,但AA区的最后两个通道differ大于一定数值时,我们认为触摸在黑色丝印区域,此时不上报坐标;

参考代码如下:

if(pstructTraceVar->sCapDiff[TP_CHANNEL_NUM-1]+pstructTraceVar->sCapDiff[TP_CHA NNEL_NUM-2]

{

if(pstructTraceVar->sCapDiff[TP_CHANNEL_NUM]> VIRTUAL_KEY_THRESHOLD)

{上报第一个按键坐标;}

if(pstructTraceVar->sCapDiff[TP_CHANNEL_NUM+1]> VIRTUAL_KEY_THRESHOLD)

{上报第二个按键坐标;}

if(pstructTraceVar->sCapDiff[TP_CHANNEL_NUM+2]> VIRTUAL_KEY_THRESHOLD)

{上报第三个按键坐标;}

}

有的项目在调试时遇到AA区Y方向坐标无法调到最大时,即开了拉边函数依然与最大像素差10个像素左右,则有可能是因为按键范围过大造成,同样可以采用此方法限制按键范围,改善此问题;

2、ESD跳点问题调试;

(1)、打开ESD宏定义;

(2)、调试大面积宏定义;

3、同侧画线不同甩尾效果调试;

此时需针对不同的甩尾效果,采用不同的甩尾修正参数;

参考代码如下:Margin_process.c中BorderShiftManualHandle函数;

以4列竖三角分辨率为800的项目为例

ShiftVal = (cLeftManualCoeff[(MARGIN_LX1 - Xnow) - 1])//定义修正甩尾的数组if (Ynew<=20) //当Y坐标小于20时,不修正

{ShiftVal = 0}

else if ( (Ynew>380)&&(Ynew<420) ) //坐标在380~420之间,按数组参数修正{ShiftVal = ShiftVal; }

else //其余情况,按数组的4/5来进行修正

{ShiftVal = ShiftVal * 4 /5; }

Ynew += ShiftVal;

4、6x06系列3个通道实现3个按键划线飞线问题处理办法;

6x06系列的IC,在用3个通道实现3个按键的项目中,当从AA区往处划线时,当手指划到按键上会触发功能造成折线,针对此问题需修改flowwork.c中ResetGlobleVars 函数:

static void ResetGlobleVars(void)

{if (0 == G_structTouchStatusVar.ucCurrentPointNum)

{#if (0 < TP_KEY_NUM)

if((G_structTraceVar.sCapDiff[TP_CHANNEL_NUM]+G_structTraceVar.sCapDiff[TP_CHAN NEL_NUM + 1]) < VIRTUAL_KEY_THRESHOLD)

(在此处多添加一个通道即:G_structTraceVar.sCapDiff[TP_CHANNEL_NUM + 2])

#endif

{G_bVirInvalidClearOnce = 1;

G_bVirKeyDisable = 0;}

}}

5、增强抗LCD Noise处理办法;

在sys_config.h中,修改如下:

/*

* AFE Scan data mode

* 0: Raw data (Only for testing, do NOT use for release code)

* 1: Filter 3 data

* 2: Filter 5 data

* 3: ACC data

*/

#define AFE_DATA_MODE 2

#if ((1 == AFE_DATA_MODE) || (2 == AFE_DATA_MODE))

/*

* AFE filter (Filter 3 or Filter 5) scan mode threshold

* Range 0~1023

* The smaller the value is, the more efficient for the filter function

*/

#define AFE_FILTER_MODE_THRES 5

五、驱动

1、APK升级的注意事项;

APK功能需根据“4_Focaltech Android平台Driver介绍_v1.0.pdf”增加驱动后,

打开FTS_CTL_IIC, SYSFS_DEBUG这两个宏。驱动中打开 FTS_CTL_IIC宏后,在/dev 目录下创建一个ft_rw_iic_drv的结点,通过adb shell chmod 777

/dev/ft_rw_iic_drv打开读写权限。

如果是高通,三星的平台,可以不加此驱动,在编译系统时选中i2c interface,

这样在/dev目录就会有i2c-*的读写结点。用adb shell chmod 777 /dev/i2c-*打

开读写权限来使用工具。

APK是通过ft_rw_iic_drv节点与芯片通信,如无节点或节点无读写权限都会导致

APK升级失败。

APK不能升级的情况有:

(1)、驱动只添加t5x0x_ts.c、ft5x0x_ts.h两个文件,完成电容屏的基

本功能,无APK升级功能,需添加其他四个文件。

(2)、未打开FTS_CTL_IIC, SYSFS_DEBUG这两个宏。

(3)、ft_rw_iic_drv节点未打开读写权限。

(4)、系统IIC驱动有问题导致升级失败,通过打印信息可以看到IIC读

写出错的信息,修改系统软件。

注1:以上的APK是指敦泰提供的APK。

注2:有部分APK是客户自己开发的,使用的I升级模式,不需通过节点ft_rw_iic_drv 与芯片通信,驱动可不加FTS_CTL_IIC, SYSFS_DEBUG宏。案例:华兴达40107,鼎智开发了一个APK升级工具,该工具使用I升级模式,将I文件打包到APK中,运行APK就自动升级,需升级程序时需将新的I文件交给鼎智的工程师从新生成APK。

6x06系列同时需打开sys.config中的FLASH_UPGRADE_WRITE_EN宏;

2、I文件升级失败常见原因;

I升级功能出错最多是因为无法进入升级模式,即第三步读ID的值为0。可对update 函数进行如下修改尝试。

for (i=0; i<50i++) //增加循环进入升级模式

{

/*********Step 1:Reset C TPM *****/

Reset();//软复位修改为硬件复位,需检测复位脚是否有动作。

delay_qt_ms(10+i);//时间为10~60ms,复位到进入升级模式的延时。

/*********Step 2:Enter upgrade mode *****/

auc_i2c_write_buf[0] = 0x55;

auc_i2c_write_buf[1] = 0xaa;

do

{

i ++;

i_ret = ft5x02_i2c_Write(client, auc_i2c_write_buf, 2);

delay_qt_ms(5);

}while(i< 5 );//去掉i_ret<0的条件,该条件表示通信失败,去掉是因为有IIC通信成功后//没进入升级模式的情况。

/*********Step 3:check READ-ID***********************/

delay_qt_ms(1);

ft5x02_upgrade_send_head(client);

auc_i2c_write_buf[0] = 0x90;

auc_i2c_write_buf[1] = auc_i2c_write_buf[2] = auc_i2c_write_buf[3] = 0x00;

ft5x02_i2c_Read(client, auc_i2c_write_buf, 4, reg_val, 2);

if (reg_val[0] == 0x79&®_val[1] == 0x06)

{

pr_info("[FTS] Step 3: CTPM ID,ID1 = 0x%x,ID2 = 0x%x\n",reg_val[0],reg_val[1]);

break;

}

else

{

dev_err(&client->dev,"[FTS]Step3:CTPMID,ID1=0x%x,ID2= %x\n",reg_val[0],reg_val[1]);

}

}

3、TP初始化后无法正常操作问题;

(1)、RK平台初始化reset后需delay 200ms 才能进行IIC操作;

(2)、全智平台初始化reset后需delay 100ms 才能进行IIC操作;

4、COB方案校准验证;

intfts_ctpm_auto_clb(struct i2c_client *client)

{unsigned char uc_temp = 0x00;

unsigned char i = 0;

unsigned char j = 0;

/*start auto CLB */

msleep(200);

ft5x0x_write_reg(client, 0, FTS_FACTORYMODE_VALUE);

添加读0寄存器是否0x40看是否进入工厂模式,

/*make sure already enter factory mode */

msleep(100);

/*write command to start calibration */

ft5x0x_write_reg(client, 2, 0x4);

msleep(300);

for (i = 0; i< 100; i++) {

ft5x0x_read_reg(client, 0, &uc_temp);

/*return to normal mode, calibration finish */

if (0x0 == ((uc_temp& 0x70) >> 4))

{j = 1;

break;}

}

查看j是否为1,看是否返回normal mode,为0时msleep(300);改长

//msleep(200);

/*calibration OK */

msleep(300);

ft5x0x_write_reg(client, 0, FTS_FACTORYMODE_VALUE); /*goto factory mode for store */

msleep(100); /*make sure already enter factory mode */

ft5x0x_write_reg(client, 2, 0x5); /*store CLB result */

msleep(300);

ft5x0x_write_reg(client, 0, FTS_WORKMODE_VALUE); /*return to normal mode */

msleep(300);

/*store CLB result OK */

return 0;}

六、硬件设计

1、竖三角设计时避免回勾及甩尾问题需特别注意事项;

(1)、坚持宽窄边比例>5:1;

(2)、按键ITO走线设计;

两个按键:加长左边(右边)连接按键部分ITO至右边(左边)按键处;

三个按键:a、两条通道形成三个按键,将形成中间按键的两条通道尽量靠近

AA区走线;b、三个通道形成三个按键,将形成中间按键的通道延长至左边(右

边)按键处。

四个按键:同三个按键处理方式处理。

(3)、将按键和AA区中间的悬浮块多切割几次。

2、自容量产时提高良率需注意事项;

(1)、外围GND线与按键通道走线的距离需至少大于0.1mm,建议越大越好(尤其激光工艺),如距离小于标准值时,当bongding区的ACF因为压合原因产生溢胶时,容易将这两条通断短路,造成按键不良;

七、量产问题

1、自容系列产线常见不良分析;

因为自容的图形为三角形设计,确认坐标的方法即为计算一组相对三角形的电容比例,所以比较好判断不良现象;

判断时我们一般延着垂直与三角形的方向画直线(即TP垂直放置,横三角画竖线,竖三角画横线,4列的图形需在上下半屏分别作判断),画线的位置取1/4或3/4处;

如果画出的线往三角形的外侧弯,则表明TP存在通道开路或超阻(此时可降低扫描频率,如果现象改善,则为超阻,反之为开路,开路的通道为与画线弯折反方向的通道);

如果画出的线往三角形的内侧弯,则表明TP存在短路;

如果画线直接断开,则表明一对通道同时开路;

2、传统互容TX、RX微短路测试方法;

采用3.3以上版本量产工具,同时需增加以下几项,参数设置范围需采样:

3、5336 通道短路的测试方法;

采用3.3以上版本工具,同时需增加以下几项:

一个是测试RX相邻通道短路、一个是测试TX相邻通道短路;使用默认值就可以。

原理:通道测试RX、TX通道在关闭防水功能下,检测其相邻通道自容Rawdata的参数,小于1000以下,就是短路现象。

相关主题
相关文档
最新文档