目录
1、工具准备:
2、开发流程:
3、将触摸坐标传到TouchGFX中:
4、GT911触摸芯片的信息配置表解释
5、总结
1、工具准备:
ART-PI开发板一块,
笔记本电脑一台,
RT-Studio软件,串口助手软件,TouchGFXDesigner软件,Visual Studio2019软件
2、开发流程:
1、打开RT-Studio软件,点击新建工程,选择ART-PI开发板即可;这个步骤网上历程大把,这里我就不赘述了,
2、打开CRC校验以及DMA2D,在board->cubeMX_config->core->inc->stm32H7xx_hal_conf.h如下图所示:
3 、添加TouchGFXlib链接库,gt911触摸软件包,C++支持,打开rt_thread Settings文件即可添加
启用TouchGFX 的lib库
添加GT911触摸驱动(我的LCD屏使用的是GT911触摸芯片),当然若是使用的触摸芯片不同,也可添加对应的软件包即可,
打开IIC1(MCU与触摸芯片的通信渠道)
点击保存即可添加软件包和lib库到自己的项目工程当中(耐心等待,过程有点漫长!)
添加C++支持
3、将触摸坐标传到TouchGFX中:
打开libraries->touchgfx_lib->Touchgfx->target->STM32TouchController.cpp文件,添加TouchGFX lib的支持,默认是使用的GT9147触摸驱动的模板,这里我们只需要简单的修改即可使用。
下面这个地方是看你读取的触摸坐标与你TouchGFX的是否对应,若是相反,则使用默认的这种方式。我的并没有反,所以就是用原始的坐标数据即可
好啦,现在我们来修改里一个文件libraries->touchgfx_lib->Touchgfx->App->sample_touch.cpp这个文件
第一处跟上面的一样,还有这里第二处是导入咱们使用的GT911的头文件,在第三处我们设置设备名,第四处是将设备初始化函数注册到初始化列表中(具体的信息请查阅RTT官网文档)
到这里,基本需要改的就已经完了!但是你以为这就行了么?不不不,你会发现你下载到板子上,你的触摸坐标是反的,还有你的触摸屏可能有四分之一的位置是不能获取到坐标的,这是为什么呢?他的问题就在于GT911寄存器配置表的设置,当你去寻找这个寄存器配置表的信息,你会发现这是一个巨大的数组,当然,每个元素代表啥,你也不知道,但是这里最重要的几个地方,我会在下面讲解一下!
4、GT911触摸芯片的信息配置表解释
信息配置表长什么样呢?先来看看!
这么多,咱们只关心前七个字节,
第一个字节:配置表的版本号,X,Y轴分辨率占两个字节,第二、三个字节为x轴分辨率,第四、五字节表示Y轴分辨率,第六个字节包含触摸点个数的设置,第七个字节包含是否交换x与y的坐标
第一个字节:
配置信息表的版本号!要更新配置信息表,需要设置版本号大于之前信息表的版本号!若版本号设置为0x00则会强制更新的!具体怎么解释,请看下图:
第二、三个字节为x轴分辨率,是个16bit数据,第一个字节为数据的低8bit,第二个字节为数据的高8bit;第四、五个字节为Y轴分辨率;
第六个字节是这样解释的:
低4bit是设置触摸点的个数的,高4位默认是0即可
第七个字节
这里我们只用关心0-1bit,以及3bit是怎么设置的,0-1bit是选择触发方式,这里我使用的是中断下降沿触发,即01,第3bit是设置是否交换x,y坐标,根据自己的需求设置即可
下面附上GT911的数据手册中的讲解:
附上我自己的信息配置表数组,如果屏幕相同,应该是直接可以用的,(我这里设置的触摸分辨率是1024*600)
0x00,0x00,0x04,0x58,0x02,0x05,0x35,0x00,0x01,0x08,
0x28,0x08,0x5a,0x46,0x03,0x05,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x18,0x1a,0x1e,0x14,0x89,0x2a,0x09,
0x57,0x5c,0xb5,0x06,0x00,0x00,0x00,0x02,0x01,0x1d,
0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x46,0x82,0x94,0xc5,0x02,0x07,0x00,0x00,0x04,
0x96,0x4a,0x00,0x85,0x54,0x00,0x77,0x5f,0x00,0x6a,
0x6c,0x00,0x5f,0x7a,0x00,0x5f,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x10,0x12,
0x14,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x02,0x04,0x06,0x08,0x0a,0x0f,0x10,
0x12,0x16,0x18,0x1c,0x1d,0x1e,0x1f,0x20,0x21,0x22,
0x24,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01
5、总结
好啦,做完这些,你就可以放心的开始你的嵌入式GUI之旅啦!欢迎大家点赞!博主是一个又菜又爱玩的人!
文中有讲的不对的地方,欢迎大家进行批评指正留言!