1. 概述
i2c接口的触摸屏驱动每个厂家都不一样,Amlink平台目前支持汇顶公司和敦泰公司的大部分触摸屏芯片。其它厂家的后续陆续支持。
2. 触摸问题排查
2.1 如果触摸屏无法工作,请先排查硬件连线,接口电平是否跟开发板一致,务必确保sda/scl 有4.7k左右的上拉电阻。一般建议多测试几块屏,排除硬件单体不良。
2.2 然后排查i2c是否能正常通信,方法如下,接好屏后,开机,插入usb线,命令行终端输入以下adb命令
敦泰的ic,输入:adb shell "ls /sys/bus/i2c/drivers/ft5x0x/ "
汇顶的ic,输入:adb shell "ls /sys/bus/i2c/drivers/gt9xx "
正常会显示4个文件,如:
第一个表示i2c的地址(汇顶地址是0x5d,敦泰地址是0x38,7位地址),如果只有后3个文件,则说明开机检测触屏i2c失败。如果失败,重点排查硬件,以及i2c地址是否不一样。(android 6.0, gt和ft驱动有点差异,如果开机检测不到触屏,gt的驱动目录会卸载掉,也就是/sys/bus/i2c/drivers/gt9xx目录会没有。但ft的驱动目录不管有没有触屏都会一直保留,跟android5.1模块的现象一样)
开机后,也可以输入adb指令读设备寄存器,在确保屏亮即系统没有休眠的情况下,输入:
上述2行i2ctransfer命令是读取i2c总线1上从设备地址是0x5d,寄存器地址是0x8000的2字节的值,返回结果是0x47 0x4f. 上述例子是针对汇顶ic的。
敦泰ic可以读a6寄存器(或参考规格书读其它寄存器),如:
2.3 如果2.2 pass,触摸还是没反应,需进一步排查是否有触摸坐标数据上报,一方面可以测量下中断信号是否有脉冲变化(触摸的时候)。另一方面,可以用adb命令查看,先输入adb shell getevent, (如显示太多数据,请及时按ctrl+c终止)前面几行会列出当前所有的输入设备名,如:
其中i2c触摸的设备名称是是“mtk-tpd”,由上图知道,对应的设备是/dev/input/event3,然后输入
adb shell getevent | grep event3
(windows系统输入adb shell getevent | findstr “event3”)
接着点击触摸屏,观察刚才输入命令的终端窗口是否有数据打压出来,如果有可以分析坐标是否正确,下图是截取部分数据:
关键是下面2行:
/dev/input/event3: 0003 0035 00000174
/dev/input/event3: 0003 0036 0000023e
分别表示触摸的坐标x/y是174/23e,换算成十进制是372/574,一般来说,屏幕左上角坐标是最小值0/0左右,右下角是最大值,如719/1279 。以此类推。
如果测试后还是无法定位问题,请把上述的测试情况反馈给我们。support@temolin.com