硬汉嵌入式论坛

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

[SPI/QSPI] stm32h750使用QSPI读写华邦W25Q128,疑似写保护了

[复制链接]

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2025-5-21 10:37:39 | 显示全部楼层 |阅读模式
stm32h750使用QSPI读取华邦W25Q128,疑似写保护了。现象:可以读到ID,读取芯片数据,但是无法整片擦除,无法修改状态寄存器,通过在线仿真读取SR1=0XFE,SR2=0X02,SR3=0X60,请问,如何修改做整片擦除。另外对于QSPI读取,WP引脚是不是配置为IO2就无需主动操作了,STM32的QSPI功能会自动处理?
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-21 16:55:20 | 显示全部楼层
可以看到,在线仿真读出来的状态寄存器如图所示。
1747817457374.png
1747817551257.png
1747817596605.png
1747817648298.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-22 08:35:12 | 显示全部楼层
没有研究过写保护,不过wp引脚优先级应该高于寄存器配置。

可以qspi不复用这个io2硬件,然后gpio控制下高低电平。然后qspi通讯数据,命令,地址等都用1线io方式试试
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-22 09:00:49 | 显示全部楼层
eric2013 发表于 2025-5-22 08:35
没有研究过写保护,不过wp引脚优先级应该高于寄存器配置。

可以qspi不复用这个io2硬件,然后gpio控制下 ...

谢谢硬汉哥,我之前在writeEnable之前将WP引脚GPIO置1了。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-22 15:49:53 | 显示全部楼层
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=110260,我先把论坛里面2021年的问题及解决方案发出来,如硬汉哥楼上所说,我目前试了以下,暂无法解决。目前准备焊一块新的W25Q128上去。。。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-23 07:47:32 | 显示全部楼层
pangdekamen 发表于 2025-5-22 15:49
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=110260,我先把论坛里面2021年的问题及解决方案发出 ...

确实是类似这个帖子的问题
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-26 07:21:39 | 显示全部楼层
我直接换了个新的芯片,可以用,程序没改动,问题被解决,但仍然没找到被锁的步骤和解锁的步骤。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-26 07:55:50 | 显示全部楼层
pangdekamen 发表于 2025-5-26 07:21
我直接换了个新的芯片,可以用,程序没改动,问题被解决,但仍然没找到被锁的步骤和解锁的步骤。

用前面坛友帖子里面的方法可行吗
回复

使用道具 举报

39

主题

1516

回帖

1638

积分

至尊会员

积分
1638
发表于 2025-5-26 08:32:31 | 显示全部楼层
WP引脚实际上是控制寄存器的写;WP拉高,寄存器写回默认值  就可以了
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-27 08:17:53 | 显示全部楼层
sanit 发表于 2025-5-26 08:32
WP引脚实际上是控制寄存器的写;WP拉高,寄存器写回默认值  就可以了

谢谢您的回复。我尝试过将WP设置为pullup,并将GPIO引脚直接拉高,在这之后进行写使能,再改写非易失性状态寄存器的值,无法更改。所以这块我不知道卡在哪一块了。看其他地方的经验,也许遇到假货了。
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-5-27 08:19:29 | 显示全部楼层
eric2013 发表于 2025-5-26 07:55
用前面坛友帖子里面的方法可行吗

目前试了下,不行。我准备把这块芯片状态保留,待后续空出时间再进行研究,有结果一定会贴在本帖下面。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2025-5-27 09:34:01 | 显示全部楼层
pangdekamen 发表于 2025-5-27 08:19
目前试了下,不行。我准备把这块芯片状态保留,待后续空出时间再进行研究,有结果一定会贴在本帖下面。:h ...

回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2025-6-23 18:34:27 | 显示全部楼层
我今天又把一块W25Q128给上片区锁了,这次是SR1=0xF0,SR2=0X02,SR3=0X00.根据手册,可以看到是WPS=0,CMP=0,SEC=1,TB=1,BP2=1,BP1=0,BP0=X状态,锁了一部分区域,我使用的是正点原子的例程,尝试直接writeEN后writeSR,               
uint8_t WriteSr1 = 0x03;
norflash_write_enable();
norflash_write_sr(1,WriteSr1);
这样无法将SR1寄存器改写。后来,按照上面的步骤,在写寄存器前,把IO2引脚直接初始化为普通推挽GPIO,然后置高,再去写寄存器,成功了。。。。。
函数如下。
void write_w25q128jv_statusRegister(void){
    GPIO_InitTypeDef gpio_init_struct;       
                __HAL_RCC_GPIOE_CLK_ENABLE();
                /* 初始化BK1_IO2引脚 */
                gpio_init_struct.Pin = GPIO_PIN_2;
                gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;
                gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;
                gpio_init_struct.Pull = GPIO_PULLUP;
                HAL_GPIO_Init(GPIOE, &gpio_init_struct);
       
                uint8_t sr1=norflash_read_sr(1);
                uint8_t WriteSr1 = 0x03;
                HAL_GPIO_WritePin(GPIOE,GPIO_PIN_2,1);
                norflash_write_enable();
                norflash_write_sr(1,WriteSr1);       
                sr1=norflash_read_sr(1);               
                uint8_t sr2=norflash_read_sr(2);
                uint8_t sr3=norflash_read_sr(3);

}
SR1成功的写入了0X03,解锁了。。。以上。

按照硬汉哥和9楼的说法,应该是可以解决大部分的锁。也是要多读他手册里面的寄存器关系。我这次是SRL=0,SRP=1,只要将WP引脚置高,即可解除状态寄存器的写保护,然后再把状态寄存器的存储区写保护关了,以上。有任何进展,我还会在此贴下面续。
有机会再去将之前的东西解决一下。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 06:22 , Processed in 0.046403 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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