触摸屏实战(GT9XX)
本篇目标:接上 RGB 触摸屏后,验证”摸一下板子有反应”、能读到坐标。触摸控制器是 GT9XX,挂在
twi2@0x5d,内核驱动已okay。
确认触摸设备
GT9XX 在 Linux 里归到 input 子系统,表现为一个 /dev/input/eventX 设备:
root@YPT153EVB:~# ls /dev/input/
event0 event1 ... # 其中一个是触摸屏
root@YPT153EVB:~# cat /proc/bus/input/devices | grep -A4 -i gt9看到 GT9XX / goodix 相关条目即驱动已识别。
用 evtest 读触摸事件(最直观)
若镜像带了 evtest:
root@YPT153EVB:~# evtest
No device specified, trying to scan all ...
/dev/input/event1: gt9xx touchscreen
Select the device event number [0-1]: 1
# 然后用手点屏,会打印
Event: time ..., -------------- SYN_REPORT ------------
Event: time ..., type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 0
Event: time ..., type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 512
Event: time ..., type 3 (EV_MT_POSITION_Y), value 300能看到 X/Y 坐标随手指变化,说明触摸链路(I2C + 驱动 + input)全通。
没有 evtest 时,直接看原始事件
root@YPT153EVB:~# hexdump /dev/input/event1
# 触摸时屏幕会刷出 16 字节一组的事件数据或写个小程序用 struct input_event 读取(需 C 编译,见《交叉编译应用并上板》交叉编译)。
校准(可选)
若坐标偏移明显,可能是屏与触摸层尺寸/方向不匹配。可用 tslib(ts_calibrate / ts_test)做校准;具体取决于镜像是否包含 tslib 以及 QT 等 GUI 框架的配置。普通命令行验证用 12.2 的 evtest 即可。
排障
下面是从板级 dts 提取的触摸屏真实片段(twi2 子节点):
gt9xx: gt9xx@5d {
compatible = "goodix,gt9xx";
reg = <0x5d>; // I2C 地址 0x5d
status = "okay";
irq-gpios = <&pio PA 22 GPIO_ACTIVE_LOW>;
reset-gpios = <&pio PA 21 GPIO_ACTIVE_LOW>;
touchscreen-size-x = <1024>;
touchscreen-size-y = <600>;
};完整
twi2节点见《I2C 实战》7.10 附。
| 现象 | 处理 |
|---|---|
| 找不到触摸 event | 屏没接好 / twi2@0x5d 未加载;i2cdetect -y 2 看 0x5d 是否在 |
| 有设备但无事件 | 中断脚/GPIO 未配置;确认 gt9xx 的 interrupt-gpios 接法 |
| 坐标偏移/镜像 | 需校准或调整设备树 touchscreen-inverted-x/y、swap-x-y 等属性 |
| 多点触摸异常 | 驱动/固件版本;确认 GT9XX 配置 |
作者:陈柏林 创建时间:2026-10-20 16:50
最后编辑:Mai 更新时间:2026-11-05 14:56
最后编辑:Mai 更新时间:2026-11-05 14:56