当前位置: 首页 > news >正文

22-内部FLASH

一、ROM只读存储器的基本概述

1.1 基本概念

我们正常编译生成的二进制文件,需要下载烧录到单片机里面去,这个文件保存在单片机的ROM中,ROM是一种固态半导体存储器,具有只能读出事先所存数据的特性。这意味着,一旦数据被写入ROM,用户就无法进行修改或删除,只能进行读取操作。

1.2 工作原理

ROM的基本工作原理基于存储单元的固定状态。每个存储单元可以存储一个二进制位(0或1),通过电路设计实现数据的读取。具体来说,ROM内部通过逻辑电路将数据固定在存储单元阵列中,在读取数据时,控制电路选择相应的地址单元,并将数据传输给处理器。

1.3 主要特点

  1. 数据固定性:ROM中的数据是在出厂时被编程固化的,用户无法进行修改。这使得ROM非常适合用于存储固定不变的信息,如计算机或电子设备的启动程序、固件和操作系统的关键部分等。
  2. 数据可靠性:由于ROM中的数据是在生产过程中进行编程的,因此具有很高的可靠性。与可擦写存储器(如闪存)相比,ROM具有更低的故障率,并且不容易受到病毒或错误操作的影响。
  3. 高速读取:ROM的读取速度非常快,因为其中的数据是固定的,无需进行写入和擦除操作。这使得ROM适用于需要快速读取数据的应用场景。
  4. 低功耗:ROM不需要外部电源来保持数据的稳定性,因此具有极低的功耗和较长的使用寿命。
  5. 大容量:ROM可以容纳大量的数据和指令,提供的容量从几千字节到几十兆字节不等,能够满足各种应用的需求。
  6. 非易失性:即使断电,ROM中存储的数据也不会丢失。

1.4 分类说明

根据制造工艺和数据写入方式的不同,ROM可以分为以下几种类型:

  1. 掩膜只读存储器(MROM):在制造过程中,数据被永久地写入存储单元中,用户无法进行修改。
  2. 可编程只读存储器(PROM):允许用户在制造后通过专用设备进行一次编程。
  3. 可擦除可编程只读存储器(EPROM):数据可以通过紫外线擦除,并允许重新编程多次。但擦除过程相对复杂,需要专用设备。
  4. 电可擦除可编程只读存储器(EEPROM):使用电信号擦写数据,修改数据更加方便。但写入速度相对较慢,且成本较高。
  5. 快闪存储器(Flash Memory):EEPROM的改进版,支持快速大块数据擦写,具有更高的擦写速度和更大的容量。但写入次数有限。

1.4.1Flash(EEPROM)

        如果从电擦除这一特性上深入探讨的话,FLASH存储器确实可以被视为EEPROM(电可擦可编程只读存储器)的一种变体,但二者之间存在着显著的差异。关键在于它们的擦除机制上:EEPROM允许以字节为单位进行擦除操作,这意味着可以精确地修改存储单元中的少量数据,而无需影响其他数据。这种高度的灵活性使得EEPROM在处理需要频繁更新小量数据的应用时表现出色,但相应地,也增加了其制造成本和技术复杂性。

        相比之下,FLASH存储器则采用了更为粗犷的擦除方式——按扇区进行擦除。扇区通常包含多个字节的数据,因此,在需要修改FLASH中的数据时,即便是只更改一个字节的信息,也必须将整个扇区的内容擦除后再重新写入。这种擦除机制虽然牺牲了EEPROM那样的精细控制能力,但却极大地简化了存储器的结构和制造流程,从而有效地降低了成本。因此,FLASH存储器在价格上相较于EEPROM具有显著优势,尤其是在需要大容量存储的应用场景中,这一成本优势尤为明显。

        此外,FLASH存储器的这一特性还促使了其在多种电子设备中的广泛应用,从智能手机、数码相机到固态硬盘(SSD),FLASH都扮演着不可或缺的角色。这些设备往往需要存储大量数据,而FLASH的高性价比和可靠的存储性能使其成为理想的选择。尽管在某些特定场景下,EEPROM的灵活性可能更为理想,但总体来看,FLASH存储器凭借其成本效益和广泛适用性,在存储市场上占据了主导地位。

闪存(Flash Memory)是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。用途SD卡、固态硬盘、芯片内存存储单元存储代码。

二、MCU内部FLASH的特性与原理

2.1 主要特性

注意:这里FLASH写的是1M是按最高的写,实际上只有512KB

2.2 操作技巧

三、MCU内部Flash的编程细节

  1. 以分区形式进行规划,配置数据最好从最后扇区进行操作,防止覆盖扇区0的代码。

 

注意:在程序下载KEIL已经设置好了下载地址起始地址,根据上面,可发现在下载的程序从扇区0开始的。

程序固化到FLASH,需要对BOOT0与BOOT1进行设置

BOOT接GND BOOT1可接任意电平,程序下载及启动从FLASH开始。

  1. 写入数据之前得先擦除数据,类似与读书时的黑板原理。

具体步骤:

(1)解锁

FLASH_Unlock();

(2)擦除扇区

FLASH_EraseSector(uwSectorCounter, VoltageRange_3);

(3)往FLASH当中写入数据(按字节写入数据)

FLASH_ProgramByte(uint32_t Address, uint8_t Data)

(4)上锁

FLASH_Lock();

例子源码:

https://download.csdn.net/download/m0_63622771/90868128

http://www.xdnf.cn/news/535879.html

相关文章:

  • java day13
  • JVM 垃圾回收器
  • EX文件浏览器:功能强大的安卓文件管理工具
  • 特征值与特征向量的计算——PCA的数学基础
  • 扫描项目依赖漏洞
  • Go语言八股文之分库分表
  • 中服云生产线自动化智能化调度生产系统:打造智能制造新标杆
  • 前端子项目打包集成主项目实战指南
  • 高校快递物流管理系统设计与实现(SpringBoot+MySQL)
  • 1.3.3 数据共享、汇聚和使用中的安全目标
  • 蓝桥杯框架-LED蜂鸣器继电器
  • 大中型水闸安全监测系统解决方案
  • C++初阶-vector的底层
  • 解决RAGFlow部署中镜像源拉取的问题
  • 单点登录是是什么?具体流程是什么?
  • 计算圆周率 (python)
  • select * from 按时间倒序排序
  • AT_abc401_d [ABC401D] Logical Filling 题解
  • 经典密码学和现代密码学的结构及其主要区别(1)凯撒密码——附py代码
  • 酒店运营中一次性用品选购要点及扬州卓韵酒店用品的专业咨询服务
  • 初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)
  • C++ 关于C++中IO流的相关内容 stringstream的相关介绍
  • 「卫星百科」四维高景系列卫星
  • 从API到UI:直播美颜SDK中的滤镜与贴纸功能开发与落地方案详解
  • 理解UDP协议
  • 【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+
  • 天才简史——Paolo Fiorini与他的速度障碍法
  • 禁止在Windows命令行输入python后跳转Microsoft Store
  • Java反射机制详解:原理、应用与实战
  • 使用for循环和字典功能,统计字符出现在一个英文句子中的次数(python)