STM32-FLASH

本内容基于江协科技STM32视频学习之后整理而得。

1. FLASH

1.1 简介

  • STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程。(系统存储器是原厂写入的Bootloader程序,不允许我们修改的,)
  • 读写FLASH的用途:
    • 利用程序存储器的剩余空间来保存掉电不丢失的用户数据
    • 通过在程序中编程(IAP),实现程序的自我更新
  • 在线编程(In-Circuit Programming – ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序
  • 在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口下载程序
类型 起始地址 存储器 用途
ROM 0x0800 0000 程序存储器Flash 存储C语言编译后的程序代码和常量·
0x1FFF F000 系统存储器 存储BootLoader,用于串口下载
0x1FFF F800 选项字节 存储一些独立于程序代码的配置参数
RAM 0x2000 0000 运行内存SRAM 存储运行过程中的临时变量
0x4000 0000 外设寄存器 存储各个外设的配置参数
0xE000 0000 内核外设寄存器 存储内核各个外设的配置参数

1.2 闪存模块组织

image.png

  • 闪存存储器接口寄存器并不属于闪存,就是一个普通的外设,存储介质也都是RAM。闪存存储器接口寄存器是上面的(主存储器和信息块)的管理员,擦除和编程就是通过读写这些寄存器完成的。
  • 主存储器和信息块是真正的闪存。主存储器就是程序存储器,启动程序代码就是系统存储器。用户选择字节就是选项字节,系统存储器和选项字节又可合称为信息块。
  • 擦除和写保护都是以页为单位的。
  • 写入前必须擦除,擦除必须以最小单位进行,擦除后数据位全变为1,数据只能1写0,不能0写1。擦除和写入之后都需要等待忙。
  • 地址只要以000、400、800、C00结尾的,都一定是页的起始地址。
  • 系统存储器容量是2K。
  • 选项字节容量是16K。

1.3 FLASH基本结构

image.png
选项字节里面有很大一部分配置位,其实是配置主程序存储器的读写保护的。

1.4 FLASH解锁

  • FPEC(闪存编程和擦除控制器)共有三个键值:

    RDPRT键 = 0x000000A5(解除读保护的密钥)
    KEY1 = 0x45670123
    KEY2 = 0xCDEF89AB

  • 解锁:

    复位后,FPEC被保护,不能写入FLASH_CR
    在FLASH_KEYR先写入KEY1,再写入KEY2,解锁
    错误的操作序列会在下次复位前锁死FPEC和FLASH_CR

  • 加锁:

    设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR
    image.png

1.5 使用指针访问存储器

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值