TouchGFX指南(2)

本文介绍了如何在基于TOUCHGFX的项目中添加触摸功能,包括驱动触摸IC、使用CUBEMX配置I2C以及在外部QSPIFLASHW25Q128存储资源。还涉及了内存映射的使用和资源下载的调试问题解决。
摘要由CSDN通过智能技术生成

前言

在上一篇的文章里面,我们已经实现了基本屏幕显示,可以使用TOUCHGFX来显示基本的色块了,在本篇我们将在之前的基础上,完善我们的功能:

1.增加触摸的功能

2.将资源保存在外部的存储介质QSPI FLASH W25Q128

3.制作模板

添加触摸功能

1.驱动触摸

触摸的驱动这里就不做过多的介绍了,每个人使用的触摸IC各不相同,但是不论使用的是那种IC,最终要实现的功能是一样的。

NS2009原理图
CUBEMX配置I2C

 这样配置就好了,是否开中断,是否需要上拉电阻,视自己情况而定。

你需要将获取触摸位置封装成这样的一个函数:

uint8_t bsp_ns2009_getXY(uint16_t *x,uint16_t *y)
{
  unsigned int z=0;
	z = bsp_ns2009_getPress();
	if ((z > 70) && (z < 2000))
	{
		*x = ns2009_read(NS2009_LOW_POWER_READ_X)* SCREEN_X_PIXEL / 4096;        //4096 = 2 ^ 12;
		*y = ns2009_read(NS2009_LOW_POWER_READ_Y)* SCREEN_Y_PIXEL / 4096;
		return 0;
	}
	else
	{
		 return 1;
	}
}

使用指针作为参数,同时需要返回是否有被按下。

2.TOUCHGFX添加触摸的功能

添加获取触摸位置的方法

添加获取触摸的方法

同时不要忘了添加触摸的初始化,

初始化触摸芯片

3.测试触摸功能

双击打开这个文件,编辑我们的测试UI,

这是我们之前的UI界面,我们稍作改动,

在白底的BOX上绘制了一个绿色的BOX,同时设置绿色的BOX为可以拖动的,

接下来生成代码测试下吧,

到这步的代码已经放入了代码仓库,方便查阅代码发行版icon-default.png?t=N7T8https://gitee.com/lei_kkaaa/touch-gfx-guidelines/releases/tag/v2.0

 将资源保存在外部存储介质

1.外部存储介质的选择简介

理论上将资源保存任何的介质都是可以的,你可以保存在TF卡内,你也可以保存在外部的FLASH内,但是有一点你需要注意,使用非储存映射的介质的话,在使用上会有所限制。

本篇还是使用QSPI FLASH来存储,这样可以开启地址映射。配置简单,开始映射模式的话,后面就不需要去写接口什么的了,使用非常方便。

2.使用 QUAD SPI FLASH

驱动编写

网上的资源非常得多,自行百度。

编写链接文件

链接文件就是在编译的时候将各个数据分配到哪个地址的过程,分配到哪里就是由这个文件决定的。

点击编辑,然后复制里面的内容,复制到新建的自己的文件,

自己新建的文件里面新添加一个段,然后保存,

 选择你新建的文件,

验证是否成功

目录下的这个文件,添加一个按键即可,因为按键的图片默认是链接到外部的FALSH的,

这里删除了之前的绿色BOX,仅仅保留了白色的背景,添加了一个小的按键,生成代码,再到keil编译。因为按键弹起和按键被按下的两个状态是显示的两张图片,图片默认是存储在外部的,

双击工程名字打开map文件,如果没有的话

 可以看到图片已经被链接到0x90000000的地址,也就是外部FLASH的地址了,下一步就是将数据下载到外部的FLASH了。

将资源下载到外部

我们先新建一个target用来下载外部资源,在此之前,你需要已经编写好了外部的下载算法

切换到新建的target, 去掉所有的文件,不是删除也不是remove

然后添加算法文件,先去除原来的,然后添加,

 如果下载的时候出现这个错误的话,需要适当改大RAM的小,

还有就是不要验证,不然也会有错误,这个一般是验证代码写的有问题

这样修改以后就下载正常了,

发行版代码icon-default.png?t=N7T8https://gitee.com/lei_kkaaa/touch-gfx-guidelines/releases/tag/v3.1

你可能遇到的问题:

虽然可以正常下载,但是显示的内容却有问题

第一步我们先读出FALSH部分数据,与应该写入的数据进行比对。使用keil的调试功能可以看到那一部分的内容是没有写入的。因此是下载算法有问题导致的,查看你的下载算法有没有选对。

注意:

同时添加两个下载算法是有问题的,因此我们使用两个下载target来下载,

注意:

如果你使用的不是内存映射的存储介质,倘若你设置了按键是可以拖动的,但是你将无法拖动它,只有内存映射的可以。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值