? AFE是模拟前端的缩写-Analog Front End
? Raw Data和CI调好后,再对软件的各个滤波功能进行微调以使基本的画点,画线功能都正常。
调屏工具界面:
调屏前准备
●必备的:
待调试TP对应的Sensor图案。(可以根据图案来确定通道的顺序)
待调试TP的通讯接口信息。(I2C还是SPI还是USB)
待调试TP的目标分辨率信息。
●建议准备的:
整机(打开FTS权限 方便整机升级和读raw data)
TP半成品(调试工厂特殊测试模式参数使用)
调屏相关参数:
一、芯片型号
? 由于6206芯片和6306芯片支持的最大通道数不同以及芯片内部的通道映射也不同,所以要根据实际使用的芯片选择正确的芯片型号。
? 6206最大支持28全通道
? 6306最大支持36全通道
? FT6206
? 选择6206芯片
? FT6306
? 选择6306芯片
二、通信协议
目前6×06芯片和主机端的通信只支持标准的I2C协议,通信速率最大可以支持400kbit/s
三、屏厂ID和项目信息
设置正确的屏厂ID(CFG_PANEL_VENDOR_ID) 以供主机端在升级Firmware时可以根据该ID来识别不同的屏厂和升级不同的Firmware。
屏厂ID的范围是0x01~0xFE,可以从FocalTech定义的屏厂ID文档中找到常用屏厂的定义。
? 项目信息
? CFG_PROJECT_CODE
? CFG_CUSTOMER_CODE
四、I2C从地址
FT6x06芯片相对于主机来说是一个I2C设备 因此需要一个I2C从地址来和主机通信。
取值范围为0x60~0x7E
五、通道个数
1.需要设置6×06芯片使用的通道总个数。
2.TP_CHANNEL_NUM :该通道总数是指除单独实现虚拟按键的通道以外的其他所有通道的总数
3.虚拟按键可以单独使用通道,即用不同的ITO图案实现(和VA区分开),也可以和VA区用一样的ITO图案一起实现。
4.TP_KEY_NUM :单独实现虚拟按键通道的总数
? 注意:使用双端扫描时,TP_KEY_NUM不能为奇数,如果物理上确实只用到奇数个通道,并且需要使用双端扫描,请将通道个数加1转为偶数。(单端扫描不限制奇偶数)
下面举例说明一下通道的描述:
上图列出了带虚拟按键和不带虚拟案件的通道的配置。如果虚拟按键物理上有三个通道并且使用双端扫描,需要TP_KEY_NUM = 4,使用单端扫描则不需要+1,直接写:TP_KEY_NUM = 3
六、芯片通道扫描顺序
? TP_CHANNEL_ORDER
? 芯片通道扫描顺序的取值范围就是实际的通道Index,从0开始,6206最大为27, 6306最大35。
? 为了符合软件算法的需要,期望屏体先扫描屏幕的上半部分,再扫描下半部分。对于每个部分,每列之间按照原点方向从左到右扫描,每列的2个通道需要连续扫描,且这2个通道按照原点方向先扫描上边通道,再扫描下边通道。
虚拟按键区的通道需要在VA区通道后再扫描,且按照从左到右的原则。因此:
VA区通道的顺序只需从屏体的原点方向开始,先读取上半部分,再读取下半部分。每部分的列通道从左到右,列内部从上到下读出顺序即可。
? 虚拟按键通道顺序按照从左到右的顺序读出即可。
?如果使用双端扫描,并且虚拟按键通道是奇数个,需要在最后添加一个没用到的无效通道index转换为偶数个通道。
下面举例说明:
七、扫描方式
? AFE_SCAN_MODE
? 单端扫描 :每次扫描单个通道。
? 双端扫描 :每次按照通道顺序的设置扫描两个通道。
? 双端扫描可以有更快的扫描速度,所以可以搭配更高的扫描次数来提高精度,同时双端扫描抗电源噪声能力也会增强。不足之处是由于pattern的特点,双端扫描会使上下两边更不容易到边,跟单端扫描比较需要更大的拉边参数。
八、扫描次数
? AFE_SAMPLE_CYCLE
? 取值范围为3~5,分别对应64次扫描,128次扫描,和256次扫描。
? N次扫描意味着芯片在扫描通道时,会连续对其扫描N次,然后返回N次扫描结果的和值。
? 扫描次数越多,扫描的精度越高,但是报点频率会降低。
九、防哈气/防水处理
? AFE_WATERPROOF_EN
? 1:使用特殊的防水扫描方式
? 0:使用一般的扫描方式
? AFE_WATERPROOF_LVL
? 防水级别选择,0~3级可选,级别越高,防水能力越强,推荐使用3级。
? 对于个别有RF干扰的项目,需要适当使用低级别防水等级(如1级)。
十、扫描频率
? AFE_SCAN_K1_DELAY :扫描时的采样时间,最小值为7。
? AFE_SCAN_K2_DELAY :扫描时的充电时间,最小值为9
? AFE的扫描频率计算公司:4.8M Hz / (AFE_SCAN_K1_DELAY + AFE_SCAN_K2_DELAY)
? 扫描频率越高,报点频率也相应越高,但是可能在某些频段存在LCD或者电源等干扰,针对具体的项目需要,可以调整K1,K2选择合适的扫描频率。
十一、VDD5电压
? VDD5_VOL_SEL
? 从3.25V到5.65V,13档可选,步长为0.2V。
? 默认使用10(5.25V)。
十二、触摸阈值
? RV_G_THGROUP
? 当上下两个通道的differ值之和大于该值时软件就可能会报点。
? RV_G_THGROUP值越小触摸灵敏度越高,推荐值为3000,具体需要根据实际项目调整。
十三、CS值
CHANNEL_BASE_VAL_SET :应用于VA通道
KEY_BASE_VAL_SET :应用于Key通道
? Capacitance Base
? CS调整的目的是找到一个合适的CS值,使软件自动校正后得到的每个通道的Raw Data趋于235*san_times(scan_times大于64时,按照64进行计算:RawData大约为:15040左右),并且每个通道的CI值最小值应该在x (单体TP:x=70,整机:x=50)左右, 最大值不应高于250.可以通过TP tools界面查看
十四、工厂特殊测试模式下的CS值
FIRST_PART_CS_VAL_TESTMODE_x :前FIRST_PART_CH_NUM个VA区通道在测试模式x下的CS值
OTHER_PART_CH_VAL_TESTMODE_x :后(TP_CHANNEL_NUM- FIRST_PART_CH_NUM) 个VA区通道在测试模式x下的CS值
KEY_CS_VAL_TESTMODE_x :独立虚拟按键通道在测试模式x下的CS值
CS调整的目的是找到一个合适的CS值 使软件自动校正后得到的每个通道的Raw Data趋于235*san_times(scan_times大于64时,按照64进行计算),并且每个通道的CI值最小值应该在x(单体TP:x=50,整机:x=30)左右, 最大值不应高于200.
工作模式寄存器地址0xAE:0 正常工厂模式(默认值); 1-特殊测试工厂模式1; 2 特殊测试工厂模式2
FIRST_PART_CH_NUM :VA区的通道在特殊测试模式下会分两组,该参数指定前几个VA区通道为第一组。
CONFIG_TESTMODE_CH_REORDER
? 当调整FIRST_PART_CH_NUM和相应的CS值后仍无法满足CI的标准(即CI的最小值和最大值差很多)
? 此时需要将CONFIG_TESTMODE_CH_REORDER设置为1,并且调整TP_CHANNEL_ORDER_TESTMODE,从而使CI值相对比较大的通道排在一起,剩下的排在另
一部分。然后重新调整FIRST_PART_CH_NUM和相应的CS值。
TP_CHANNEL_ORDER_TESTMODE需要在原有扫描顺序TP_CHANNEL_ORDER的基础上调整,且保持独立虚拟按键通道不变。VA区通道移动位置时,需要一对通道一起移动
KEY_CH_INVALID_NUM :默认情况为0。当使用双端扫描并且独立虚拟按键通道个数是奇数时(该情况下设置的TP_KEY_NUM 比实际情况多1),该值需要设置为1,否则为0.
十五、VA区和虚拟虚拟按键区分界
RV_G_VA_Y_MAX_VALUE
当支持虚拟按键处理,且Y坐标大于等于该值时,此时的触摸点会当做虚拟按键处理。
十六、 Rawdata
十七、CI值:
坐标调试步骤:
主要宏为:COORDINATE_TUNING_STEP:该宏被设置为不同的调试步骤时,软件会自动打开/关闭一些相关的宏定义,排除其他项目的干扰,使当前调试的步骤更容易。
一、 坐标调试步骤定义:
1.TUNING_STEP_RES_AND_Y_CENTER :设定目标分辨率,调试Y坐标中心对齐。
2.TUNING_STEP_LR_LINE_TOUCH_HANDLE :调试左右边缘不到边问题。
3.TUNING_STEP_BORDER_SHIFT_MANUAL_HANDLE :调试X轴边缘甩尾的问题(甩尾反向修正方法)。
4.TUNING_STEP_BORDER_SPECIAL_HANDLE :调试X轴边缘甩尾的问题(边缘坐标截掉方法)。
5.TUNING_STEP_Y_SHIFT_COMPENSATE :调试Y轴坐标不到边问题(拉边处理)。
6.TUNING_STEP_TB_LINE_TOUCH_HANDLE :调试上下边缘不到边问题。
7.TUNING_STEP_FINISHED :调试结束标志。(调试结束后需要将步骤设置为该值)
二、设定分辨率
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_RES_AND_Y_CENTER,然后设定分辨率。
2.MAPPING_MAX_X :主机端需要输出的X方向分辨率
3.MAPPING_MAX_Y :当TP虚拟按键是用单独通道实现时或者没有虚拟按键时,该值为主机端需要输出的Y方向分辨率
注意:
当TP虚拟按键是和VA区一起全通道实现时,该值为((主机端需要输出的Y方向分辨率*SENSOR_TOTAL_HEIGHT)/VA_SENSOR_HEIGHT)
SENSOR_TOTAL_HEIGHT : Sensor整个高度
VA_SENSOR_HEIGHT : VA区sensor的高度
三、Y坐标中心对齐
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_RES_AND_Y_CENTER,然后调整中心偏移量。
2.Y_CENTER_SHIFT_TOP :该值是上半屏Y中心(屏幕VA区1/4位置)的偏移量,该值为正值时,可以使Y中心向下偏移(坐标变大),该值为负值时反之。通过该值的设定,使触摸上半屏中心位置时坐标准确。
3.Y_CENTER_SHIFT_BOTTOM: 该值是下半屏Y中心(屏幕VA区3/4位置)的偏移量。该值为正值时,可以使Y中心向下偏移(坐标变大),该值为负值时反之。通过该值的设定,使触摸下半屏中心位置时坐标准确
四、左右不到边处理
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_LR_LINE_TOUCH_HANDLE,然后调整LR_LINE_TOUCH_HANDLE相关的宏和参数。
2.LR_LINE_TOUCH_HANDLE:如果触摸到VA区以外的左右边缘走线时引起X坐标偏移(表现为向内侧偏移),就需要开启此功能。并对以下的宏参数做相应的修改。
3.LR_LINETOUCH_VIRTUAL_CH_IDX{LT_idx, RT_idx, LB_idx, RB_idx, LM_idx, RM_idx} :以上分别对应左上,右上,左下,右下,左中和右中参照通道,这里需要填写合适参照通道的数据存储index(index定义规则见附录一),具体选择合适参照通道的规则是它的走线要靠近左/右边缘, 但是不参与左右边缘坐标计算的通道,一般都推荐使用虚拟按键通道作为参照通道。
4.0xFF代表不需要做处理,如{0xFF, 0xFF, 32, 33, 32, 33}表示上左和上右边缘不需要做该处理
5.LR_LINETOUCH_COEFF_1{LT_idx, RT_idx, LB_idx, RB_idx, LM_idx, RM_idx}
xxx_coeff1/xxx_coeff2是补偿功能的比例系数,大于1时补偿效果更明显(越容易偏边),小于1时补偿效果
xxx_coeff2在算法中会用作除数,设置为0是非法的。
五、甩尾修正处理
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_BORDER_SHIFT_MANUAL_HANDLE ,然后调整BORDER_SHIFT_MANUAL_HANDLE相关的宏和参数。
2.BORDER_SHIFT_MANUAL_HANDLE :先将BORDER_SHIFT_MANUAL_HANDLE设置为0,然后水平画线到左边缘和右
边缘。根据得到的坐标信息估算出从哪个X位置开始发生了Y坐标的明显偏移(BORDER_MANUAL_COEFF_CNT)。在不同的X坐标位置,Y坐标个偏移了多少像素(LEFT_BORDER_MANUAL_COEFF/RIGHT_BORDER_MANUAL_COEFF)。
六、甩尾截边处理
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_BORDER_SPECIAL_HANDLE,然后调整BORDER_SPECIAL_HANDLE相关的宏和参数。
2.BORDER_SPECIAL_HANDLE
? 先将ORI_BORDER_SPECIAL_HANDLE设置为0,然后水平画线到左边缘和右边缘。
? 经过上一步骤的调试,在最边缘(2,3个像素左右)仍然有比较严重的甩尾现象。
此时需要找出这个距离( BORDER_HANDLE_X_LEFT_TOP(左上)/BORDER_HANDLE_X_LEFT_BOTTOM(左下)/BORDER HANDLE X LEFT BOTTOM(左下)/
BORDER_HANDLE_X_RIGHT_TOP(右上)/BORDER_HANDLE_X_RIGHT_BOTTOM(右下)),然后将此范围内的坐标都截掉。
? 截边的像素不能太大(最好不要超过5),否则边缘的灵敏度会下降太多。
七、拉边处理
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_Y_SHIFT_COMPENSATE ,然后调整Y_COMPENSATE_XXX_SHIFT_XXX相关的参数。
2.主要参数如下:
? Y_COMPENSATE_UP_SHIFT_TOP
? Y_COMPENSATE_DOWN_SHIFT_TOP
? Y_COMPENSATE_UP_SHIFT_BOTTOM
? Y_COMPENSATE_DOWN_SHIFT_BOTTOM
3.补偿Y方向坐标无法到边缘的问题
? 先将以上参数都设置为0(即原始状态),测试Y方向分别在上,下半屏可以输出的平均最小和最大Y坐标。它们到真正边缘的距离即可以粗略地设置为以上参数的值,然后在此基础上精细调整这些值。
? 单体TP和整机环境对于以上值会有一些影响,需要以整机为准,常用整机上英文全键盘的点击准确度作为标准调整这些值。设置的值越大,Y坐标会越往边缘偏,反之会往中心偏
4.Y_COMPENSATE_EDGE_HANDLE
? 需要对边缘区域Y坐标做二次拉边处理时则打开该宏。
? Y坐标方向,对于上半部分的下边缘和下半部分的上边缘,即靠近整个TP中心的部分需要做特殊的拉伸/压缩处理才可以提高中心位置的精确度和线性度。
?Y_COMPENSATE_EDGE_DOWN_SHIFT_TOP
? 上半部分大于((MAPPING_MAX_Y/2) -Y_COMPENSATE_EDGE_DOWN_SHIFT_TOP)的Y坐标
会做二次拉边补偿处理
? 如果偏中间,则需要乘以一个大于1的系数,如果偏边缘,则需要除以一个大于1的系数,具体需要修改代码,搜索宏Y_COMPENSATE_EDGE_HANDLE
?X_COMPENSATE_EDGE_UP_SHIFT_BOTTOM
? 下半部分小于((MAPPING_MAX_Y/2) + X_COMPENSATE_EDGE_UP_SHIFT_BOTTOM)的Y坐标会做二次拉边补偿处理
? 如果偏中间,则需要乘以一个大于1的系数,如果偏边缘,则需要除以一个大于1的系数,具体需要修改代码,搜索宏Y_COMPENSATE_EDGE_HANDLE
八、上下不到边处理
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_TB_LINE_TOUCH_HANDLE ,然后调整TB_LINE_TOUCH_HANDLE相关的宏和参数。
2.LR_LINE_TOUCH_HANDLE
? 如果触摸到VA区以外的上下边缘走线时引起Y坐标偏移(表现为向内侧偏移),就需要开启此功能。并对以下的宏参数做相应的修改。
?TB_LINETOUCH_VIRTUAL_CH_IDX_1{top_idx1, top_idx2, … top_idx8, bottom_idx1, bottom_idx2, … , bottom_idx8}
?top_idxN上边缘的参照通道, bottom_idxN是下边缘的参照通道,这里需要填写合适参照通道的数据存储index(index定义规则见附录一),具体选择合适参照通道的规则是它的走线要靠近上/下边缘, 但是不参与上下边缘坐标计算的通道,一般都推荐使用虚拟按键通道作为参照通道。
?0xFF代表该位置不需要做处理
? TB_LINETOUCH_COEFF_1{top_idx1, top_idx2, … top_idx8, bottom_idx1, bottom_idx2, … , bottom_idx8}
? TB_LINETOUCH_COEFF_2{top_idx1, top_idx2, … top_idx8, bottom_idx1, bottom_idx2, … , bottom_idx8}
?xxx_coeff1/xxx_coeff2是补偿功能的比例系数,大于1时补偿效果更明显(越容易偏边),小于1时补偿效果越不明显(越容易偏内),需要根据实际情况选择合适的系数。
?xxx_coeff2在算法中会用作除数,设置为0是非法的。
九、调试结束
1.将COORDINATE_TUNING_STEP设置为TUNING_STEP_FINISHED,然后调整X坐标映射相关的参数。
2.AUTO_MAPPING
3.X_SHIFT_COMPENSATE
?X_COMPENSATE_LEFT_SHIFT
? 左侧超出VA区的sensor所占像素
? X_COMPENSATE_LEFT_SHIFT = (LEFT_OVERRANGE_SENSOR_WIDTH * (64* ( _CHANNEL_NUM2))) /SENSOR_TOTAL_WIDTH
LEFT_OVERRANGE_SENSOR_WIDTH : 左侧部超出部分的sensor宽度
SENSOR_TOTAL_WIDTH : 整个sensor的宽度
-X_COMPENSATE_RIGHT_SHIFT
? 右侧超出VA区的sensor所占像素
? X_COMPENSATE_RIGHT_SHIFT= (RIGHT_OVERRANGE_SENSOR_WIDTH* (64* (TP_CHANNEL_NUM2))) /SENSOR_TOTAL_WIDTH
RIGHT_OVERRANGE_SENSOR_WIDTH : 右侧部超出部分的sensor宽度
SENSOR_TOTAL_WIDTH : 整个sensor的宽度
K_X
? X方向映射系数
? 当宏X_SHIFT_COMPENSATE打开时
?K_X = ((MAPPING_MAX_X – 1)*256) / (X_COMPENSATE_MAX ? 1)
当宏X_SHIFT_COMPENSATE关闭时
? K_X = ((MAPPING MAX X – 1)*256) / ((TP CHANNEL NUM/4)*64 ? 1)
宏功能开关
WDTEN :是否启动watch dog功能
FACTORYMODE :是否支持factory模式
AUTO_MAPPING :是否需要映射X坐标,预设的X坐标范围是X(0, 64*(TP_CHANNEL_NUM/4)) ,Y坐标范围已经是(0,MAPPING_MAX_Y)
DOUBLE_BUFFER_MODE :使用双buffer还是多buffer
GESTURE_FUNC :是否支持手势(Zoom in/out)
POINT_FILTER_PROCESS :滤掉刚触摸时的不稳定点
LIFTUP_FILTER :避免断线
POINTS_STABLE_HANDLE :触摸静止不动时的点稳定功能
LIFTUP_PROCESS :抬起时滤掉错误点
POINT_ID_PROC :支持ID
VIRTUAL_KEY :是否支持虚拟按键
INT_LOW_VOL_LONG_PERIOD :中断低电平触发方式,默认(关闭时)为下降沿触发方式
INT_PIN_TEST :支持TP Tool的Pin Test功能
APP_UPGRADE :支持Host端升级FW
CONFIGFROMFLASH_EN :从Flash中读取I2C地址和Panel ID信息
CURRENT_NUMBER_SUPPORTED :最大支持点数
虚拟按键处理函数
当虚拟按键是和VA区一起全通道实现时
?不同项目需要修改函数VirtualKeyprocessing()
?如果主机端需要TP上报虚拟按键区真实坐标,由主机端自己去映射按键,那么只需将REPORT_ACTUAL_COORDINATE设置为1即可。
?如果主机端需要TP上报虚拟按键的固定坐标,那么意味着TP FW需要自己做按键映射。首先需要将REPORT_ACTUAL_COORDINATE设置为0,然后和主机端一起定义固定坐标的键值,目前TP FW中默认会报3个固定虚拟按键,键值分别是(0, 1161), (1, 1161)和(2,1161). 最后还需要按照按键的个数和位置修改按键的映射范围。
? 需要修改KEY_VIRTUAL_Y
? RV_G_VA_Y_MAX_VALUE_UP, RV_G_VA_Y_MAX_VALUE_DOWN
? RV_G_KEY_LEFT_X0,RV_G_KEY_LEFT_X1…
? 如果多于三个按键,可能需要增加新的定义和变量
当虚拟按键是单独通道实现时
? 不同项目需要修改函数KeyChannelHandle()
? 此实现方法基础上,TP只可以上报固定坐标。需要和主机端一个定义每个虚拟按键的固定坐标,然后根据触摸不同虚拟按键时通道differ值的不同特征来区分不同按键。
? 此处的触摸阈值和VA区是分开的,可以单独定义,自由实现。
? 需要注意的是需要在有触摸时设置触摸按键通道的ucFlag为0,否则可能会发生长时间触摸虚拟按键消点的问题(base跟踪)。公版FW已经添加了这样的code,可以参照。