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

多点电容触摸驱动(基于gt911) 多点电容触摸的驱动使用到的知识主要有input子系统、gpio硬件中断、iic子系统,tslib测试等知识点,下面将针对多点电容触摸屏的驱动开发的四个知识点进行展开,以及gt911芯片的知识,官方gt9xx驱动的移植。 阅读详情
AI摘要

本文介绍了如何在基于STM32F429的板子上,使用I2C接口与GT911电容触摸屏进行交互。详细阐述了GT911的地址配置、软件复位步骤、配置寄存器以及读写操作,还提供了触摸状态检测和数据读取的代码实现。通过不断轮询GT911的特定寄存器,可以检测到屏幕是否被触摸以及触摸点的数量和位置信息。

使用板子类型以及屏幕类型

本文使用的是安富莱的板子stm32f429,
屏幕是TR433C1的4.3寸TFT显示屏, 480*272 RGB接口, 电容触摸 .

I2C

I2C简介、原理、时序请看这篇文章

使用cubemx工具的stm32用AT24C02实现简单密码(一点点面向对象的思想编程)

gt911

gt911简介

gt911是深圳市汇鼎科技开发

  • 专为7英寸到8英寸MID设计的新一代5点电容式触摸,由多达26个发射器电极和14个接收器电极组成,以提供更高的触摸精度。
  • gt911可同时识别 5 个触摸点位的实时准确位置,移动轨迹及触摸面积。并可根据主控需要,读取相应点数的触摸信息。

gt911的地址(8位地址情况)

gt911和其他基于i2c的芯片略有不同,它可以通过,外部引脚INT和RST引脚改变他的地址,一般地址默认是0xBA,通过用INT和RESET引脚可以输入特定的时序,改变他的地址,变为0x28,或者变回0xBA,时序如下:

地址变成0x28

  • INT和RESET都为输出模式
    在这里插入图片描述

地址变成0xBA

  • INT和RESET都为输出模式
    在这里插入图片描述

地址配置完成后

配置之后,RST保持拉高输出,INT配置成输入(变成中断线,当有中断来临时,有触摸发生),或者失能(直接通过寄存器来判断是否有触摸)。

gt911配置说明

基本写芯片和读芯片代码


void GT911_WriteReg(uint16_t _usRegAddr, uint8_t *_pRegBuf, uint8_t _ucLen)
{
   
   
	HAL_I2C_Mem_Write(&hi2c1, GT911_DIV_W, _usRegAddr, I2C_MEMADD_SIZE_16BIT, _pRegBuf, _ucLen, 0xff);
}

void GT911_ReadReg(uint16_t _usRegAddr, uint8_t *_pRegBuf, uint8_t _ucLen)
{
   
   
	HAL_I2C_Mem_Read(&hi2c1, GT911_DIV_R, _usRegAddr, I2C_MEMADD_SIZE_16BIT, _pRegBuf, _ucLen, 0xff);
}

对于hal函数说明:

  • HAL_I2C_Mem_Write
    参数1 : hal生成的i2c句柄
    参数2 : gt911的写地址,0xBA(0x28)
    参数3 : 寄存器地址
    参数4 : 寄存器大小,有8位模式,16位模式,这里选择16位模式
    参数5 : 写入寄存器的数据
    参数6 : 写入的数据长度
    参数7 : 等待超时时间,超出此时间未发出去,则发送失败
  • HAL_I2C_Mem_Read(未写的参数和上面的一样)
    参数2 : gt911的读地址,0xBB(0x29)
    参数5 : 要读出的寄存器的数据缓冲区
    参数6 : 读出数据缓冲区大小

第一步:软件复位

在这里插入图片描述

通过给寄存器0x8040地址的寄存器写入2,复位gt911芯片.,代码如下所示

/*
	功能:软件复位gt911
*/
void Software_Reset(void)
{
   
   
	uint8_t _temp=2;	//中间变量
	//往gt911中寄存器0x8040中写入2,使之复位
	GT911_WriteReg(GT_CTRL_REG, &_temp, 1);	
}

第二步:往配置寄存器中写入数据(一般可以跳过)

代码如下:

//GT911(原GT9147)配置参数表
//第一个字节为版本号(0X60),必须保证新的版本号大于等于GT911内部
//flash原有版本号,才会更新配置.
const uint8_t GT9147_CFG_TBL[]=
{
   
    
	0X60,0XE0,0X01,0X20,0X03,0X05,0X35,0X00,0X02,0X08,
	0X1E,0X08,0X50,0X3C,0X0F,0X05,0X00,0X00,0XFF,0X67,
	0X50,0X00,0X00,0X18,0X1A,0X1E,0X14,0X89,0X28,0X0A,
	0X30,0X2E,0XBB,0X0A,0X03,0X00,0X00,0X02,0X33,0X1D,
	0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X32,0X00,0X00,
	0X2A,0X1C,0X5A,0X94,0XC5,0X02,0X07,0X00,0X00,0X00,
	0XB5,0X1F,0X00,0X90,0X28,0X00,0X77,0X32,0X00,0X62,
	0X3F,0X00,0X52,0X50,0X00,0X52,0X00,0X00,0X00,0X00,
	0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
	0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X0F,
	0X0F,0X03,0X06,0X10,0X42,0XF8,0X0F,0X14,0X00,0X00,
	0X00,0X00,0X1A,0X18,0X16,0X14,0X12,0X10,0X0E,0X0C,
	0X0A,0X08,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
	0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
	0X00,
STM32F429实战:GT911触摸芯片驱动开发全流程(附完整代码) 本文详细介绍了在STM32F429平台上开发GT911触摸芯片驱动的全流程。内容涵盖硬件接口配置、利用结构体和枚举构建清晰驱动框架、基于HAL库的I2C通信封装、器件初始化与触摸数据解析,并提供了完整的实战代码。文章旨在帮助开发者构建稳定、可维护的电容触摸屏驱动,提升嵌入式GUI开发效率。 阅读详情

相关推荐

GT911 电容触摸屏驱动的设计与实现指南

多点触控:支持最多 10 点触控,适用于各种大尺寸触摸屏应用。高分辨率:分辨率可达 4096x4096,能够精确检测触摸位置。低功耗:采用低功耗设计,适用于电池供电的便携设备。I2C 接口:支持 I2C 接口通信,便于与各种单片机和处理器连接。本文详细介绍了 GT911 电容触摸屏驱动的实现方法,涵盖了硬件连接、I2C 接口配置、触摸数据读取和坐标输出等关键步骤。通过 C++ 代码示例,展示了如何通过配置单片机引脚实现对 GT911 的控制,并输出触摸坐标值。

qq_38334677的博客 2万+

RK3399驱动开发 | GT911触摸屏驱动调试及驱动浅析

总结:本文以GT911触摸屏驱动为例,介绍了RK3399驱动开发的基本流程,包括驱动文件的创建、驱动初始化和退出、读写函数的实现等。本文将以GT911触摸屏驱动为例,介绍RK3399驱动开发的基本流程,并对该驱动进行调试和浅析。在驱动的读写函数中,我们需要根据GT911芯片的通信协议来实现数据的读取和解析,并将解析后的触摸点信息传递给输入子系统。首先,我们需要创建一个新的驱动文件,命名为gt911.c,并在该文件中包含必要的头文件。最后,在驱动退出函数中,我们需要释放资源并注销相应的设备。

CodeSageX的博客 1220

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8629

【LCD_Touch-GT911触摸驱动】

2)、把寄存器配置数组写入(0x8047-0x8100),一共186个寄存器,这些寄存器的功能可以查看数据手册。A、把RST、INT拉低,延时10ms,把INT拉高,延时100us,把RST拉高,就可以把IIC地址设为0x28/0x29。2、第二步,把INT设置为悬浮输入模式(如果要用外部中断检测INT,也要在这里配置好),RST保持拉高输出。B、把RST、INT拉低,延时10ms,把RST拉高,就可以把IIC地址设为0xBA/0xBB。3、第三步,更新GT9xx寄存器配置,如果不需要更新,可以直接跳过。

my的博客 3万+

gt911触摸屏驱动程序

gt911触摸屏驱动程序,成功运行与linux 系统中。-------------------------------------------------

电容触控芯片GT911 Datasheet

汇顶GOODIX触控芯片GT911资料手册 goodix GT911 datasheet

电容触摸芯片_GT911.pdf

汇顶GT911触摸IC手册(只是个IC说明,不包含寄存器地址说明,具体寄存器地址可以在网上搜索,网上有和GT9147的地址通用)

ByteTrack参数调优全攻略:从原理到实战(含YOLOv8示例)

本文深入解析了ByteTrack多目标跟踪算法的核心原理与参数调优策略。通过拆解其独特的两阶段关联机制,并结合YOLOv8检测器,提供了针对不同应用场景(如拥挤行人、高速车辆)的精细化参数调整指南与实战示例,旨在帮助开发者解决ID切换、目标丢失等工程落地难题,提升跟踪系统的鲁棒性与实用性。

cheese的博客 322

GD32F103RCT6/GD32F303RCT6(6.2)USART串口实战:从寄存器配置到DMA高效传输

本文详细介绍了GD32F103RCT6和GD32F303RCT6的USART串口通信实战,从寄存器配置到DMA高效传输的全过程。通过具体的代码示例和优化建议,帮助开发者快速掌握串口通信的关键技术,提升嵌入式开发效率。特别强调了DMA在高速数据传输中的优势和应用技巧。

weixin_33725239的博客 308

保姆级教程:用Altium Designer 24从零画一块PCB(附完整库文件与避坑清单)

本文提供了一份详细的Altium Designer 24(AD24)PCB设计教程,从工程创建到最终文件输出,涵盖元件库管理、原理图设计、PCB布局布线等全流程。特别适合初学者,包含STM32最小系统板的实战案例,附完整库文件和避坑清单,帮助用户快速掌握AD24的核心功能与技巧。

weixin_27697385的博客 249

Cibersort免疫浸润 --- 详细教程

免疫浸润是指免疫细胞如淋巴细胞、浆细胞、巨噬细胞等进入到组织或器官中,并在这些组织或器官中发挥免疫功能的过程。免疫细胞的浸润可以是炎症反应的一部分,也可以是针对感染、肿瘤或其他疾病的免疫应答的一部分。免疫浸润通过调节免疫反应和炎症反应的程度和类型,起到维护机体免疫平衡和清除异常细胞或病原体的作用。在某些情况下,免疫浸润可能导致炎症反应过度,引起组织损伤,例如自身免疫性疾病。因此,免疫浸润在许多疾病的诊断和治疗中都具有重要的意义。免疫浸润可以通过组织切片染色和免疫组织化学等方法观察和分析。

ZxVSaccount的博客 9107

模型参考自适应控制(MRAC):让PID参数动态优化

本文深入解析模型参考自适应控制(MRAC)技术,它通过实时调整PID参数,使控制系统能自动适应系统特性变化和外部干扰。文章详细介绍了MRAC的工作原理、数学基础,并提供了用C语言实现的实战代码示例,帮助工程师解决传统PID控制在非线性、时变系统中参数整定繁琐的难题。

tequila的博客 902

从信号到振镜:STM32F103 + XY2-100协议 + AM26LS31芯片的激光打标/雕刻系统信号链搭建指南

本文详细介绍了基于STM32F103微控制器和XY2-100协议的激光打标/雕刻系统信号链搭建方法。从数字振镜控制协议解析、AM26LS31差分驱动电路设计到信号完整性优化,提供了一套完整的解决方案,帮助工程师实现高精度激光控制系统的开发与调试。

weixin_42536058的博客 235

【excel+vba】一表拆多表+不同收件人附带不同附件

快捷处理:拆分多个不同表 给不同人发送不同内容且附带附件

weixin_42779327的博客 2968

N32G430学习笔记11- systick使用函数-延时函数

N32学习笔记11- systick使用函数-延时回调函数-延时函数

Car12 1416

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

上一篇: 使用cubemx工具的STM32对外部flash(W25Q64)的简单编程
下一篇: 外部存储芯片(详细说明)
嵌入一下?
博客等级 码龄6年 324粉丝 66原创
评论 20
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值