使用板子类型以及屏幕类型
本文使用的是安富莱的板子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的板子上,使用I2C接口与GT911电容触摸屏进行交互。详细阐述了GT911的地址配置、软件复位步骤、配置寄存器以及读写操作,还提供了触摸状态检测和数据读取的代码实现。通过不断轮询GT911的特定寄存器,可以检测到屏幕是否被触摸以及触摸点的数量和位置信息。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



