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

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

电子签名

相关推荐
FreakStudio5 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘10 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484910 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150010 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼10 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
牛根生同志10 天前
SPI数据收发的时候 TXE与RXNE标志位置位的时机
stm32·spi·transfer
wohoo_wangzi10 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
goldenrolan10 天前
学习型红外控制系统稳定性挂测工装专项总结
软件测试·python·stm32·嵌入式·红外
✎ ﹏梦醒͜ღ҉繁华落℘10 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展10 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件