硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7440|回复: 22
收起左侧

[SPI/QSPI] STM32H7的程序在QSPI Flash里面运行推荐采用两片组成8线方式,非常适合H750

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2018-10-5 01:14:33 | 显示全部楼层 |阅读模式
通过XIP(ExecuteInPlace)方式,程序的下载,调试和运行可以都在QSPI里面执行,比较适合H750系列。

而且QSPI外设是有个32字的FIFO空间,可以做一定的指令预取功能,再配合Cache,一般不是较大的程序都问题不大。

如果部分程序需要较快的执行速度,可以部分加载到ITCM或者内部SRAM执行,详情可以看此贴:
http://www.armbbs.cn/forum.ph ... peid%26typeid%3D164

最后推荐两片QSPI Flash,组成8线模式,再配合DDR,比如时钟速度是100MHz,这样读速度理论值就可以达到200MB/S。




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2018-10-5 01:33:38 | 显示全部楼层
为什么推荐挂载两片,而不是自带两个QSPI Flash的单芯片解决方案,是因为镁光已经下架了双QSPI Flash单芯片,这点比较悲催(虽然ST评估板有用)。其它厂家基本没有这种形式的,之前我专门搜集整理过。

正常情况下两个QSPI Flash更便宜,就跟两个16位SDRAM组成32位带宽似得。16位的要便宜很多。
回复

使用道具 举报

14

主题

58

回帖

100

积分

初级会员

积分
100
发表于 2018-10-15 23:15:28 | 显示全部楼层
问一下,单个QSPI能挂在BANK2吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2018-10-16 00:27:16 | 显示全部楼层
竹林听雨 发表于 2018-10-15 23:15
问一下,单个QSPI能挂在BANK2吗?

不行。
回复

使用道具 举报

14

主题

58

回帖

100

积分

初级会员

积分
100
发表于 2018-10-16 15:11:18 | 显示全部楼层
那就麻烦了,BANK1四条数据线分散在器件四个边,很难走等长线。反而BANK2四个数据线在一起
回复

使用道具 举报

54

主题

145

回帖

307

积分

高级会员

积分
307
发表于 2018-10-18 16:46:34 | 显示全部楼层
竹林听雨 发表于 2018-10-16 15:11
那就麻烦了,BANK1四条数据线分散在器件四个边,很难走等长线。反而BANK2四个数据线在一起

STM32的管脚真是反人类
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2020-5-26 09:05:01 | 显示全部楼层
大佬,怎么用ST官方的H750B-DK开发板中的cube例程,都没法调试QSPI内的代码呀?用KEIL一加载,就到内部FLASH了,但程序编译出来的地址都是0900开始的QSPI内的地址
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2020-5-26 09:18:20 | 显示全部楼层
jplzl10000 发表于 2020-5-26 09:05
大佬,怎么用ST官方的H750B-DK开发板中的cube例程,都没法调试QSPI内的代码呀?用KEIL一加载,就到内部FLAS ...

ST没做支持。他们提供的仅用于下载,不支持调试。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2020-5-26 10:01:32 | 显示全部楼层
eric2013 发表于 2020-5-26 09:18
ST没做支持。他们提供的仅用于下载,不支持调试。

好吧,大佬
那有没有个例程用来演示下,如何在QSPI中调试?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2020-5-26 10:17:46 | 显示全部楼层
jplzl10000 发表于 2020-5-26 10:01
好吧,大佬
那有没有个例程用来演示下,如何在QSPI中调试?

V7开发板和H7-TOOL使用外部QSPI Flash调试下载程序和使用说明
http://www.armbbs.cn/forum.php?m ... 5957&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2020-5-26 13:29:36 | 显示全部楼层
eric2013 发表于 2020-5-26 10:17
V7开发板和H7-TOOL使用外部QSPI Flash调试下载程序和使用说明
http://www.armbbs.cn/forum.php?mod=view ...

很好奇,为啥ST不出个在QSPI中调试的例程呢。官方都不出,让别人怎么用呀。
回复

使用道具 举报

262

主题

578

回帖

1364

积分

至尊会员

积分
1364
发表于 2020-5-26 13:40:03 | 显示全部楼层
eric2013 发表于 2020-5-26 10:17
V7开发板和H7-TOOL使用外部QSPI Flash调试下载程序和使用说明
http://www.armbbs.cn/forum.php?mod=view ...

哈,我这也搞定了。
这个本质上还是H750只能从FLASH内运行么?
但是OPTIONS里面有设定启动地址的呀。有空研究下。
用cube里面例程一个比较简单的方式就是先下载 \STM32Cube_FW_H7_V1.5.0\Projects\STM32H750B-DK\Templates\ExtMem_Boot 这个例程到内部FLASH。
然后再运行QSPI的例程,如stEmwin就可以在QSPI里面调试了
大概看了下,还是使用bootloader的方式加载的吧
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2020-5-26 17:06:13 | 显示全部楼层
jplzl10000 发表于 2020-5-26 13:40
哈,我这也搞定了。
这个本质上还是H750只能从FLASH内运行么?
但是OPTIONS里面有设定启动地址的呀。有 ...

对,本质就是需要先用内部的boot跳转下。
回复

使用道具 举报

1

主题

14

回帖

17

积分

新手上路

积分
17
发表于 2021-9-13 09:39:41 | 显示全部楼层
对于H750的QSPI接口,如果接两个QSPI设备,是不是要求两个QSPI设备完全一样(因为需要命令一样)?H750 DUAL QSPI模式的两个cs是用来切换的,还是可以映射不同的地址空间? 可以独立操作的.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2021-9-13 14:24:42 | 显示全部楼层
efuntech 发表于 2021-9-13 09:39
对于H750的QSPI接口,如果接两个QSPI设备,是不是要求两个QSPI设备完全一样(因为需要命令一样)?H750 DUA ...

对,连个QSPI设备一样,详情可以看ST出的H7综合板PCB设计。
回复

使用道具 举报

3

主题

11

回帖

20

积分

新手上路

积分
20
发表于 2021-11-4 14:12:11 | 显示全部楼层
请问当使用QSPI连接两片QSPIFlash的时候,两片Flash的储存空间是如何组合的呢?
1. 同一个地址的一个字节,4bit在Flash1,4bit在Flash2;
2. 按照单双地址区分,单地址字节在Flash1,双地址字节在Flash2;
3. 地址接续上去,0x00000000 - 0x01FFFFFF在Flash1,0x02000000 - 0x03FFFFFF在Flash2。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2021-11-5 08:21:37 | 显示全部楼层
opensix 发表于 2021-11-4 14:12
请问当使用QSPI连接两片QSPIFlash的时候,两片Flash的储存空间是如何组合的呢?
1. 同一个地址的一个字节 ...

这个可以接个逻辑分析仪测试下。

应该是整体做8bit。各4bit。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2023-6-21 10:55:08 | 显示全部楼层
坛主,你好。请问这样组成的8位DDR总线只能接FLASH使用么?能当作一个普通的总线进行读写么?比如接一个FPGA。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2023-6-21 11:37:27 | 显示全部楼层
艾那的小强 发表于 2023-6-21 10:55
坛主,你好。请问这样组成的8位DDR总线只能接FLASH使用么?能当作一个普通的总线进行读写么?比如接一个FPG ...

推荐用H723,H725,H730等系列的PSSI接口
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2023-6-21 13:58:39 | 显示全部楼层
eric2013 发表于 2023-6-21 11:37
推荐用H723,H725,H730等系列的PSSI接口

谢谢坛主。PSSI这个接口确实不错,与FMC总线搭配一下,各自单工,一个读一个写。变成一个异步的通讯接口,应该比单个FMC速不少。只是目前我用的是H743后面看能不能换一下。

话说,前面我提的那个方案(QSPI的BLK1和BLK2搭配成8位,带DDR模式的总线)主要是用来读写FLASH的对吧。扩展FPGA的话不合适是吧。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
 楼主| 发表于 2023-6-22 10:40:34 | 显示全部楼层
艾那的小强 发表于 2023-6-21 13:58
谢谢坛主。PSSI这个接口确实不错,与FMC总线搭配一下,各自单工,一个读一个写。变成一个异步的通讯接口 ...

可以,之前有个坛友用这个QSPI做通信接口使用,也是没问题的。
回复

使用道具 举报

0

主题

77

回帖

77

积分

初级会员

积分
77
发表于 2023-6-24 22:11:24 | 显示全部楼层
eric2013 发表于 2023-6-22 10:40
可以,之前有个坛友用这个QSPI做通信接口使用,也是没问题的。

OK,谢谢硬汉哥。我找找相关资料。
回复

使用道具 举报

8

主题

157

回帖

181

积分

初级会员

积分
181
发表于 2023-6-27 17:50:05 | 显示全部楼层
本帖最后由 yunqi 于 2023-6-28 09:00 编辑

为了访问加快速度,指令预取指,这个怎么做?

加一句,您提到【QSPI有32字的FIFO空间】,用户怎么控制“内核预取指”和“FiFO”?
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 15:23 , Processed in 0.459118 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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