FLASH理论基础

FLASH

  • STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程
  • 读写FLASH的用途:
    • 利用程序存储器的剩余空间来保存掉电不丢失的用户数据
    • 通过在程序中编程(IAP),实现程序的自我更新
  • 在线编程(In-Circuit Programming - ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序
  • 在程序中编程(In-Application Programming - IAP) 可以使用微控制器支持的任一种通信接口下载程序

闪存模块

操作参数

  • FPEC共有三个键值:
    • RDPRT键=0x000000A5
    • KEY1= 0x45670123
    • KEY2 = 0xCDEF89AB
  • 解锁:
    • 复位后,FPEC被保护,不能写入FLASH CR
    • 在FLASH_KEYR先写入KEY1,再写入KEY2,解锁
    • 错误的操作序列会在下次复位前锁死FPEC和FLASH_CR
  • 加锁:
    • 设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR

执行逻辑

  • 在写入前会检测是否擦除,必须擦除才能写入除非写入全为0

选项字节

  • 写入一个存储器时要在对应的n存储器写入反码,只有对应才算写入真确执行操作
  • RDP:写入RDPRT键(0x000000A5) 后解除读保护
  • USER:配置硬件看门狗和进入停机/待机模式是否产生复位
  • Data0/1:用户可自定义使用
  • WRPO/1/2/3:配置写保护,每一个位对应保护4个存储页(中容量)

选项字节擦除

检查FLASH_SR的BSY位,以确认没有其他正在进行的闪存操作

解锁FLASH_CR的OPTWRE位

设置FLASH CR的OPTER位为1

设置FLASH CR的STRT位为1

等待BSY位变为0

读出被擦除的选择字节并做验证
选项字节写入

检查FLASH SR的BSY位,以确认没有其他正在进行的编程操作

解锁FLASH CR的OPTWRE位

设置FLASH CR的OPTPG位为1

写入要编程的半字到指定的地址

等待BSY位变为0

读出写入的地址并验证数据

电子签名

相关推荐
DevHub2 小时前
CANopen 教程:STM32 实现 CANopen 从站,3 个回调替代手写对象字典
c语言·驱动开发·stm32·单片机·嵌入式硬件·mcu
单片机仿真设计4 小时前
【proteus仿真】基于 STM32 农业大棚巡检小车 (仿真图+程序)
stm32·单片机·嵌入式硬件·proteus·毕设
Hello_Damon_Nikola6 小时前
AiP9M161个人护理产品方案从设计到实现
单片机·嵌入式硬件
智购科技无人售货机工厂6 小时前
2026自动售货机热敏打印模块集成:从串口驱动到小票自动裁切的工程实践~YH
android·stm32·单片机·嵌入式硬件·系统架构
736c6 小时前
STM32-PWR 09
stm32·单片机
亿道电子Emdoor7 小时前
【Arm】如何高效实现2兆字节对齐
arm开发·单片机·mcu
智购科技智能售货柜7 小时前
2026自动售货机峰值交易流量应对方案:从消息削峰到弹性扩容的工程实践~YH
数据库·人工智能·单片机·嵌入式硬件·yolo
zcmodeltech7 小时前
煤化工沙盘模型控制系统设计与实现:多工段协同联动方案
网络·人工智能·stm32·嵌入式硬件·制造·多分类
Jaixln_HRF7 小时前
率能SS6216 单通道1.4A/7.2V直流电机驱动芯片,支持正反转/停止/刹车,用于玩具/智能锁/车载夹
驱动开发·嵌入式硬件·硬件工程
CANI_PLUS8 小时前
AD从立创商城找需要的器件,新建自己的元器件库或者添加到原来的库中
嵌入式硬件