硬汉嵌入式论坛

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

[SPI/QSPI] 关于STM32H750外部SPI FLASH的下载算法

  [复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-8-21 10:05:10 | 显示全部楼层 |阅读模式
最近项目需要把图片资源下载到外部SPI FLASH(W25Q256),用的STM32Prog下载stldr,在安富莱的H7下载算法上面改的但是没成功,提示从映射地址第一个就校验失败,困扰一周了都没有解决。请问有大佬指点指点吗
回复

使用道具 举报

7

主题

22

回帖

43

积分

新手上路

积分
43
发表于 2024-8-21 11:42:00 | 显示全部楼层
找一下我过去的一个帖子,看对您有没有帮助。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-21 12:36:58 | 显示全部楼层
W25Q256跟我们的一样,仅需修改下引脚和时钟相关就行。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-8-21 14:54:53 | 显示全部楼层
eric2013 发表于 2024-8-21 12:36
W25Q256跟我们的一样,仅需修改下引脚和时钟相关就行。

嗯嗯,可能是时钟没改对,我再看看
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-8-21 14:56:40 | 显示全部楼层
本帖最后由 TeryZhou 于 2024-8-21 23:02 编辑
eric2013 发表于 2024-8-21 12:36
W25Q256跟我们的一样,仅需修改下引脚和时钟相关就行。
时钟我看着应该是对的,参考的例程是V7-066_SPI Flash的STM32CubeProg下载算法制作
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2024-8-22 09:30:28 | 显示全部楼层
TeryZhou 发表于 2024-8-21 14:56
时钟我看着应该是对的,参考的例程是V7-066_SPI Flash的STM32CubeProg下载算法制作

最后一个要注意的地方就是想办法测试下当前实现的这个代码可以正常操作你的QSPI Flash不。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2025-2-13 10:17:02 | 显示全部楼层
一样,上来就报 Data mismatch found at address  0x90000000 (byte = 0x88 instead of 0x98),你最后搞定没
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-2-14 08:53:01 | 显示全部楼层
bo123 发表于 2025-2-13 10:17
一样,上来就报 Data mismatch found at address  0x90000000 (byte = 0x88 instead of 0x98),你最后搞定 ...

这个提示是校验失败。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2025-3-20 18:58:28 来自手机 | 显示全部楼层
我遇到了和你一样的问题。请问你的问题解决了吗
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-3-21 09:17:53 | 显示全部楼层
umbras 发表于 2025-3-20 18:58
我遇到了和你一样的问题。请问你的问题解决了吗

可以先不管校验,使用内存映射的例子验证写入的对不对,如果确实不对,说明擦写操作是有问题的
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2025-4-1 10:38:55 | 显示全部楼层
擦写提示是成功的,我设置的擦写后写入FFFFFFFF,但是写入的都是88888888。感觉还是有些不对。
回复

使用道具 举报

677

主题

3460

回帖

5516

积分

论坛元老

积分
5516
发表于 2025-4-1 20:13:46 | 显示全部楼层
umbras 发表于 2025-4-1 10:38
擦写提示是成功的,我设置的擦写后写入FFFFFFFF,但是写入的都是88888888。感觉还是有些不对。

你先不使用 内存映射, 单独使用普通模式 的 qspi 进行读写看是否正常 ?

看你这个 情况估计应该是 时序或者读取状态寄存器 没有搞对
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2025-4-2 09:34:10 | 显示全部楼层
不用内存映射也是一样,看样是时序的问题。
擦除时只有两步,
1)执行HAL_QSPI_Abort(&hqspi),取消当前内存映射模式(如果有)
2)执行驱动的norflash_erase_chip()擦除函数。
  擦除函数里分四步
  1.写使能,
  2.等待完成
  3.发送擦除指令
  4.等待完成。

感觉这里不应该有问题。而且用的驱动能够正常读写QSPI,已经Debug测试过了。
但是同样的函数,放到下载算法就好像有点问题。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-2 09:47:04 | 显示全部楼层
umbras 发表于 2025-4-1 10:38
擦写提示是成功的,我设置的擦写后写入FFFFFFFF,但是写入的都是88888888。感觉还是有些不对。

说明还有问题。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2025-4-3 09:56:50 | 显示全部楼层
我用的是正点原子的阿波罗H743开发板,QSPI型号是W25Q256,驱动也用的正点原子提供的驱动,程序里单独操作QSPI读写都是没问题的。Debug模式下看各种参数和命令也都没问题。(开发工具是Stm32CubeIDE)但是做成外部下载算法就不好用。擦除整片和擦除扇区都提示成功。但擦除后数据都是88888888.写成功,但写后校验失败(Programming error @: 0x90000000),使用STLinkUtility,没办法摒除校验,使用Stm32CubeProgrammer写则直接提示失败。大佬有经验能帮忙分析一下哪里出问题吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115434
QQ
发表于 2025-4-4 10:53:19 | 显示全部楼层
umbras 发表于 2025-4-3 09:56
我用的是正点原子的阿波罗H743开发板,QSPI型号是W25Q256,驱动也用的正点原子提供的驱动,程序里单独操作Q ...

说明算法工程的实现还是有点问题。驱动工程能用不能表示算法工程就可以使用。
回复

使用道具 举报

2

主题

43

回帖

49

积分

初级会员

积分
49
发表于 2025-4-7 20:13:09 | 显示全部楼层
umbras 发表于 2025-4-1 10:38
擦写提示是成功的,我设置的擦写后写入FFFFFFFF,但是写入的都是88888888。感觉还是有些不对。

擦除正常说明单线命令对的。同时0x8 =1000 说明有一位是1其它位是0,检查一下D0 D1 D2 D3 的IO有没有配对。H750我也折腾了几天。你最好是有STM32CUBEMX 产生初始代码。然后去匹配。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 06:19 , Processed in 0.347612 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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