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

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

电子签名

相关推荐
捷瑞电子工坊1 小时前
嵌入式蓝桥杯从零点亮第一个LED
stm32·蓝桥杯·cubemx·嵌入式·led·ll·锁存
louis.D.2 小时前
Git 本地单线速查
单片机
小李不想当小白2 小时前
PCB结构与组成(PCB设计入门学习笔记)
经验分享·笔记·单片机·嵌入式硬件·学习·pcb工艺·pcb
新晨单片机设计3 小时前
S004R-基于STM32单片机智能门禁系统(密码、指纹、人脸、刷卡、蓝牙)【Proteus仿真+Keil程序+原理图】
stm32·单片机·嵌入式硬件·proteus
至为芯3 小时前
PY32F071至为芯支持32位ARM内核的高主频MCU单片机
单片机·集成电路·芯片
桀人3 小时前
MCU系统架构——总线——统一编址
stm32·单片机·嵌入式硬件
可乐鸡翅好好吃4 小时前
通讯协议--硬件模拟和软件模拟
stm32·嵌入式硬件
Zw-awa4 小时前
STM32F103C8T6 最小系统板:从型号差异到启动方式
stm32
新思维软件4 小时前
基于边缘计算与多模态感知的服药依从性系统|X604261
嵌入式硬件·物联网开发
朝发如雪12 小时前
快速掌握单片机基础(3)(PWM)(通信协议基础)(串口通信时序与参数)(电气特性与电平标准)(51单片机UART寄存器配置)(串口应用层协议)
单片机