触摸屏实战(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
上一篇:
下一篇: