登录/注册

STM32FLASH不擦除

STM32FLASH不擦除

更多

针对STM32内部FLASH存储器的不擦除直接写入问题,核心原则是:STM32的FLASH存储器在写入前必须被擦除,且擦除的最小单位是扇区(Sector)。无法直接覆盖已写入的数据而不进行擦除操作。

以下是详细的解释和可行的替代方案:

? 核心限制

  1. 擦除后写入:FLASH存储单元的物理特性决定了只能将位从1变为0(编程),而将0变回1的唯一方法是擦除整个扇区
  2. 擦除单位:擦除操作的最小单位是一个扇区(大小因型号和具体扇区而异,常见的有1KB, 2KB, 16KB, 64KB, 128KB等)。
  3. 写入单位:写入操作的最小单位通常是双字(Double Word, 64位/8字节),部分型号支持字(Word, 32位/4字节)或半字(Half Word, 16位/2字节)。

⚠️ "不擦除写入"的误区

? 可行的替代方案 (避免擦除主程序区)

若需保存频繁变化的数据(如配置参数、计数器、日志),可采用以下策略:

  1. 未用扇区轮转写入:

    • 原理:预留专门的一个或多个扇区(不存放主程序代码)用于数据存储。
    • 写入:当一个位置需更新时,不覆盖旧值,而是写入该扇区内下一个空闲地址
    • 管理:需软件记录当前写入位置(如使用另一个固定地址或变量)。
    • 擦除时机:当整个扇区写满时,一次性擦除该扇区,从头开始轮转写入。
    • 优点:显著减少擦除次数,延长FLASH寿命。
  2. 日志结构(Log-Structured):

    • 原理:类似轮转写入,但每条记录包含时间戳、键等信息。
    • 读取:通过扫描日志获取最新有效数据。
    • 压缩/回收:定期合并有效记录并擦除废弃扇区。
  3. 利用额外存储器:

    • 外部FLASH/EEPROM:连接支持字节擦写的外部芯片(如I2C/SPI EEPROM或串行FLASH)。
    • 内部备份SRAM:部分STM32有电池供电的备份域SRAM(容量小,掉电需电池维持)。
    • FRAM/MRAM:替代存储器,支持无限次擦写和字节写入。
  4. 精简数据更新策略:

    • 按位操作:若数据位允许独立变化(如标志位),可确保每次写入仅将1->0(需初始值为全1)。
    • 缓冲区:在RAM中缓存数据,定期批量写入FLASH以减少操作频次。

⚠️ 关键操作步骤 (若必须写内部FLASH)

若确定要修改内部FLASH内容,必须严格遵循:

  1. 解锁FLASH控制寄存器:调用HAL_FLASH_Unlock()
  2. 擦除目标扇区:使用HAL_FLASHEx_Erase()(擦除前备份必要数据!)。
  3. 写入数据:使用HAL_FLASH_Program()按正确宽度写入。
  4. 重新上锁:调用HAL_FLASH_Lock()
  5. 禁用中断:擦写期间建议关闭中断,防止代码在FLASH中执行。

? 总结

建议查阅对应型号的《参考手册》中的"Flash memory programming"章节,确认擦除/编程的最小单位及操作细节(如STM32F1/F4与H7系列存在差异)。

STM32C011开发(3)----Flash操作

STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍

2025-09-18 16:48:32

STM32L476 Flash擦除失败的原因?

开发板MCU型号:STM32L476RG 同样的固件在开发板中flash读写擦除操作都没问题,但在产品中

2025-04-23 08:26:34

flash擦除后的值是多少

擦除后的值是指将Flash存储器中的数据全部清除,并将其重置为初始状态。Flash存储器是一种非易失性存储介质,它使用电子存储技术来存储数据。

2024-01-04 15:57:29

解决stm32f103同一个扇区flash只能擦除一次,再次擦除FLASH_ERROR_PG错误问题

项目中用到stm32内部flash存储一些系统运行数据,每次上电重新加载保存的数据。早先用法如下图所示,擦除之前每次要关闭总中断,解锁

资料下载 佚名 2021-12-02 11:51:13

STM32 flash擦除错误的问题临时解决措施

STM32 Flash擦除错误故障现象解决办法故障现象我们研发的设备,在擦除

资料下载 佚名 2021-12-02 10:36:06

STM32内部Flash读写问题

STM32Flash读写之Flash调试技巧文章目录先熟悉所用MCU的Flash存储大小以及扇区地址Flsah写之前为什么要先

资料下载 佚名 2021-12-01 20:21:14

STM32FLASH实验-SPI

STM32FLASH实验-SPI(嵌入式开发考研考什么)-FLASH实验-SPI学习目标:1、学会STM32硬件SPI2、学会对EN25Q64进

资料下载 佚名 2021-08-04 12:58:51

STM32擦除内部FLASH时间过长导致IWDG复位

STM32擦除内部FLASH时间过长导致IWDG复位(嵌入式开发一般采用什么方式?)-客户反馈在使用

资料下载 佚名 2021-07-30 11:06:36

Nor Flash编程和擦除操作的详细流程

Nor Flash 中的编程和擦除操作涉及写入数据和擦除存储单元的特定步骤。

2023-12-05 15:19:06

Nor Flash编程和擦除操作实践与指南

闪存编程也不涉及将数据写入存储单元,为确保准确编程,Nor Flash 支持字节级编程,允许写入或修改单个字节,而无需擦除整个块。

2023-12-05 14:03:22

使用带有-S选项的stm32flash但得到错误信息是为什么?

使用 stm32flash -a0x51 -w binary.bin -S 0x3000 /dev/i2c-4但回来无法在地址 0x00003000 写入内存对于 0x8003000,我得到擦除记忆

2023-01-05 07:38:50

stm32芯片的flash无法擦除的原因?怎么解决?

stm32芯片的flash无法擦除的原因?怎么解决?

2021-12-15 07:32:24

怎样进行STM32 FLASH擦除编程工作呢

STM32的片内FLASH共有几个键值呢?怎样进行STM32 FLASH

2021-11-01 06:45:58

STM32Flash读写之Flash调试技巧

STM32Flash读写之Flash调试技巧 文章目录先熟悉所用MCU的Flash存储大小以及扇区地址Flsah写之前为什么要先

2021-07-22 07:34:45

STM32单片机内部FLASH的编程和擦除操作

F1和F4系列的芯片FLASH在擦除后会是0xFFFFFFFF,而L1系列的芯片FLASH在

2021-02-14 16:37:00

7天热门专题 换一换
相关标签