GT911触摸芯片

第1章 基础知识

1.1 芯片原理

1.2 硬件接口

GT911 一般通过 6 根线和主控(MCU)连接:

  • VDD / GND :供电。对应12号引脚/对应49号引脚。
  • SCL / SDA :I²C 通信。对应19号引脚和20号引脚。
  • INT :触摸中断,有触摸变化时通知主控。对应16号引脚。
  • RST :复位引脚。对应22号引脚。

1.3 GT911上电与复位流程

GT911 不是上电就能直接用,而是在上电之后需要在驱动里做如下步骤:

  1. 电源稳定后,控制 RST、INT 引脚时序。
  2. 通过 RST/INT 的组合决定 I²C 地址。
  3. RST 拉低一段时间,再拉高,完成硬件复位。
  4. 复位后延时,等待芯片就绪。
  5. 读取芯片 ID 寄存器,确认通信正常。
  6. 必要时写入配置参数,然后开始读取触摸数据。

比较关键的是:INT 在上电初始化阶段通常要先当输出用,用来设定地址;初始化完成后再改成输入,用来接收触摸中断。当然INT可以只是在初始化时,用来设定地址,以后就不用了。是否触摸,我们采用轮询的方式实现。




1.3.1 RST 和 INT 引脚时序

GT911 内部固化了 两组 I²C 从机地址 ,它不会让你像写寄存器那样"写入一个新地址",而是通过 上电/复位时 对RST 和 INT 引脚发起一个电平组合 ,从而激活GT911使用那组从机地址。通俗的将就是GT911出厂就固化了两个从机地址在芯片内部,用户在使用的时候需要控制RST 和 INT 引脚激活具体的哪一个从机地址。

两个从机地址如下:

7 位地址 8 位写地址 8 位读地址
0x14 0x28 0x29
0x5D 0xBA 0xBB

I²C 协议规定:设备真实地址只有 7 位,但总线上每次发送的地址字节是 8 位 。多出来的那 1 位,是读写方向位 R/W。

A6 A5 A4 A3 A2 A1 A0 \| R/W

↑ 7位从机地址 ↑ 读写位


写:0x14 << 1 | 0 = 0x28

读:0x14 << 1 | 1 = 0x29

(1)把RST、INT拉低,延时10ms,把INT拉高,延时100us,把RST拉高,就可以把IIC地址设为0x28/0x29;

(2) 把RST、INT拉低,延时10ms,把RST拉高,就可以把IIC地址设为0xBA/0xBB

1.3.2 读取芯片 ID 寄存器

GT911芯片内部的0x8140这个寄存器中存放着芯片的名字:"GT911"。我们通过I2C去读取这个寄存器的值来比较判断,是否通讯正常。

1.4 GT911寄存器的访问

GT911 内部有很多寄存器,驱动通过 I²C 读写这些寄存器来工作。几个常用寄存器:

1. 0x8040:命令寄存器,可写 2 做软件复位,写 0 恢复正常。

2. 0x8140~0x8143:产品 ID 寄存器,用来确认是不是 GT911。

3. 0x814E:触摸状态寄存器,表示当前有没有触点、有几个触点。

很重要的2个信息,很重要的2个信息,很重要的2个信息!!!!!!!!!!!

1. 读取完0x814E寄存器,一定要对这个寄存器写0。

2. 该寄存器你最快只能7~10ms来读取一次。读的太快数据都还没准备好,相当于做无用功。

4. 0x8150 起:各触点坐标数据,包括 X、Y、触点 ID、接触面积等。

由于GT911同时支持5点触摸。至此0x8150,0x8158、0x8160、0x8168、x8170分别存储着这5组坐标的起始地址。

写寄存器时,先发 16 位寄存器地址,再写数据;读寄存器时,先写寄存器地址,再发起读操作取回数据。

1.5 坐标读取方式

GT911 坐标读取一般有两种方式:

  • 中断方式:INT 引脚产生边沿,驱动进入中断处理函数,读取 0x814E 判断是否有触摸,再读取坐标寄存器。
  • 轮询方式:不用中断,定时读取 0x814E,判断是否有新触点。

每次读完触点数据后,通常要往 0x814E 写 0,清除状态,否则 INT 可能一直触发。

1.6 软件设计

第2章 工程实践

相关推荐
12.=0.37 分钟前
【持续更新】shell脚本 + Linux命令
linux·运维·服务器
Escalating_xu43 分钟前
【Linux 网络编程】五种 I/O 模型与非阻塞 I/O:从“等数据”到正确处理 EAGAIN
java·linux·网络
Zw-awa1 小时前
从 CH340 到 HC-05 和 HC-06:让小车脱离电脑
stm32
无言听风雨丶1 小时前
Linux 容器本质探秘:Cgroup 与 Namespace 深度解析与实战
linux·运维·服务器·kubernetes
万联WANFLOW1 小时前
CVE-2026-98432 等漏洞自查:AI 查出的 Linux、Windows 漏洞,运维怎么确认受不受影响
linux·运维·windows·网络安全
OPEN-F1 小时前
Ubuntu 自动登录后 GNOME 远程桌面连不上?一次登录钥匙环锁定的排查与永久修复
linux·运维·ubuntu
硅基手札2 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
默|笙2 小时前
【Linux网络】传输层协议TCP(3)滑动窗口、流量控制
linux·网络·tcp/ip
Linux界最忧郁之人4 小时前
华为云ECS&IMS&AS实战|弹性云服务器、私有镜像、弹性伸缩完整实验
linux·运维·服务器·centos·华为云·openstack
whyutianict_vv4 小时前
零基础转 AI 运维:投入清单、技术路线与核对表
linux·运维·人工智能·ai