1. 环境#
- 平台:A133
- 系统环境:Android 11
- 芯片:gsl5680
2. 调试背景#
gs5680是一款思立微TP触摸芯片,支持16寸的电容屏,同时向下兼容小尺寸屏幕,主要看通道数,比如一般来说16寸屏幕通道数是大于14寸,所以能支持16寸就可以支持14寸,大于16寸是否支持需要询问fae。
3. 调试过程#
3.1 底层驱动#
事先要配置好驱动文件(gslx680new),最终实现效果是能使用i2cdetect查看到对应地址,并且成功加载驱动注册ipnut_dev即可,这时候一般触摸效果是不行的,触摸芯片工作异常,所以要让fae现场调效。
3.2 现场调效#
现场调效的话主要是fae负责,我们重点说明一下如何使用这个fae提供的效果文件。
(1) 文件格式转换#
一般fae提供的效果文件为xxxx.h,而全志内置gs65680驱动使用的是xxxx.bin文件,我们需要使用工作将.h转换成.bin文件。
工具目录:vendor/aw/public/package/bin/gsltool
通过mm编译工具,然后执行gsltool gslX680_3676_10inch firmware/将gslX680_3676_10inch.h转换成gslX680_3676_10inch.bin并放在firmware目录下
(2) 指定使用的效果文件#

例如上面就指定驱动使用的效果文件为gslX680_3676_10inch.bin
(3) 打包效果文件#
路径:device/softwinner/ceres/ceres-b6/input/config.mk
GSLFIRMWARELIST指定打包具体的效果文件:

指定打包的效果文件为gslX680_3676_8inch.bin 和 gslX680_3676_10inch.bin
打包脚本:gsl_firmware.mk

具体逻辑是如果GSLFIRMWARELIST为空就打包所有.bin文件,如果GSLFIRMWARELIST有指定就只打包指定的。
4. 问题分析#
4.1 y轴触不到边#
实测发现y轴触不到变,上报数据范围只有19~1178,上下都差20
解决方法有两种:
(1)让fae再次现场调优
注意后面验收的时候要看能不能触摸到边
(2)修改驱动

如上处理上报的数据,touch_min_y为实测的最小上报数据19,touch_max_y为实测的最大上报数据为1178,SCREEN_MAX_Y屏幕实测的分辨率1200,上面代码逻辑就是将[19, 1178]映射[0,1200]范围内,这样处理的好处是,提高精准度并且不损失连续性,如果是直接将y轴全部减10或者上半部分屏幕减10,下半屏幕加10,这样都会出现无效区域。