页次: 1
问题描述:
使用usb触摸屏作为输入型号eGalax的控制器 ,使用ts_test命令进行测试,坐标很稳定很正常。Qt运行起来后,点击按压时坐标很正常很准、灵敏,但是坐标立马飘向了0,0点,现象就是有按压,没有抬起的动作。
排查问题思路:
1、首先考虑是驱动问题,查阅资料指向的也是出现输入事件编号,目前系统已经识别可以查询到事件编号。由此大概率不是驱动问题
2、考虑是tslib库的原因,经过查阅资料得知默认不支持galax,但是ts_test命令进行测试,坐标很稳定很正常,因此改原因暂时搁置
3、考虑是ts.conf配置文件导致坐标出现漂移,修改以下参数后,发现ts_test命令进行测试都不正常了,最后修改为默认值
pthres 为Tslib 提供的触摸屏灵敏度门槛插件 默认参数为pmin=1;
variance 为Tslib提供的触摸屏滤波算法插件 默认参数为delta=30;
dejitter 为Tslib 提供的触摸屏去噪算法插件 默认参数为delta=100;
linear为Tslib 提供的触摸屏坐标变换插件。
4、考虑Qt调用tslib库出现问题,经过多个网页的搜索,关注到
https://cloud.tencent.com/developer/ask/sof/112281322
里面提到tslib与qt自带的库相互干扰这一细节。
很是怀疑是Qt调用tslib库出现问题,最后定位到配置出现问题,
结果:
最后通过查询Qt的输入设备的资料,明白Qt有自带的libinput或是使用第三方的输入设备库,也就有其中的tslib,修改Qt配置
export QT_QPA_FB_TSLIB=1
export QT_QPA_EGLFS_DISABLE_INPUT=1
export QT_QPA_FB_DISABLE_INPUT=1
利用自带的TPADC实现触摸功能
一、移植tslib,(这没有好写的,网上资料一大把)
二、修改电阻屏驱动文件
1、移植好tslib库后,每次点击都要等1秒左右才有反应,所以着手修改驱动文件
2、根据dts找到驱动文件sunxi4-ts.c(我拿到的sdk是该文件,可能有些差异)
3、根据数据手册查看寄存器,可以看出
(TP_SENSITIVE_ADJUST)检测下压灵敏度-----最大0xf
(PRE_MEA_THRE_CNT)触摸灵敏度-----------默认值0xfff
(FILTER_EN)滤波使能------------------------开启
4、修改寄存器值
(ADC_CLK_DIVIDER)ADC时钟分频----------2
(FS_DIV)ADC采样频率分频-------------------7
(TACQ)ADC获取时间--------------------------63
(PRE_MEA_THRE_CNT)触摸灵敏度----------0xffffff
修改后就很湿滑。
三、总结
1、取消滤波使能,能加快一点反应速度,但是很有限
2、最终还是因为默认给的TPADC的频率太低 ,导致触摸延迟
页次: 1