硬汉嵌入式论坛

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

[SPI/QSPI] STM32H750片外Flash启动(W25Q64JVSIQ)

  [复制链接]

5

主题

30

回帖

45

积分

新手上路

积分
45
发表于 2020-11-27 12:32:22 | 显示全部楼层 |阅读模式
记录一下调试外部flash启动时踩过的坑:
1,W25Q64FVSIG和W25Q64JVSIQ大概有两点不同:JV的速度比FV快,并且JV默认通信方式是QSPI,一般应用可以用FV,QSPI启动用JV方便点
2,从bootloader跳转到app后切勿不要再动有关QSPI的任何部分(IO,时钟)
例如用CubeMx生成app代码的时候不要勾选那个(设置无用脚为模拟模式)
3,修改老大发布的教程里的MDK下载算法模版的时候如果QSPI硬件连接不一样,除了修改IO口还要记得检查一边IO时钟
4,下图里面的Flash大小和扇区大小要匹配硬件使用的芯片规格
下载.png
5,flash擦除,编程一定要记得加QSPI自动查询状态的那个函数
6,一定要确认自己使用的flash地址是24bit还是32bit

老大写的教程很详细,奈何自身水平不够,踩了好几个坑,大家调试这块的时候千万不要再犯我这样的错误了


V7-060_QSPI Flash的MDK下载算法制作.7z

12.84 MB, 下载次数: 1088

下载算法

H750_BOOT.7z

29.08 MB, 下载次数: 956

Bootloader

H750_APP.7z

19.12 MB, 下载次数: 1105

App

评分

参与人数 1金币 +20 收起 理由
asdefwe + 20 很给力!

查看全部评分

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2020-11-27 13:02:23 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

0

主题

84

回帖

84

积分

初级会员

积分
84
发表于 2020-11-27 13:53:31 | 显示全部楼层
谢谢分享, ,学习下。。。。
回复

使用道具 举报

1

主题

6

回帖

9

积分

新手上路

积分
9
发表于 2020-12-1 11:46:19 | 显示全部楼层
制作好算法后,批量生产产品就不用分开独立下载程序了是吗
回复

使用道具 举报

4

主题

1441

回帖

1453

积分

至尊会员

积分
1453
发表于 2020-12-1 14:10:43 | 显示全部楼层
谢谢分享,感谢楼主,感谢硬汉大哥!
回复

使用道具 举报

3

主题

12

回帖

21

积分

新手上路

积分
21
发表于 2021-2-24 09:21:35 | 显示全部楼层
楼主,你好,我用你的算法烧录app这个程序,把内存大小改为图片2的值(fff4,要不然就无法加载算法),然后烧录的时候就会出现图片1的错误,不知道是为什么了?
回复

使用道具 举报

0

主题

15

回帖

15

积分

新手上路

积分
15
发表于 2021-3-31 10:35:55 | 显示全部楼层
“从bootloader跳转到app后切勿不要再动有关QSPI的任何部分(IO,时钟)” 并不是不能重新配置,而是不能在程序跑在QSPI映射区域的时候配置,当代码运行在其他ROM、RAM的时候,是可以重新配置的。
回复

使用道具 举报

6

主题

16

回帖

34

积分

新手上路

积分
34
发表于 2021-4-3 16:30:23 | 显示全部楼层
感谢楼主,改了一个多星期了没成功,
回复

使用道具 举报

5

主题

30

回帖

45

积分

新手上路

积分
45
 楼主| 发表于 2021-4-7 23:42:59 | 显示全部楼层
zhaoqi 发表于 2021-3-31 10:35
“从bootloader跳转到app后切勿不要再动有关QSPI的任何部分(IO,时钟)” 并不是不能重新配置,而是不能在程 ...

是的,谢谢提醒,可以分时复用的
回复

使用道具 举报

57

主题

658

回帖

834

积分

金牌会员

积分
834
发表于 2021-4-16 14:08:16 | 显示全部楼层
谢谢分享,正在学习中!!
回复

使用道具 举报

19

主题

28

回帖

85

积分

初级会员

积分
85
发表于 2022-12-1 18:17:31 | 显示全部楼层
大佬你好,我把三个工程的QSPI按照正点原子的改好了,分别都下载进去到不同的flash了(外部flash下载校验vierfy不过,就没校验),但是程序运行不起来,求指点
回复

使用道具 举报

19

主题

28

回帖

85

积分

初级会员

积分
85
发表于 2022-12-1 18:34:12 | 显示全部楼层
跑不起来呀,大佬指点一下
回复

使用道具 举报

2

主题

115

回帖

121

积分

初级会员

积分
121
发表于 2022-12-2 17:46:41 | 显示全部楼层
感谢楼主
回复

使用道具 举报

19

主题

28

回帖

85

积分

初级会员

积分
85
发表于 2022-12-3 13:32:05 | 显示全部楼层
zhaoqi 发表于 2021-3-31 10:35
“从bootloader跳转到app后切勿不要再动有关QSPI的任何部分(IO,时钟)” 并不是不能重新配置,而是不能在程 ...

大佬好,楼主的这个例程我把相关配置按照原子哥的改了(下载算法和boot中QSPI的GPIO,w25q32的容量等、boot的w25q32的地址位,APP的LED的GPIO配置),boot可以下载,APP下载的时候加了校验就失败,不加校验能够下载成功,但是跑不起来
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2022-12-4 13:37:28 | 显示全部楼层
l4568527193 发表于 2022-12-3 13:32
大佬好,楼主的这个例程我把相关配置按照原子哥的改了(下载算法和boot中QSPI的GPIO,w25q32的容量等、bo ...

说明你的算法没有正确切换到内存映射模式,校验的话,最好切到内存映射模式。

这样此算法还能用于调试。
回复

使用道具 举报

19

主题

28

回帖

85

积分

初级会员

积分
85
发表于 2022-12-6 15:11:58 | 显示全部楼层
eric2013 发表于 2022-12-4 13:37
说明你的算法没有正确切换到内存映射模式,校验的话,最好切到内存映射模式。

这样此算法还能用于调试 ...

大佬可以加一下QQ,请教一下么?304754174,非常感谢,跪求
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2022-12-8 11:15:37 | 显示全部楼层
l4568527193 发表于 2022-12-6 15:11
大佬可以加一下QQ,请教一下么?304754174,非常感谢,跪求

我头像下面那个就是。
回复

使用道具 举报

19

主题

28

回帖

85

积分

初级会员

积分
85
发表于 2022-12-29 09:42:23 | 显示全部楼层
eric2013 发表于 2022-12-8 11:15
我头像下面那个就是。

您好,头像下面的qq联系不上您
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-3-2 15:59:24 | 显示全部楼层
有没有办法在代码运行在外部flash的同时,对外部flash进行写操作。目前我在芯片内部flash的代码中初始化外部flash,并且将外部flash的写操作函数的地址保存在固定的RAM地址中,写操作中先关闭全局中断解除内存映射,然后近些写操作,写完后再重新开启内存映射开启全局中断,但是实测无法运行,外部flash的代码中只要执行内部flash内的写函数就会直接崩溃,连hardfault都不会进入
回复

使用道具 举报

6

主题

9

回帖

27

积分

新手上路

积分
27
发表于 2024-3-4 14:56:14 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2024-3-5 10:14:25 | 显示全部楼层
zhangyh89 发表于 2024-3-2 15:59
有没有办法在代码运行在外部flash的同时,对外部flash进行写操作。目前我在芯片内部flash的代码中初始化外 ...

这个确实没有特别好办法,使能内存映射后,就没法再执行写操作了。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-4-3 19:54:49 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-5-5 22:18:17 | 显示全部楼层
感谢大佬分享,先试一下看看
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-5-24 16:01:06 | 显示全部楼层
多谢楼主分享
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-7-25 16:55:15 | 显示全部楼层
感谢楼主全套服务
回复

使用道具 举报

1

主题

13

回帖

16

积分

新手上路

积分
16
发表于 2024-7-26 19:22:18 | 显示全部楼层
学习了
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-8-1 08:59:47 | 显示全部楼层
zhaoqi 发表于 2021-3-31 10:35
“从bootloader跳转到app后切勿不要再动有关QSPI的任何部分(IO,时钟)” 并不是不能重新配置,而是不能在程 ...

特别感谢,跳转APP问题困扰了我好几天!!!
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-8-21 23:31:43 | 显示全部楼层
请问下有没有H750关于SPI FLash的下载算法?想把图片资源存SP IFLash,程序跑QSPI flash
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2024-8-22 09:32:21 | 显示全部楼层
TeryZhou 发表于 2024-8-21 23:31
请问下有没有H750关于SPI FLash的下载算法?想把图片资源存SP IFLash,程序跑QSPI flash

这个就是
https://www.armbbs.cn/forum.php? ... 6980&extra=page%3D1

234.png
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2024-9-15 00:29:02 | 显示全部楼层
你好楼主,我有两个程序,一个程序烧进去后可以运行,还有个程序片外flash烧进去后就没有启动了
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2024-10-30 21:38:45 | 显示全部楼层
下载下来学习一下
回复

使用道具 举报

268

主题

597

回帖

1401

积分

至尊会员

积分
1401
发表于 2024-11-4 13:01:02 | 显示全部楼层
有没有使用DDR模式的啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2024-11-5 09:19:38 | 显示全部楼层
jplzl10000 发表于 2024-11-4 13:01
有没有使用DDR模式的啊

降低速度测试了,SDR正常模式的速度,降低一半时钟试试
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2025-2-26 19:58:08 | 显示全部楼层
大侠,3,修改老大发布的教程里的MDK下载算法模版的时候如果QSPI硬件连接不一样,除了修改IO口还要记得检查一边IO时钟,|
这个在哪个文件?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2025-2-27 08:23:07 | 显示全部楼层
boclandc 发表于 2025-2-26 19:58
大侠,3,修改老大发布的教程里的MDK下载算法模版的时候如果QSPI硬件连接不一样,除了修改IO口还要记得检查一 ...

bsp_qspi_w25q256.c的开头。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2025-3-1 17:41:05 | 显示全部楼层
感谢分享                           
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2025-3-6 14:34:52 | 显示全部楼层
请教一下,我看W25Q64最大一页是256BYTE 编程的,这个是不是要改成256?谢谢。
Snipaste_2025-03-06_14-32-16.png
Snipaste_2025-03-06_14-31-45.png
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2025-3-6 15:57:13 | 显示全部楼层
按照:第80章修改,下载出现下面错误。不知怎么回事?
Load "GA250V1.00_H750_IOR0.0\\GA250V1.00_H750_IOR0.0"
Erase Done.
Programming Done.
Contents mismatch at: 90000000H  (Flash=88H  Required=48H) !
Contents mismatch at: 90000001H  (Flash=88H  Required=0AH) !
Contents mismatch at: 90000002H  (Flash=88H  Required=00H) !
Contents mismatch at: 90000003H  (Flash=88H  Required=20H) !
Contents mismatch at: 90000004H  (Flash=88H  Required=ADH) !
Contents mismatch at: 90000005H  (Flash=88H  Required=02H) !
Contents mismatch at: 90000006H  (Flash=88H  Required=00H) !
Contents mismatch at: 90000007H  (Flash=88H  Required=90H) !
Contents mismatch at: 90000008H  (Flash=88H  Required=C9H) !
Contents mismatch at: 90000009H  (Flash=88H  Required=87H) !
Contents mismatch at: 9000000AH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000000BH  (Flash=88H  Required=90H) !
Contents mismatch at: 9000000CH  (Flash=88H  Required=09H) !
Contents mismatch at: 9000000DH  (Flash=88H  Required=7AH) !
Contents mismatch at: 9000000EH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000000FH  (Flash=88H  Required=90H) !
Contents mismatch at: 90000010H  (Flash=88H  Required=C1H) !
Contents mismatch at: 90000011H  (Flash=88H  Required=87H) !
Contents mismatch at: 90000012H  (Flash=88H  Required=00H) !
Contents mismatch at: 90000013H  (Flash=88H  Required=90H) !
Contents mismatch at: 90000014H  (Flash=88H  Required=79H) !
Contents mismatch at: 90000015H  (Flash=88H  Required=0AH) !
Contents mismatch at: 90000016H  (Flash=88H  Required=00H) !
Contents mismatch at: 90000017H  (Flash=88H  Required=90H) !
Contents mismatch at: 90000018H  (Flash=88H  Required=79H) !
Contents mismatch at: 90000019H  (Flash=88H  Required=A6H) !
Contents mismatch at: 9000001AH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000001BH  (Flash=88H  Required=90H) !
Contents mismatch at: 9000001CH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000001DH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000001EH  (Flash=88H  Required=00H) !
Contents mismatch at: 9000002CH  (Flash=00H  Required=39H) !
Contents mismatch at: 9000002DH  (Flash=00H  Required=8CH) !
Contents mismatch at: 9000002FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000030H  (Flash=00H  Required=39H) !
Contents mismatch at: 90000031H  (Flash=00H  Required=0BH) !
Contents mismatch at: 90000033H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000038H  (Flash=00H  Required=41H) !
Contents mismatch at: 90000039H  (Flash=00H  Required=88H) !
Contents mismatch at: 9000003BH  (Flash=00H  Required=90H) !
Contents mismatch at: 9000003CH  (Flash=00H  Required=99H) !
Contents mismatch at: 9000003DH  (Flash=00H  Required=8CH) !
Contents mismatch at: 9000003FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000040H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000041H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000043H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000044H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000045H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000047H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000048H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000049H  (Flash=00H  Required=02H) !
Contents mismatch at: 9000004BH  (Flash=00H  Required=90H) !
Contents mismatch at: 9000004CH  (Flash=00H  Required=CBH) !
Contents mismatch at: 9000004DH  (Flash=00H  Required=02H) !
Contents mismatch at: 9000004FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000050H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000051H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000053H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000054H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000055H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000057H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000058H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000059H  (Flash=00H  Required=02H) !
Contents mismatch at: 9000005BH  (Flash=00H  Required=90H) !
Contents mismatch at: 9000005CH  (Flash=00H  Required=CBH) !
Contents mismatch at: 9000005DH  (Flash=00H  Required=02H) !
Contents mismatch at: 9000005FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000060H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000061H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000063H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000064H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000065H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000067H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000068H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000069H  (Flash=00H  Required=02H) !
Contents mismatch at: 9000006BH  (Flash=00H  Required=90H) !
Contents mismatch at: 9000006CH  (Flash=00H  Required=CBH) !
Contents mismatch at: 9000006DH  (Flash=00H  Required=02H) !
Contents mismatch at: 9000006FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000070H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000071H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000073H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000074H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000075H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000077H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000078H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000079H  (Flash=00H  Required=02H) !
Contents mismatch at: 9000007BH  (Flash=00H  Required=90H) !
Contents mismatch at: 9000007CH  (Flash=00H  Required=CBH) !
Contents mismatch at: 9000007DH  (Flash=00H  Required=02H) !
Contents mismatch at: 9000007FH  (Flash=00H  Required=90H) !
Contents mismatch at: 90000080H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000081H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000083H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000084H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000085H  (Flash=00H  Required=02H) !
Contents mismatch at: 90000087H  (Flash=00H  Required=90H) !
Contents mismatch at: 90000088H  (Flash=00H  Required=CBH) !
Contents mismatch at: 90000089H  (Flash=00H  Required=02H) !
Contents mismatch at: 9000008BH  (Flash=00H  Required=90H) !
Too many errors to display !
Error: Flash Download failed  -  "Cortex-M7"
Flash Load finished at 15:55:48
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2025-3-7 06:31:52 | 显示全部楼层
boclandc 发表于 2025-3-6 14:34
请教一下,我看W25Q64最大一页是256BYTE 编程的,这个是不是要改成256?谢谢。

可以的,我们的那个例子写入的是4096, 编程速度稍微快些。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115472
QQ
发表于 2025-3-7 06:32:42 | 显示全部楼层
boclandc 发表于 2025-3-6 15:57
按照:第80章修改,下载出现下面错误。不知怎么回事?
Load "GA250V1.00_H750_IOR0.0\\GA250V1.00_H750_IO ...

这个是校验失败,可能是写入的数据有问题,也有可能是写入对了,但读取校验时失败了。

可以试试程序里面读取对应地址,看看成功没有。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-28 01:37 , Processed in 0.520172 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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