【STM32】STM32学习笔记-FLASH闪存(48)

00. 目录

文章目录

    • 00. 目录
    • 01. FLASH简介
    • 02. 闪存模块组织
    • 03. FLASH基本结构
    • 04. FLASH解锁
    • 05. 使用指针访问存储器
    • 06. 程序存储器编程
    • 07. 选项字节
    • 08. 选项字节编程
    • 09. 选项字节擦除
    • 10. 器件电子签名
    • 11. 附录

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

02. 闪存模块组织

在这里插入图片描述

03. FLASH基本结构

在这里插入图片描述

04. FLASH解锁

  • FPEC共有三个键值:

RDPRT键 = 0x000000A5

KEY1 = 0x45670123

KEY2 = 0xCDEF89AB

  • 解锁:

复位后,FPEC被保护,不能写入FLASH_CR

在FLASH_KEYR先写入KEY1,再写入KEY2,解锁

错误的操作序列会在下次复位前锁死FPEC和FLASH_CR

  • 加锁:

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

05. 使用指针访问存储器

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

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

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

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

•其中:

#define __IO volatile

06. 程序存储器编程

编程过程
在这里插入图片描述

闪存页擦除过程
在这里插入图片描述

闪存全擦除过程
在这里插入图片描述

07. 选项字节

在这里插入图片描述

•RDP:写入RDPRT键(0x000000A5)后解除读保护

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

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

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

08. 选项字节编程

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

•解锁FLASH_CR的OPTWRE位

•设置FLASH_CR的OPTPG位为1

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

•等待BSY位变为0

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

09. 选项字节擦除

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

•解锁FLASH_CR的OPTWRE位

•设置FLASH_CR的OPTER位为1

•设置FLASH_CR的STRT位为1

•等待BSY位变为0

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

10. 器件电子签名

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

•闪存容量寄存器:

基地址:0x1FFF F7E0

大小:16位

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

基地址: 0x1FFF F7E8

大小:96位

11. 附录

参考: 【STM32】江科大STM32学习笔记汇总

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/427144.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【.NET Core】.NET中的流(Stream)

【.NET Core】.NET中的流(Stream) 文章目录 【.NET Core】.NET中的流(Stream)一、流(Stream)1.1 FileStream类1.2 IsolatedStorageFileStream类1.3 MemoryStream类1.4 BufferedStream类1.5 NetworkStream类…

STM32 (2)

1.stm32编程模型 将C语言程序烧录到芯片中会存储在单片机的flsah存储器中,给芯片上电后,Flash中的程序会逐条进入到CPU中去执行,进而CPU去控制各种模块(即外设)去实现各种功能。 2.寄存器和寄存器编程 CPU通过控制其…

公司电脑文件防泄密软件——| 中科数安

公司电脑文件防泄密软件是一种专门设计用于保护企业敏感信息和数据安全的软件。这些软件通过采用各种技术手段,如数据加密、访问控制、行为监控等,来防止公司的机密文件、客户资料、财务数据等被非法获取、复制或传播。 www.weaem.com 以下是公司电脑文件…

选项 打光 试题总结

试题1 被测物体100100mm,精度要求被测物体 ,精度要求0.1mm,相机距被测物体在200~320mm之间,要求选择合适的相机和镜头? 分析如下: 通常我们用的相机靶面是4:3 的所以我们要用短边来计算视场&am…

Vue导出json数据到Excel表格

一、安装依赖 npm install file-saver --save npm install xlsx --save npm install script-loader --save-dev二、下载两个所需要的js文件Blob.js和 Export2Excel.js。 这里下载:下载地址 三、src目录下新建vendor文件夹,将Blob.js和 Export2Excel.j…

STM32学习和实践笔记(1): 装好了的keil μVision 5

2019年3月在淘宝上买了这块STM32的开发板,学了一段时间后就丢下了,今天重新捡起来,决定好好学习、天天向上。 对照教程,今天先把keil5装上了。 装的过程有以下几点值得记录下: 1)用注册机时,…

x86中的TSS与任务切换

前言 今天在学习《深入理解Linux内核》的时候,发现出现了一个新的名词TSS(Task-State Segment),这还是我第一次了解到原来x86提供了硬件级别的任务切换功能,之前以为任务切换都是操作系统实现的来着,这里也…

计算机电源的功率不足150W的几种主要原因?

180 至 250 伏 180-250伏 一般计算机电源的工作电压范围为 180 至 250 伏。 电脑电源是安装在电脑内部的电脑部件,负责将普通市电电源转换成电脑可以使用的电压。 电脑电源是一个开关电路,将普通交流电转换为直流电,然后通过斩波控制电压&a…

JavaScript 中的类型转换机制(详细讲解)

文章目录 一、概述二、显示转换Number()parseInt()String()Boolean() 三、隐式转换自动转换为布尔值自动转换成字符串自动转换成数值 一、概述 前面我们讲到,JS中有六种简单数据类型:undefined、null、boolean、string、number、symbol,以及…

你知道为什么输电线路除冰采用的是直流电而不是交流电呢?

2月22日以来,受新一轮寒潮影响,四川地区气温骤降,多地出现了零摄氏度以下的低温和冰冻天气,泥巴山、蓑衣岭等微气象区域20条500千伏线路出现不同程度覆冰,其中500千伏石雅四回线路覆冰最为严重,导线和铁塔上…

程序员在面试过程中需要重点关注的问题

在金三银四这个关键的求职季节,程序员面试的成功与否往往决定了他们能否获得心仪的工作机会。在这篇文章中,我将详细介绍程序员在面试过程中需要重点关注的问题,并提供一些实用的建议和技巧。 一、了解自己和职位要求 在面试之前&…

在线绘图利器:支持在线使用的电脑画图软件推荐!

计算机绘图软件是现代设计师和创作者必不可少的工具之一。伴随着技术的不断发展,越来越多的在线计算机绘图软件应运而生,为用户提供了更加便捷、高效的创作方法。对初学者而言,选择一款易于使用、功能强大的计算机绘图软件至关重要。本文将介…

39. 【Linux教程】修改文件所属关系

上一节介绍了如何修改文件的读、写、执行权限,包括属主用户权限、所属用户组权限、其他用户组用户权限,本小节介绍如何修改文件的所属关系,所属关系又包括文件的属主和所属组。 1.chown 命令 若想要修改文件的属主,可以使用 chow…

便携式启动电源的市场前景和商业机会

便携式启动电源是一种便携式电子设备,主要用于为飞机、火炮、汽车、船只等大型机械提供紧急启动电源。它通常由一个可充电的电池和一个充电器组成,可以方便地随身携带。 便携式启动电源的工作原理是通过将电池的电能转换为机械能,从而驱动汽…

Leetcoder Day38| 动态规划part05 背包问题

1049.最后一块石头的重量II 有一堆石头&#xff0c;每块石头的重量都是正整数。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a; 如果 x y&#xff0c;那…

云端技术驾驭DAY15——ClusterIP服务、Ingress服务、Dashboard插件、k8s角色的认证与授权

往期回顾&#xff1a; 云端技术驾驭DAY01——云计算底层技术奥秘、云服务器磁盘技术、虚拟化管理、公有云概述 云端技术驾驭DAY02——华为云管理、云主机管理、跳板机配置、制作私有镜像模板 云端技术驾驭DAY03——云主机网站部署、web集群部署、Elasticsearch安装 云端技术驾驭…

Java中继承的作用及解析

在 Java 中&#xff0c;继承是一种非常重要的面向对象编程特性。它的主要作用包括以下几个方面&#xff1a; 代码复用&#xff1a;通过继承&#xff0c;子类可以复用父类的代码&#xff0c;包括属性和方法。这样可以避免重复编写相同的代码&#xff0c;提高代码的复用性和可维护…

keycloak-鉴权springboot

一、环境描述 keycloak鉴权springboot的方式&#xff0c;此处简单介绍&#xff0c;springboot官方也提供了demo https://github.com/keycloak/keycloak-quickstarts/tree/latest/spring/rest-authz-resource-server 以及文档说明 Securing Applications and Services Guide…

2024年智能驾驶年度策略:自动驾驶开始由创造型行业转向工程型行业

感知模块技术路径已趋于收敛&#xff0c;自动驾驶从创造型行业迈向工程型行业。在特斯拉的引领下&#xff0c;国内主机厂2022年以来纷纷跟随特斯拉相继提出“重感知、轻地图”技术方案&#xff0c;全球自动驾驶行业感知模块技术路径从百花齐放开始走向收敛。我们认为主机厂智能…

波斯猫 6页面 宠物动物 长毛猫 HTML5 带背景音乐 JS图片轮播特效 滚动文字 鼠标经过图片 JS时间代码

波斯猫 6页面 宠物动物 长毛猫 HTML5 带背景音乐 JS图片轮播特效 滚动文字 鼠标经过图片 JS时间代码 注册表单 宠物网页成品 海量学生网页成品 个人博客 人物明星 城市家乡 旅游景点 美食特产 购物电商 公司企业 学校大学 科普教育 宠物动物 鲜花花卉 植物水果 茶叶咖啡 健康生…