STM32FLASH不擦除
STM32FLASH不擦除
针对STM32内部FLASH存储器的不擦除直接写入问题,核心原则是:STM32的FLASH存储器在写入前必须被擦除,且擦除的最小单位是扇区(Sector)。无法直接覆盖已写入的数据而不进行擦除操作。
以下是详细的解释和可行的替代方案:
? 核心限制
- 擦除后写入:FLASH存储单元的物理特性决定了只能将位从
1变为0(编程),而将0变回1的唯一方法是擦除整个扇区。 - 擦除单位:擦除操作的最小单位是一个扇区(大小因型号和具体扇区而异,常见的有1KB, 2KB, 16KB, 64KB, 128KB等)。
- 写入单位:写入操作的最小单位通常是双字(Double Word, 64位/8字节),部分型号支持字(Word, 32位/4字节)或半字(Half Word, 16位/2字节)。
⚠️ "不擦除写入"的误区
- 尝试向已包含数据(尤其是包含
0的位)的FLASH地址直接写入新数据,会导致:- 只能将
1改为0,无法将0改为1。 - 最终结果将是新旧数据的按位与(
AND),而非预期的新数据。 - 极大概率得到错误数据,并可能引发硬件错误(Hard Fault)。
- 只能将
? 可行的替代方案 (避免擦除主程序区)
若需保存频繁变化的数据(如配置参数、计数器、日志),可采用以下策略:
-
未用扇区轮转写入:
- 原理:预留专门的一个或多个扇区(不存放主程序代码)用于数据存储。
- 写入:当一个位置需更新时,不覆盖旧值,而是写入该扇区内下一个空闲地址。
- 管理:需软件记录当前写入位置(如使用另一个固定地址或变量)。
- 擦除时机:当整个扇区写满时,一次性擦除该扇区,从头开始轮转写入。
- 优点:显著减少擦除次数,延长FLASH寿命。
-
日志结构(Log-Structured):
- 原理:类似轮转写入,但每条记录包含时间戳、键等信息。
- 读取:通过扫描日志获取最新有效数据。
- 压缩/回收:定期合并有效记录并擦除废弃扇区。
-
利用额外存储器:
- 外部FLASH/EEPROM:连接支持字节擦写的外部芯片(如I2C/SPI EEPROM或串行FLASH)。
- 内部备份SRAM:部分STM32有电池供电的备份域SRAM(容量小,掉电需电池维持)。
- FRAM/MRAM:替代存储器,支持无限次擦写和字节写入。
-
精简数据更新策略:
- 按位操作:若数据位允许独立变化(如标志位),可确保每次写入仅将
1->0(需初始值为全1)。 - 缓冲区:在RAM中缓存数据,定期批量写入FLASH以减少操作频次。
- 按位操作:若数据位允许独立变化(如标志位),可确保每次写入仅将
⚠️ 关键操作步骤 (若必须写内部FLASH)
若确定要修改内部FLASH内容,必须严格遵循:
- 解锁FLASH控制寄存器:调用
HAL_FLASH_Unlock()。 - 擦除目标扇区:使用
HAL_FLASHEx_Erase()(擦除前备份必要数据!)。 - 写入数据:使用
HAL_FLASH_Program()按正确宽度写入。 - 重新上锁:调用
HAL_FLASH_Lock()。 - 禁用中断:擦写期间建议关闭中断,防止代码在FLASH中执行。
? 总结
- 直接覆盖已编程的STM32 FLASH而不擦除是不可行的。
- 若需保存易变数据,优先使用轮转写入策略或外部EEPROM/FRAM。
- 操作内部FLASH务必按手册流程进行,误操作可能导致程序崩溃或芯片锁定。
建议查阅对应型号的《参考手册》中的"Flash memory programming"章节,确认擦除/编程的最小单位及操作细节(如STM32F1/F4与H7系列存在差异)。
STM32C011开发(3)----Flash操作
STM32C011 系列微控制器内置 Flash 存储器,支持程序存储与数据保存,具备页面擦除、双字写入、读写保护等功能。本文将简要介绍
2025-09-18 16:48:32
flash擦除后的值是多少
擦除后的值是指将Flash存储器中的数据全部清除,并将其重置为初始状态。Flash存储器是一种非易失性存储介质,它使用电子存储技术来存储数据。
2024-01-04 15:57:29
解决stm32f103同一个扇区flash只能擦除一次,再次擦除报FLASH_ERROR_PG错误问题
项目中用到stm32内部flash存储一些系统运行数据,每次上电重新加载保存的数据。早先用法如下图所示,擦除之前每次要关闭总中断,解锁
资料下载
佚名
2021-12-02 11:51:13
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 14:03:22
使用带有-S选项的stm32flash但得到错误信息是为什么?
使用 stm32flash -a0x51 -w binary.bin -S 0x3000 /dev/i2c-4但回来无法在地址 0x00003000 写入内存对于 0x8003000,我得到擦除记忆
STM32Flash读写之Flash调试技巧
STM32Flash读写之Flash调试技巧 文章目录先熟悉所用MCU的Flash存储大小以及扇区地址Flsah写之前为什么要先
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机
- 元宇宙概念龙头股一览