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

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

电子签名

相关推荐
洋九八7 小时前
STM32 (NVIC)中断
stm32·单片机·嵌入式硬件
12.=0.7 小时前
【stm32_9.2】FreeRTOS的任务管理:任务策略,调度器启用,任务创建、删除、挂起、恢复
c语言·stm32·单片机·嵌入式硬件
国产电子元器件7 小时前
ACS712国产替代推荐:电流检测芯片选型指南
单片机·嵌入式硬件·物联网
徐怀江8 小时前
ModusToolbox for vscode使用小记
ide·vscode·单片机·mcu·infineon
洋九八9 小时前
STM32 串口(USART)配置
stm32·单片机·嵌入式硬件
华科大胡子9 小时前
单片机IO不够?ULN2003A救急方案
单片机
时空自由民.9 小时前
MCU 串口 printf 耗时优化方案
单片机·嵌入式硬件
金色光环9 小时前
【DSP学习】增强型脉宽调制 EPWM 实验-基于普中DSP开发攻略
单片机·学习·dsp开发
搁浅小泽11 小时前
万用表测试电子元器件
单片机·嵌入式硬件·可靠性工程师
aini_lovee12 小时前
STM32 上实现 SD 卡读取 JPEG 解码 TFT 显示
开发语言·stm32