cr315 发表于 2024-7-10 10:00

STM32 G0系列,程序运行在BANK1,擦写BANK2失败

STM32 g0系列双BANK芯片,程序运行在BANK1时,想要擦写BANK2,会发生Error或者HardFault。

是否不支持这样的操作?

cr315 发表于 2024-7-10 16:39

{:smile:}

两只袜子 发表于 2024-7-11 16:00

STM32 G0系列的Flash可能具有保护机制,以防止在程序运行时对正在使用的Bank进行擦写操作。

jcky001 发表于 2024-7-12 16:00

在Dual bank模式下,Bank1和Bank2的切换需要特定的操作,如设置FB_MODE寄存器。如果切换操作不正确或时机不合适,可能导致无法访问或擦写目标Bank。

hehhehee 发表于 2024-7-26 14:43

可能是因为 Flash 操作过程中有中断或时序要求未能满足。

公羊子丹 发表于 2025-2-9 09:11

我记得STM32 G0系列在不同BANK操作Flash时需要特别注意,你设置了相应的Flash解锁和中断屏蔽了吗?

周半梅 发表于 2025-2-9 09:12

有没有检查一下Flash控制寄存器的配置,比如确保写保护和错误中断都关闭?

帛灿灿 发表于 2025-2-9 09:13

通常擦写Flash时需要禁用中断和可能的预取功能,否则容易触发硬件错误。

童雨竹 发表于 2025-2-9 09:14

你是不是直接用CPU访问BANK2的内容了?擦写期间这样操作可能会导致HardFault。

万图 发表于 2025-2-9 09:16

我建议你检查一下Flash加速器的状态寄存器,看是否有提示具体错误。

Wordsworth 发表于 2025-2-9 09:17

可以试试看让程序执行到RAM中,再进行BANK2的擦写,这样可以避免运行Bank冲突。

Bblythe 发表于 2025-2-9 09:18

BANK1和BANK2的擦写权限和地址配置是独立的,可能需要单独检查擦写权限配置。

Pulitzer 发表于 2025-2-9 09:19

有没有用CubeMX生成代码?它能帮你正确配置Flash操作相关的寄存器。

Uriah 发表于 2025-2-9 09:20

STM32的不同系列芯片对于Flash操作支持会有差异,确认下G0是否有特别限制。

Clyde011 发表于 2025-2-9 09:21

你考虑过分步调试擦写流程吗?可能在某个步骤就出现了隐性问题。

中国龙芯CDX 发表于 2025-2-9 14:20

请问具体是有什么不同?

小迷糊仙 发表于 2025-6-4 07:54

我是来学习的
页: [1]
查看完整版本: STM32 G0系列,程序运行在BANK1,擦写BANK2失败