STM32FLASH闪存

2024-05-30 03:28
文章标签 闪存 stm32flash

本文主要是介绍STM32FLASH闪存,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 首先来回顾一下存储器映像
  • FLASH简介
  • 闪存模块组织
  • Flash基本结构(关系)图
  • Flash解锁
  • 使用指针访问存储器
  • FLASH操作
    • Flash全擦除
    • Flash页擦除
    • Flash写入
  • 选项字节
  • 选项字节操作
    • 选项字节擦除
    • 选项字节写入
  • 器件电子签名
  • 注意
  • 闪存控制寄存器一览


前言

本文主要解释的为STM32的内部闪存(非易失性存储器)


首先来回顾一下存储器映像

本文就是对于ROM类型的说明,包括Flash、系统存储器(原厂写入,一般不修改)、选项字节等
在这里插入图片描述

FLASH简介

  • STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程读写
  • FLASH的用途:
    利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在程序中编程(IAP),实现程序的自我更新
  • 在线编程(In-Circuit Programming –
    ICP)用于更新程序存储器的全部内容,它通过JTAG、SWD协议或系统加载程序(Bootloader)下载程序
  • 在程序中编程(In-Application Programming – IAP)可以使用微控制器支持的任一种通信接口下载程序(不研究)

闪存模块组织

注意各块的首地址规律,以便方便的找到首地址进行写入和区分块,对页的操作一般都以某页页首地址开始,写操作不能跨页,读操作可以跨页
在这里插入图片描述

Flash基本结构(关系)图

在这里插入图片描述

Flash解锁

对于这些需要保存在flash的重要数据,需要有安全的保护措施,STM32Flash也设置了特殊的安全设置:
FPEC共有三个键值:

  • RDPRT键 = 0x000000A5
  • KEY1 = 0x45670123
  • KEY2 = 0xCDEF89AB

解锁:

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

加锁:

  • 设置FLASH_CR中的LOCK位锁住FPEC和FLASH_CR

使用指针访问存储器

因为STM32的内部存储器都是挂载到总线上的,可以直接使用指针读取到

  • 使用指针读指定地址下的存储器:
    uint16_t Data = *((__IO uint16_t *)(0x08000000));
  • 使用指针写指定地址下的存储器(需要先解锁):
    *((__IO uint16_t *)(0x08000000)) = 0x1234;
  • 其中: #define __IO volatile
    用于防止编译器优化,例如编译器会把它认为无用的内容给优化掉(如空循环等),那加上这个宏定义就可以避免内容被优化掉,keil默认是低级优化,一般没有影响,若提高了优化等级就需要注意加上这个宏定义。还有例如需要多次使用某变量,编译器会把变量先存在高速缓存中,执行结束后再存回内存,若代码为多线程,中途使用中断修改了此变量,而高速缓存中此变量并没有改变,会导致错误,此时加上这个宏定义,表示此变量为易变变量,要直接去内存找,就可以避免这种错误

FLASH操作

Flash全擦除

在这里插入图片描述

Flash页擦除

在这里插入图片描述

Flash写入

再写入前会先检查此地址是否擦除,未擦除则不写入
每次只能写入半字(16位)数据
写入使用指针写入即可
在这里插入图片描述

选项字节

在这里插入图片描述
以上带n的是不带n的反码,由电路自动配置

  • RDP:写入RDPRT键(0x000000A5)后解除读保护
  • USER:配置硬件看门狗和进入停机/待机模式是否产生复位
  • Data0/1:用户可自定义使用
  • WRP0/1/2/3:配置写保护,每一个位对应保护4个存储页(中容量),给0实施写保护

选项字节操作

选项字节擦除

  • 检查FLASH_SR的BSY位,以确认没有其他正在进行的闪存操作,事前等待
  • 解锁FLASH_CR的OPTWRE位,解锁选项字节,与flash锁类似,对FPEC解锁后,必须分别写入KEY1和KEY2(和flash的密钥相同)到FLASH_OPTKEYR寄存器
  • 设置FLASH_CR的OPTER位为1,即将擦除选项字节
  • 设置FLASH_CR的STRT位为1,开始擦除
  • 等待BSY位变为0,等待执行结束
  • 读出被擦除的选择字节并做验证

选项字节写入

  • 检查FLASH_SR的BSY位,以确认没有其他正在进行的编程操作,事前等待
  • 解锁FLASH_CR的OPTWRE位,解锁选项字节
  • 设置FLASH_CR的OPTPG位为1,准备写入
  • 写入要编程的半字到指定的地址
  • 等待BSY位变为0,等待写入完成
  • 读出写入的地址并验证数据

器件电子签名

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

闪存容量寄存器
基地址:0x1FFF F7E0
大小:16位

产品唯一身份标识寄存器
基地址: 0x1FFF F7E8
大小:96位


注意

FLASH的注意事项基本一致:

  • 写入操作前,必须先进行写使能
  • 每个数据位只能由1改写为0,不能由0改写为1
  • 写入数据前必须先擦除,擦除后,所有数据位变为1
  • 擦除必须按最小擦除单元进行 连续写入多字节时,最多写入一页的数据,超过页尾位置的数据,会回到页首覆盖写入
  • 写入操作结束后,芯片进入忙状态,不响应新的读写操作

在编程过程中,(BSY位为’1’),任何读写闪存的操作都会使CPU暂停,直到此次闪存编程结束,可能会导致中断响应不及时

闪存控制寄存器一览

在这里插入图片描述

这篇关于STM32FLASH闪存的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1015451

相关文章

STM32内部闪存FLASH(内部ROM)、IAP

1 FLASH简介  1 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 2 通过在程序中编程(IAP)实现程序的自我更新 (OTA) 3在线编程(ICP把整个程序都更新掉) 1 系统的Bootloader写死了,只能用串口下载到指定的位置,启动方式也不方便需要配置BOOT引脚触发启动  4 IAP(自己写的Bootloader,实现程序升级) 1 比如蓝牙转串口,

“Flash闪存”介绍 及 “SD NAND Flash”产品的测试含例程

“Flash闪存”介绍 及 “SD NAND Flash”产品的测试含例程 文章目录 一、“FLASH闪存”是什么?1. 简介2. 特点3. 未来发展 二、SD NAND Flash1. 概述2. 特点3. 引脚分配4. 数据传输模式5. SD NAND寄存器6. 通电图7. 参考设计 三、STM32测试例程 三、STM32测试例程 本篇除了对flash闪存进行简单介绍外,另给读

【保姆级教程】“Flash闪存”介绍 及 “SD NAND Flash”产品的测试含例程

文章目录 一、“FLASH闪存”是什么?1. 简介2. 特点2.1 性能2.2 可靠性2.3 耐用性2.4 易于使用 3. 未来发展 二、SD NAND Flash1. 概述2. 特点3. 引脚分配4. 数据传输模式5. SD NAND寄存器6. 通电图7. 参考设计 三、STM32测试例程1. 初始化2. 单数据块测试3. 多数据块测试4. 状态缓冲 本篇除了对flash闪存

集成电路学习:什么是Flash Memory闪存

Flash Memory:闪存         Flash Memory,即闪存,是一种电子式可清除程序化只读存储器的形式,它允许在操作中被多次擦除或写入数据。以下是关于Flash Memory(闪存)的详细解释: 一、Flash Memory闪存的定义与特点 Flash Memory闪存的定义:闪存是一种非易失性存储器,即断电后数据也不会丢失。它采用电子式存储方式,通过电荷的存储来代表

STM32——Flash闪存

以上部分,主存储器:程序存储器; 启动程序代码:系统存储器; 用户选择字节:选项字节 以下是闪存的管理员,用于擦除和读写的地址 C8T6一共64K,主存储器为64页 以下是整体框图: FLASH的整体流程: 1、解锁+加锁 通过键寄存器对FLASH进行解锁(先用KEY1解锁,再用KEY2解锁),上一步完成后,要尽快加锁:加锁的时候在LOCK位写1即可锁住 2、

NVF04M录音芯片在宠物喂食器的应用:录音播放功能,内置SPI闪存

在现代社会中,宠物已经成为人们生活中的一部分,而宠物喂食器作为宠物养护的重要工具,也越来越受到人们的关注。为了满足人们对宠物喂食器的多样化需求,九芯电子供应商研发了一款NVF04M录音芯片。它在宠物喂食器中的作用主要是提供语音提示和录音播放功能,以增强用户体验和宠物的幸福感。‌ NVF04M录音芯片是一款内置SPI闪存的芯片,无需外挂存储器,能够减少外围电路和生产成本。它支持实时录音播放

STM32单片机-FLASH闪存

STM32单片机-FLASH闪存 一、FLASH简介二、FLASH工作原理三、读写内部FLASH四、读取芯片ID 一、FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途:   利用程序存储器的剩余空间来保存掉电不丢失的用户数据   通过在程序中编程(I

NAND闪存市场彻底复苏

在全球内存市场逐渐走出阴霾、迎来复苏曙光之际,日本存储巨头铠侠(Kioxia)凭借敏锐的市场洞察力和及时的战略调整,成功实现了从生产紧缩到全面复苏的华丽转身。这一转变不仅彰显了企业在逆境中的生存智慧,也为全球半导体产业的回暖增添了一抹亮色。 #### 生产复苏:满载产能应对需求回暖 面对2022年智能手机市场疲软导致的需求下滑,铠侠采取了大胆的生产削减措施,以应对库存压力和市场不确定性。然

STM32作业实现(六)闪存保存数据

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按键TPAD STM32作业实现(九)驱动舵机 源码位置 打

NetApp财季报告亮点:全闪存阵列需求强劲,云计算收入增长放缓但AI领域前景乐观

在最新的财季报告中,NetApp的收入因全闪存阵列的强劲需求而显著增长。截至2024年4月26日的2024财年第四季度,NetApp的收入连续第三个季度上升,达到了16.7亿美元,较前一年同期增长6%,超出公司指导中值。净利润为2.91亿美元,同比增长18.8%,标志着该公司连续第25个季度实现盈利。全闪存阵列的年度运行率(ARR)再创新高,达到了36亿美元,季度内全闪存收入达到8.5亿美元。