OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9804|回复: 16

TouchGFX在阿波罗STM32F767上的移植

[复制链接]

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2019-3-16
在线时间
29 小时
发表于 2019-3-22 23:38:47 | 显示全部楼层 |阅读模式
本帖最后由 lsmvc 于 2019-3-22 23:46 编辑

    最近一段时间一直在看TouchGFX,在ST的官网上下载了TouchGFX Designer,参考这软件上自带的demo作了一些练习,熟悉了一下这个软件的一些基本操作以及一些常用的小工具。软件上的Deom基本上都是在ST的Demo板上运行的,在个人的板子上无法直接运行,需要重新对自己板子进行配置因为手上有块阿波罗F767开发板,因此试着通过CoubeMX配置一下开发板,实现在自己的开发板上运行TouchGFX。   关于CubeMX的配置这里就不再多说了,下载下面的例程对应着进行配置就可以了,下面说几个需要注意的地方:
   1. 在通过CoubeMX单片机的LTDC进行配置时,需要根据原理图对部分引脚进行调整。

   2. 关于触摸屏的驱动移植,因为开发板上触摸芯片接口连接到单片机上的接口不是I2C接口,因此无法通过Cube MX直接进行配置,需要移植原子的ctiic.c文件和delay.c文件;
除两个文件外,还需要在F7固件库中移植对应的BSP文件,我用的显示屏未7寸的1024*600分辨率的显示屏,触摸驱动芯片为FT5426,参考F7固件库STM32CubeF7固件包STM32CubeF7固件包\STM32Cube_FW_F7_V1.15.0\Drivers\BSP\Components中的ft5336程序,其中的寄存器和FT5426寄存器基本相同;
移植文件:
(1)\STM32Cube_FW_F7_V1.15.0\Drivers\BSP\STM32F7508-Discovery中的stm32f7508_discovery_ts.c文件;
(2)STM32CubeF7固件包\STM32Cube_FW_F7_V1.15.0\Drivers\BSP\STM32F769I-Discovery目录下的stm32f769i_discovery.c文件(或者STM32CubeF7固件包\STM32Cube_FW_F7_V1.15.0\Drivers\BSP\STM32F7508-Discovery目录下的stm32f7508_discovery.c)。移植时需对该文件中调用的I2C底层驱动函数进行修改。
(3)在STM32F7TouchController.cpp中,将void STM32F7TouchController::init()和bool STM32F7TouchController::sampleTouch(int32_t& x, int32_t& y)函数中注释掉的代码放开。



在移植过程有参考别人的贴子(使用手机浏览器打开):http://www.openedv.com/forum.php?mobile=2&mod=viewthread&tid=288362
参考设计资源:http://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=619776&extra=page%3D&page=1


由于图片占用内存较大,因此在在CoubeMX配置时将分辨率设置为了800*480,减少空间的占用。如何将显示的图片 文字等存放到外部存储还未能实现,TouchGFX Designer好像仅支持ST官方的Demo板。



demo程序下载地址:链接:
https://pan.baidu.com/s/1o0oW5C7HCHELfg_MxoTkFw
提取码:bfp6
复制这段内容后打开百度网盘手机App,操作更方便哦





LTDC配置.png
微信图片编辑_20190322223615.jpg
1.jpg
2.jpg
3.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2019-3-16
在线时间
29 小时
 楼主| 发表于 2019-3-27 21:18:12 | 显示全部楼层
lixiaogang 发表于 2019-3-26 00:41
同时,我也有一个问题,不知道楼主怎么解决不,我设置两个屏隔两秒切换,老是切换不成功,就屏幕闪一下,还 ...

为什么要间隔2S切换下一个屏幕,我是通过TouchGFX Designer软件直接配置的,屏幕直接进行切换。置于如何烧写外部SPI FLASH,我最近也正在查资料,官方提供的资料大多时针对ST的demo板的,可能正如你说的得自己修改keil 下载QSPI Flash的FLM文件,才能刷
回复 支持 1 反对 0

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10566
金钱
10566
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-3-23 09:25:53 | 显示全部楼层
多谢分享~
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2019-3-25
在线时间
27 小时
发表于 2019-3-26 00:38:10 | 显示全部楼层
楼主,我最近也在研究touchGFX,我现在的项目开发也基本上基于CubeMX。
在touchGFX使用外部Flash野遇到了问题。touchGFX的DEMO都用的是ST的开发板,所以都使用QSPI Flash. 而且如果要直接刷入外部Flash需要使用ST-link Utility,在ST-link Utility 内部选择external Loader. 而ST-link 提供的external Loader都是ST开发板的对应Loader, 也就是QSPI flash loader. 如果希望使用普通SPI flash或者NARD Flash 就需要自己编写external Loader,这个虽然在ST-link Utility有样例参考,但也不是一件容易的事。当然了少不了同时编辑Flash.sct。
如果正点原子可以基于自己的开发板提供external Loader的话,和修改Flash.sct的方法(也就是不同外部FLASH的地址和大小),会简单许多。
我觉得整个开发过程最复杂的也就是如果使用不同的外部flash了。
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2019-3-25
在线时间
27 小时
发表于 2019-3-26 00:41:08 | 显示全部楼层
同时,我也有一个问题,不知道楼主怎么解决不,我设置两个屏隔两秒切换,老是切换不成功,就屏幕闪一下,还是第一个屏幕内容。单独使用一个屏幕都没问题。
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2019-3-25
在线时间
27 小时
发表于 2019-4-3 05:11:03 | 显示全部楼层
切换那事解决了,还是内存的问题。
能不能一起呼吁原子哥针对阿波罗单板的W25Q256编一个external Loader,我试着编,可差别还是很大了,ST-link Utility 给的demo用的flash 芯片和原子用的芯片差别比较大,连很多命令都不一样,改改芯片基本参数简单,但改命令真有点困惑。除非你真的很了解这个芯片。
还有改自己的源程序支持分散烧录还是很简单的:
1,去掉Use Memory Layout from Target Dialog的勾选。
2,点击Edit去编辑.SCT文件。由于我的QSPI是32M字节,所以增加一下字段
0x90000000为QSPI的首地址,0x02000000为FLASH的大小。
LR_EROM1 0x90000000 0x02000000  {    ; load region size_region
  extflash.bin 0x90000000 0x02000000  {  ; load address = execution address
   *.o (ExtFlashSection)
  }
}

回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2019-3-16
在线时间
29 小时
 楼主| 发表于 2019-4-9 23:57:33 来自手机 | 显示全部楼层
lixiaogang 发表于 2019-4-3 05:11
切换那事解决了,还是内存的问题。
能不能一起呼吁原子哥针对阿波罗单板的W25Q256编一个external Loader, ...

嗯,但是我有个问题想请教一下,修改sct文件后编译程序会生成一个extflash.bin的文件吧,那你是如何将该文件中的内容写入到外部QSPI   FLASH中的?

keil中的sct文件我是这样修改的:
LR_QSPI 0x90000000 0x02000000  {    ; load region size_region
  ERQSPI 0x90000000 0x02000000  {  ; load address = execution address
   *.o (ExtFlashSection)
  }
}编译后直接将图片数据保存到了外部flash对应的地址。
我目前是参考网上资料写了一个FLM的编程算法,直接通过keil将保存到外部flash的图片、图标数据等烧录到W25Q256中,但目前该算法还存在一些问题,就是烧录到外部flash中的每个图片或者图标的数据都会丢失前2个字节, 因此我不得不在keil中每个图标的数据的最前面加2个字节才能正常显示。一直没找到问题,很是头疼……      
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2019-3-25
在线时间
27 小时
发表于 2019-4-20 10:05:18 | 显示全部楼层
lsmvc 发表于 2019-4-9 23:57
嗯,但是我有个问题想请教一下,修改sct文件后编译程序会生成一个extflash.bin的文件吧,那你是如何将该 ...

第一,你的触摸移植是由问题的,你的delay函数用的不对,也没有初始化。由于你只有一个任务所以没有体现出错误,如果你多建几个任务就会出现任务切换失败,进而死机。delay 要使用freeRTOS的定制版,而且要初始化,才可以使用。
第二,至于如何将extflash.bin中的内容写入FLASH,我的理解是再我们编写external Loader的过程中实际是编写定制loader,这个loader会首先载入内存,然后运行,这个loader会按照extflash.bin的内容将需要写入外部Flash的内容写入QSPI FLASH中。所以关键还是编一个external Loader。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2019-3-16
在线时间
29 小时
 楼主| 发表于 2019-5-9 23:14:53 | 显示全部楼层
lixiaogang 发表于 2019-4-20 10:05
第一,你的触摸移植是由问题的,你的delay函数用的不对,也没有初始化。由于你只有一个任务所以没有体现 ...

工程中的延时函数用的是原子例程中的延时函数,在CubeMX配置的时候Free RTOS和HAl库使用的都是systick,延时函数也是用的systick,可能会导致调用HAL_Delay的时候出现死机的问题,现在我重新设置了一个定时器产生us级的延时,同时在Cube MX中将HAL库的时基设置为另一个定时器,解决了死机问题;在Free RTOS中同时设置多个任务也不会出现死机
回复 支持 反对

使用道具 举报

0

主题

168

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2019-4-28
在线时间
5 小时
发表于 2019-5-10 13:49:27 | 显示全部楼层
谢谢分享!
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
269
金钱
269
注册时间
2019-3-25
在线时间
27 小时
发表于 2019-5-14 01:07:18 | 显示全部楼层
lsmvc 发表于 2019-5-9 23:14
工程中的延时函数用的是原子例程中的延时函数,在CubeMX配置的时候Free RTOS和HAl库使用的都是systick, ...

好的,解决了就好。不然是个大隐患。
还有,你的哪个外部烧写算法搞得咋样了。搞出来共享一下啦。我搞来搞去,还是有问题,感觉已经不是简单算法的问题,而是和TOUCHgfx配合的问题。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-4-25
在线时间
6 小时
发表于 2019-7-8 10:53:35 | 显示全部楼层
lixiaogang 发表于 2019-5-14 01:07
好的,解决了就好。不然是个大隐患。
还有,你的哪个外部烧写算法搞得咋样了。搞出来共享一下啦。我搞来 ...

你好!请问您搞定,外部烧写算法了吗?
回复 支持 反对

使用道具 举报

0

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2018-12-5
在线时间
39 小时
发表于 2019-9-5 15:03:22 | 显示全部楼层
请问在STM32F407上可以运行吗?
回复 支持 反对

使用道具 举报

1

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
258
金钱
258
注册时间
2016-10-12
在线时间
70 小时
发表于 2020-3-17 14:08:07 | 显示全部楼层

谢谢分享!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2016-4-10
在线时间
7 小时
发表于 2020-6-1 16:21:15 | 显示全部楼层
多谢分享!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-7-14
在线时间
0 小时
发表于 2020-7-14 15:07:01 | 显示全部楼层
#在这里嗨,我的名字叫安迪(Andy),我目前正在使用7英寸显示屏的f767igt6 Alientek开发板,对此教程感到非常高兴。最近,我一直在尝试使用touchgfx4.10.0和MX5.1定制界面。 在keil中编译目标...缺少链接错误快速回复#
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
3
金钱
3
注册时间
2020-7-14
在线时间
0 小时
发表于 2020-7-14 15:08:18 | 显示全部楼层
#在这里快关于如何解决这个问题的任何想法速回复#
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-30 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表