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闪存

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亿美元。

SM2258G专用SSD开卡工具(三星闪存),后附工具下载

工具下载: https://download.csdn.net/download/weixin_43097956/89354302

闪存存储和制造技术概述

闪存存储技术 引言 性能由高到低排序:SLC -> MLC -> TLC -> QLC 根据这个排序读写速度也越来越低,价格越来越便宜 1. SLC SLC(Single-Level Cell,单层单元): SLC 闪存具有最高的性能、耐用性和可靠性。一单位空间(cell)可以存储 1bit 数据,也就是 1bit/cell,单颗粒理论擦写次数在10万次以上,这代表的就是如果你有

ESP8266闪存文件系统(SPIFFS)

开发环境: 1、安装ESP8266的开发环境,如Arduino IDE。 2、下载并安装ESP8266的相关开发库和工具。 我们使用的是Arduino IDE。 基本介绍:   每一个ESP8266都配有一个闪存,这个闪存很像是一个小硬盘,我们上传的文件就被存放在这个闪存里。这个闪存的全称是Serial Peripheral Interface Flash File System(S

闪存和CFI

参考:毛德操的《嵌入式系统》和CFI标准协议 1、闪存的特点: 1、不挥发,即在断电是不会失去已经写入的内容。 2、随机可读,就像RAM和ROM一样,可以从任意地址读出,读出的速度与地址无关。 3、对于已经写入的内容可以成片擦除,不过只能成片地擦除,而不能随机擦除,并且必须遵循一定的步骤。 4、对于空白,或已经擦除内容的区间可以按一定规则随机写入,但是一经写入,便不能向相同的地址再写入,

闪存 64TQFP CY8C6244AZI-S4D92 32 位双核微控制器

CY8C6244AZI-S4D92 微控制器 (MUC) 是一款超低功耗、高性能的PSoC MCU,具有关键安全特性,可用于物联网应用。PSoC 6基于超低功耗40nm工艺技术,提供双核ARM® Cortex®-M架构。该款MCU还提供电容传感解决方案CapSense®、软件定义的模拟和数字外设、可编程模拟前端 (AFE) 功能以及多种连接选项。 PSoC 6为物联网开发提供了安全的解决方案,并同

[SSD NAND 4.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理

传送门 <<< 总目录 ​​ 主页: 元存储的博客_CSDN博客 依公开知识及经验整理,如有误请留言。 个人辛苦整理,付费内容,禁止转载。​ 内容摘要 2.1.3.1 Flash 的物理学原理与发明历程 经典物理学认为 物体越过势垒,有一阈值能量;粒子能量小于此能量则不能越过,大于此能 量则可以越过。例如骑自行车过小坡,先用力骑,如果坡很低,不蹬自行车也能 靠惯性过去。如果坡很高,