(十一)stm32之FLASH

FLASH简介

STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程

读写FLASH的用途:
利用程序存储器的剩余空间来保存掉电不丢失的用户数据
通过在程序中编程(IAP),实现程序的自我更新
**在线编程(In-Circuit Programming – ICP)**用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序
**在程序中编程(In-Application Programming – IAP)**可以使用微控制器支持的任一种通信接口下载程序

STM32F10xxx内嵌的闪存存储器可以用于在线编程(ICP)或在程序中编程(IAP)烧写。
在线编程(In-Circuit Programming – ICP)方式用于更新闪存存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载用户应用程序到微控制器中。ICP是一种快速有效的编程方法,消除了封装和管座的困扰。
与ICP方式对应,**在程序中编程(In-Application Programming – IAP)**可以使用微控制器支持的任一种通信接口(如I/O端口、USB、CAN、UART、I 2 C、SPI等)下载程序或数据到存储器中。IAP允许用户在程序运行时重新烧写闪存存储器中的内容。然而,IAP要求至少有一部分程序已经使用ICP烧到闪存存储器中。

闪存接口是在AHB协议上实现了对指令和数据的访问,它通过对存储器的预取缓存,加快了存储器的访问;闪存接口还实现了在所有工作电压下对闪存编程和擦除所需的逻辑电路,这里还包括访问和写入保护以及选择字节的控制。

闪存模块组织

在这里插入图片描述

FLASH基本结构

在这里插入图片描述

FLASH解锁

FPEC共有三个键值:
RDPRT键 = 0x000000A5
KEY1 = 0x45670123
KEY2 = 0xCDEF89AB

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

加锁:
设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR

使用指针访问存储器

•使用指针读指定地址下的存储器:

uint16_t Data = *((__IO uint16_t *)(0x08000000));

•使用指针写指定地址下的存储器:

*((__IO uint16_t *)(0x08000000)) = 0x1234;

•其中:

#define __IO volatile

程序存储器编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选项字节

在这里插入图片描述
•RDP:写入RDPRT键(0x000000A5)后解除读保护

•USER:配置硬件看门狗和进入停机/待机模式是否产生复位

•Data0/1:用户可自定义使用

•WRP0/1/2/3:配置写保护,每一个位对应保护4个存储页(中容量)

选项字节编程

•检查FLASH_SR的BSY位,以确认没有其他正在进行的编程操作

•解锁FLASH_CR的OPTWRE位

•设置FLASH_CR的OPTPG位为1

•写入要编程的半字到指定的地址

•等待BSY位变为0

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

选项字节擦除

•检查FLASH_SR的BSY位,以确认没有其他正在进行的闪存操作

•解锁FLASH_CR的OPTWRE位

•设置FLASH_CR的OPTER位为1

•设置FLASH_CR的STRT位为1

•等待BSY位变为0

•读出被擦除的选择字节并做验证

器件电子签名

•电子签名存放在闪存存储器模块的系统存储区域,包含的芯片识别信息在出厂时编写,不可更改,使用指针读指定地址下的存储器可获取电子签名

•闪存容量寄存器:

基地址:0x1FFF F7E0

大小:16位

•产品唯一身份标识寄存器:

基地址: 0x1FFF F7E8

大小:96位

FLASH库函数

在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值