GT911电容触摸屏使用

article/2025/8/23 1:55:49

注:转载于https://blog.csdn.net/qlexcel/article/details/99696108
一、介绍与硬件连接
GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片,他们支持的触控点数不同(GT928支持10个点、GT911支持5个点)、驱动和感应通道也可能不同。可是他们的寄存器和IIC通讯时序是相同的,也就是说驱动程序是兼容的。
与主机的接口共有6PIN,分别为:VDD、GND、SCL、SDA、INT、RESET。INT、RESET不需要接上下拉电阻,可与主机直连。SCL、SDA需要接上拉电阻4.7K,毕竟400KHz的通信频率,没有上拉可能导致SCL、SDA边沿不够陡峭。
RST是复位引脚,拉低100us以上,即可复位。正常工作时,应该保持拉高。
INT是GT9xx的触摸信号输出引脚,在正常工作时,主机端要设置为悬浮输入,即不上下拉(GT9xx的驱动能力有限,如果外部上下拉,GT9xx可能驱动不了)。当有触摸发生时,INT引脚会输出上升沿或下降沿(内部寄存器可以配置),主机端可以一直读取INT脚的电平信号,也可以用端口外部中断检测。
二、初始化
1、第一步,GT9xx的IIC地址选择

GT9 系列在通信中始终作为从设备,其I2C设备地址由7 位设备地址加1 位读写控制位组成,高7 位为地址,bit 0为读写
控制位。GT9 系列有两个从设备地址可供选择:
在这里插入图片描述
设置方法为:

把RST、INT引脚配置为输出模式。

A、把RST、INT拉低,延时10ms,把INT拉高,延时100us,把RST拉高,就可以把IIC地址设为0x28/0x29
在这里插入图片描述
B、把RST、INT拉低,延时10ms,把RST拉高,就可以把IIC地址设为0xBA/0xBB
在这里插入图片描述
2、第二步,把INT设置为悬浮输入模式(如果要用外部中断检测INT,也要在这里配置好),RST保持拉高输出。

3、第三步,更新GT9xx寄存器配置,如果不需要更新,可以直接跳过。

1)、往控制命令寄存器(0x8040)写入2,软复位GT9xx。

2)、把寄存器配置数组写入(0x8047-0x8100),一共186个寄存器,这些寄存器的功能可以查看数据手册。需要注意的是:

A,0X8047寄存器用于指示配置文件版本号,程序写入的版本号,必须大于等于GT9xx本地保存的版本号,才可以更新配置,否则当前写入配置无效。

B,0X80FF寄存器用于存储校验和,使得0X8047-0X80FF之间所有数据之和为0,如果校验不通过,当前配置无效。

C,0X8100用于控制是否将配置保存在本地,写0,则不保存配置,写1则保存配置。

3)、往控制命令寄存器(0x8040)写入0,结束软复位。

4、完成初始化过程。

三、读取触摸点坐标值

当有触摸发生时,GT9xx会有3个提示:

1、INT会输出上升沿或下降沿信号。

2、状态寄存器0x814E的最高位(buffer状态位)的值变为1,表示数据已准备好。

3、状态寄存器0x814E的低4位的值会变为触摸点个数,提示有多少个点被按下。

读完坐标后,要把0x814E寄存器清为0,表示坐标点已读。否则GT9xx会一直输出INT信号,不继续检测触摸。切记!

因此对应的,我们有3种读取方法:
1、轮询读取0x814E寄存器的值,如果最高位(buffer状态位)的值变为1,则依照低4位来读取相应个数的坐标值,读完后把0x814E寄存器清为0。如果最高位为0,则退出,继续下一次检测。

2、使用INT中断,当有触摸发生,INT输出信号触发外部中断。在中断服务程序中读取0x814E的低4位得到触摸点数,再去读取相应个数的坐标值,读完后把0x814E寄存器清为0。

3、使用IIC的DMA,因为IIC的通信频率是400K,假如只有一个触摸点,那么把这个触摸点的坐标读出来需要:S+ADR_W+ACK+Reg_H+ACK+Reg_L+ACK+E+S+ADR_R+ACK+DATA_1+ACK+DATA_2+ACK+DATA_3+ACK+DATA_4+NACK+E,一共76*1/400,190us,还没有加上检测的时间,因此直接读取IIC的效率是很低的。使用DMA的方式,只需要把数据放入、取出就可以了,时间可以缩短到几个us。具体方法是,开两个DMA通道,一个用于发送,一个用于接收。发送通道负责S+ADR_W+ACK+Reg_H+ACK+Reg_L+ACK+E,接收通道负责S+ADR_R+ACK+DATA_1+ACK+DATA_2+ACK+DATA_3+ACK+DATA_4+ACK+DATA_5+ACK+DATA_6+NACK+E,根据自己的使用情况确定好需要读取多少个坐标,比如只需要读取1个坐标点,那么从0x804E开始读6个字节就行了,读出来后根据0x804E的值来判断坐标是否有效,如果有效,这6个字节的后4位就是坐标值,取完坐标值,再通过DMA发送通道清除0x804E。
四、其他提示

1、GT9xx的触摸检测频率为100Hz,因此使用DMA或者轮询时,读取频率为100Hz就可以了,读再快也没有意义了。

2、检测触摸是否一直按着没放,需要做一下额外的处理。假如按下了一个点,一直不放,读取频率为100Hz,发生的情况如下:触摸按下后,0x814E的最高位会变为1,读取坐标后,把0x814E清为0,再去读取0x814E,0x814E的最高位会变为0,过一会儿读到的0x814E的最高位才会变为1。也就是说,读完坐标,清零0x814E后,要等一会儿触摸点才能准备好,即0x814E的最高位被清零后,要等一会儿才变为1,可是这段时间内,触摸一直是按下状态的。0x814E值的变化情况如下:

在这里插入图片描述
如果不处理的话,一直按下的状态就会变为按下放开、按下放开。。。

因此处理为:

定义按下状态变量Press_Sta,按下计数变量Press_Times。

当0x814E的最高位变为1时,Press_Sta=1表示被按下,同时Press_Times=0。

当0x814E的最高位变为0时,Press_Times++。当Press_Times>8,Press_Sta=0表示触摸放开。(8可以自己调整)

编程手册链接:https://download.csdn.net/download/qq_33822946/10753049


http://chatgpt.dhexx.cn/article/M4Yu4sp3.shtml

相关文章

openharmony hdf框架gt911触摸驱动移植

openharmony提供了hdf的驱动框架,今天以gt911触摸驱动的例子记录一下。首先hdf要加载进Linux的driver中,在Linux源码/driver/hdf目录有如下文件。 framwork和khdf两个软链接文件一定要链接成功。 在hdf的设备树中加入gt911的文件信息 /home/xu/openhar…

Linux运行911,韦东山-Linux下编写GT911触摸驱动 - 百问网嵌入式问答社区

源码在最下面 问题一:资源获取Gt911数据手册 在韦老师给的资料里,路径为\06_Datasheet\Extend_modules\7寸LCD模块\电容触控芯片GT911 Datasheet_121120(海威思.pdf 问题二:需要准备哪些知识 1.能够修改设备树 2.能够编写字符设备驱动 3.能够在linux下编写中断程序 4.能够在…

Linux下编写GT911触摸驱动

问题一:资源获取Gt911数据手册 在韦老师给的资料里,路径为\06_Datasheet\Extend_modules\7寸LCD模块\电容触控芯片GT911 Datasheet_121120(海威思.pdf 问题二:需要准备哪些知识 1.能够修改设备树 2.能够编写字符设备驱动 3.能…

移植openharmony之调试gt911触摸

最近在调试触摸驱动,分析了一点openharmony的hdf框架下的触摸,将过程记录下,首先肯定是加载input设备管理驱动:input设备管理驱动由HDF驱动加载,完成设备manager的创建并对其初始化。如下图所示,我这里就是…

使用STM32+硬件IIC+DMA驱动GT系列触摸屏(GT911)

使用STM32硬件IICDMA驱动GT系列触摸屏(GT911) 初始化代码 /** brief GT911 初始化程序* param None* retval None*/ void GT911_init() {Dev_Now.GT911_RST0;GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.Pin GT911_RST_PIN | GT911_INT_PIN;…

v3S驱动gt911触摸

文章目录 一、修改设备树二、编写驱动三、运行测试四、编译进内核1. 拷贝文件2. 修改对应的 Makefile3. 编译运行4.测试1.注释掉坐标信息 五、移植tslib1. buildroot配置tslib2. 配置tslib3. 测试 一、修改设备树 在sun8i-v3s-licheepi-zero-dock.dts中添加pio节点&#xff08…

gt911多点触摸实验

文章目录 一、设备树二、驱动程序三、测试四、编译进内核1. 拷贝文件2. 修改对应的 Makefile3. 编译运行4.测试 一、设备树 记得注释掉共用的引脚&#xff08;有好几处&#xff09; 在pinctrl_tsc节点下添加&#xff1a; pinctrl_tsc: tscgrp {fsl,pins <MX6UL_PAD_GPIO1_…

野火STM32F103驱动GT911触摸芯片

GT911触摸芯片 芯片介绍 GT911 是专为 7”~8”设计的新一代 5 点电容触控方案&#xff0c;拥有 26 个驱动通道和 14 个感 应通道&#xff0c;以满足更高的 touch 精度要求。 GT911 可同时识别 5 个触摸点位的实时准确位置&#xff0c;移动轨迹及触摸面积。并可根据主控需要&…

电容触摸屏控制芯片GT911

1.接口说明 GT9 非单层多点系列&#xff08;以下简称 GT9 系列&#xff09; 与主机接口共有 6 PIN&#xff0c;分别为&#xff1a; VDD、 GND、 SCL、SDA、 INT、 RESET。 主控的 INT 口线需具有上升沿或下降沿中断触发功能&#xff0c;并且当其在输入态时&#xff0c; 主控端必…

电容触摸屏GT911、GT928、GT9147的使用

一、介绍与硬件连接 GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片&#xff0c;他们支持的触控点数不同&#xff08;GT928支持10个点、GT911支持5个点&#xff09;、驱动和感应通道也可能不同。可是他们的寄存器和IIC通讯时序是相同的&#xff0c;也就是说驱动程序是兼…

29-2-电容触摸屏控制芯片GT911

1.接口说明 GT9 非单层多点系列&#xff08;以下简称 GT9 系列&#xff09; 与主机接口共有 6 PIN&#xff0c;分别为&#xff1a; VDD、 GND、 SCL、SDA、 INT、 RESET。 主控的 INT 口线需具有上升沿或下降沿中断触发功能&#xff0c;并且当其在输入态时&#xff0c; 主控端…

hal编程 gt911 触摸芯片驱动 ( 枚举 结构体 熟用)( 安富莱 f429 4.3寸电容屏 )

使用板子类型以及屏幕类型 本文使用的是安富莱的板子stm32f429, 屏幕是TR433C1的4.3寸TFT显示屏, 480*272 RGB接口, 电容触摸 . I2C I2C简介、原理、时序请看这篇文章 使用cubemx工具的stm32用AT24C02实现简单密码(一点点面向对象的思想编程) gt911 gt911简介 gt911是深圳市…

python 倒计时手机app打卡_python 实现倒计时功能(gui界面)

运行效果&#xff1a; 完整源码&#xff1a; ##import library from tkinter import * import time from playsound import playsound ## display window root tk() root.geometry(400x300) root.resizable(0,0) root.config(bg blanched almond) root.title(techvidvan - cou…

桌面美化 Python tkinter倒计时工具

桌面美化 Python tkinter倒计时工具 效果一、壁纸设计二、倒计时小工具实现1.引入库2.倒计时函数3.绘制UI载入数据以及创建窗口创建Label控件控件布局绘制分割线绘制子窗口&#xff0c;用于修改倒计时目标其它设置 完整代码打包并开机自启动打包成EXE开机自启动 效果 使用tkin…

Python 内置模块tkinter —— 秒表计时器

# 秒表计时器""" 思考&#xff1a;1、怎么创建一个最简单的窗口&#xff1f;2、怎么保持窗口一直运行&#xff1f;3、不用方法mainloop&#xff08;&#xff09;怎么实现窗口一直运行&#xff1f;4、请问窗口的宽度*高度默认值为多少个像素点&#xff1f;5、利用…

Python-桌面计时器程序设计

该程序是我个人去年学习之初练习设计&#xff0c;程序功能并没有很完善和简便。设计想法是为了能够有一个可观性高的时间报时器&#xff0c;程序设计耗时2天&#xff0c;程序分成三个部分&#xff1a;主窗体、设置窗口、运行程序。 效果展示图 功能 正/反计时功能 到时提醒/关…

专利的写作

关于专利&#xff0c;由于是研究生阶段&#xff0c;发表专利有和学校合作的机构&#xff0c;支付2000给代理人&#xff0c;只需要将想法写明白&#xff0c;和代理人沟通好&#xff0c;受理那必然是有手就行。关于研究点&#xff0c;我已经推导完毕两个月了&#xff0c;因为要做…

手把手教你如何写专利申请书

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。众所周知&#xff0c;专利是最重要的一种知识产权&#xff0c;专利制度有利于保护技术创新&#xff0c;保护专利权人的利益&#xff0c;促进社会发展&#xff0c;把我国建设成一个科技强国&#xff0c;创新大国。对于企业而…

实用新型专利撰写

文件下载 表格可在国家知识产权网下载 直达地址 说明书摘要 1、文件写法 本实用新型公开了&#xff0c;其特征在于&#xff1a;______。主要组成部分&#xff1b;主要组成部分又由哪些部分组成&#xff1b;并说明位置关系&#xff08;位于xxx一侧&#xff0c;位于顶角处…&…

专利写法与相关知识

原文&#xff1a;https://www.cnblogs.com/bozhicheng/p/7204693.html by 薄小成 https://www.jianshu.com/p/4f48add262c1 这也是一个比较好的链接 从你幸运的进入大棚124实验室那刻起&#xff0c;发论文和写专利将贯穿你整个研究生生涯。相比于发论文&#xff0c;写专利这项工…