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

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

电子签名

相关推荐
lhbweilai1 天前
STM32 ADC模拟数字转换(hal库)
stm32·单片机·嵌入式硬件
坏柠1 天前
通信协议入门:单片机怎样把一个数字发送出去?
单片机·嵌入式硬件
小僧景贤1 天前
STM32 工程文件深度解析(Keil‑MDK + STM32CubeIDE)
stm32·单片机·stm32cubeide
国科安芯1 天前
低轨卫星姿态与轨道控制系统中高可靠MCU的选型研究——基于AS32S601的抗辐照性能试验数据分析
分布式·科技·单片机·嵌入式硬件·系统架构
小羊先生car1 天前
RTOS-F429-HAL-Freertos内存管理(2026/8/5)
c语言·单片机·rtos
zcmodeltech1 天前
工业生产线沙盘模型多段灯带时序控制系统设计:基于STM32与Modbus RTU的连铸-热轧-镀锌全流程联动方案
stm32·单片机·嵌入式硬件·物联网·制造·嵌入式实时数据库·多分类
小僧景贤1 天前
STM32F407 时钟系统超详解
stm32·单片机·嵌入式硬件
西城微科方案开发1 天前
胎压计方案开发
单片机·嵌入式硬件
国科安芯1 天前
卫星星务计算机数据管理中SEU容错机制的技术实现研究——以AS32S601存储器ECC架构为例
网络·单片机·算法·fpga开发·架构·云计算·risc-v
JckOLF04Z1 天前
自动开机调用迅雷下载数据库备份,完成后自动关机
数据库·单片机·嵌入式硬件