因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分

1、RAM和ROM的一些基本概念 —— STM32学习笔记:FLASH读写之一

2、STM32的Flash寄存器及介绍 —— STM32学习笔记:FLASH读写之二

3、STM32的Flash读写相关函数 —— STM32学习笔记:FLASH读写之三

4、STM32的Flash自己编辑函数 —— STM32学习笔记:FLASH读写之四

什么是RAM和ROM,它们的区别是什么?

ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写;RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存 。

目录

0x01、RAM的分类:

0x0001、静态随机存取存储器(Static Random-Access Memory,SRAM)

0x0002、动态随机存取存储器(Dynamic Random Access Memory,DRAM)

0x02、ROM的分类:

0x0001、ROM

0x0002、PROM

0x0003、EPROM

0x0004、EEPROM

0x0005、Flash ROM

0x0006、EEPROM和FLASH的对比


0x01、RAM的分类:

0x0001、静态随机存取存储器Static Random-Access Memory,SRAM

SRAM利用晶体管来存储信息,所以一旦掉电,资料就会全部丢失,只要供电,它的资料就会一直存在,不需要动态刷新,所以叫静态随机存储器。SRAM中的每一位均存储在四个晶体管当中,这四个晶体管组成了两个交叉耦合反向器。这个存储单元具有两个稳定状态,通常表示为0和1。另外还需要两个访问晶体管用于控制读或写操作过程中存储单元的访问。因此,一个存储位通常需要六个MOSFET。对称的电路结构使得SRAM的访问速度要快于DRAM。SRAM比DRAM访问速度快的另外一个原因是SRAM可以一次接收所有的地址位,而DRAM则使用行地址和列地址复用的结构。SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。

0x0002、动态随机存取存储器Dynamic Random Access MemoryDRAM

主要的作用原理是利用电容内存储电荷的多寡来代表一个二进制比特(bit)是1还是0。由于在现实中晶体管会有漏电电流的现象,导致电容上所存储的电荷数量并不足以正确的判别数据,而导致数据毁损。因此对于DRAM来说,周期性地充电是一个无可避免的要件。由于这种需要定时刷新的特性,因此被称为“动态”存储器。相对来说,静态存储器(SRAM)只要存入数据后,纵使不刷新也不会丢失记忆。

与SRAM相比,DRAM的优势在于结构简单——每一个比特的数据都只需一个电容跟一个晶体管来处理,相比之下在SRAM上一个比特通常需要六个晶体管。正因这缘故,DRAM拥有非常高的密度,单位体积的容量较高因此成本较低。但相反的,DRAM也有访问速度较慢,耗电量较大的缺点。与大部分的随机存取存储器(RAM)一样,由于存在DRAM中的数据会在电力切断以后很快消失,因此它属于一中易失性存储器(volatile memory)设备。

DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。

DRAM分为很多种,常见的主要有FPRAM / FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等。其中DDR RAM(Double-Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的, 不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。(我们常说的DDR3和DDR4就是这种RAM)

而通常人们所说的SDRAM 是DRAM 的一种,它是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计、提供高速的数据传输。在嵌入式系统中经常使用。

0x02、ROM的分类:

0x0001、ROM

ROM指的是“只读存储器”,即Read-Only Memory。这是一种线路最简单半导体电路,通过掩模工艺,一次性制造,其中的代码与数据将永久保存,不能进行修改。在微机的发展初期,BIOS都存放在ROM(Read Only Memory,只读存储器)中。如果发现内部数据有错,则只有舍弃不用,重新订做一份。

0x0002、PROM

PROM指的是“可编程只读存储器”既Programmable Red-Only Memory。这样的产品只允许写入一次,所以也被称为“一次可编程只读存储器”(One Time Progarmming ROM,OTP-ROM)。PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1), 以实现对其“编程”的目的。PROM的典型产品是“双极性熔丝结构”,如果我们想改写某些单元,则可以给这些单元通以足够大的电流,并维持一定的时间, 原先的熔丝即可熔断,这样就达到了改写某些位的效果。另外一类经典的PROM为使用“肖特基二极管”的PROM,出厂时,其中的二极管处于反向截止状态,还是用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可。PROM一旦写入后无法修改,若是出了错误,已写入的芯片只能报废。(AVR芯片应该就是使用的PROM)

0x0003、EPROM

EPROM指的是“可擦写可编程只读存储器”,即Erasable Programmable Read-Only Memory。 它的特点是具有可擦除功能,擦除后即可进行再编程,但是缺点是擦除需要使用紫外线照射一定的时间。这一类芯片特别容易识别,其封装中包含有“石英玻璃窗”,一个编程后的EPROM芯片的“石英玻璃窗”一般使用黑色不干胶纸盖住, 以防止遭到阳光直射。

0x0004、EEPROM

EEPROM指的是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。它的最大优点是可直接用电信号擦除,也可用电信号写入。鉴于EPROM操作的不便,后来出的主板上的BIOS ROM芯片大部分都采用EEPROM。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。 借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“ON”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“OFF”的位置,防止病毒对BIOS芯片的非法修改。

0x0005、Flash ROM

Flash ROM指的是“闪存”,所谓“闪存”,它也是一种非易失性的内存,属于EEPROM的改进产品,Flash属于真正的单电压芯片,它的读和写操作都是在单电压下进行。它的最大特点是必须按块(Block或Sector)擦除(每个区块的大小不定,不同厂家的产品有不同的规格), 而EEPROM则可以一次只擦除一个字节(Byte)。Flash ROM 是利用浮置栅上的电容存储电荷来保存信息,因为浮置栅不会漏电,所以断电后信息仍然可以保存。Flash ROM的存储容量普遍大于EEPROM,约为512K到至8M KBit,由于大批量生产,价格也比较合适,很适合用来存放程序码,近年来已逐渐取代了EEPROM,广泛用于主板的BIOS ROM。另外,它还主要用于U盘,MP3等需要大容量且断电不丢数据的设备。

目前Flash主要有两种NOR Flash和NADN Flash。

1)、NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。

2)、NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。

一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的“闪盘”,可以在线擦除。目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba。

0x0006、EEPROM和FLASH的对比

对于用户来说,EEPROM和FLASH 的最主要的区别就是

1。EEPROM 可以按“位”擦写,而FLASH 只能一大片一大片的擦。

2。EEPROM 一般容量都不大,如果大的话,EEPROM相对与FLASH 就没有价格上的优势了。市面上卖的stand alone 的EERPOM 一般都是在64KBIT 以下,而FLASH 一般都是8MEG BIT 以上(NOR 型)。

3。读的速度的话,应该不是两者的差别,只是EERPOM一般用于低端产品,读的速度不需要那么快,真要做的话,其实也是可以做的和FLASH差不多。

4。因为EEPROM的存储单元是两个管子而FLASH 是一个(SST的除外,类似于两管),所以CYCLING 的话,EEPROM比FLASH 要好一些,到1000K次也没有问题的。

总的来说,对与用户来说,EEPROM和FLASH没有大的区别,只是EEPROM是低端产品,容量低,价格便宜,但是稳定性较FLASH要好一些。但对于EEPROM和FLASH的设计来说,FLASH则要难的多,不论是从工艺上的还是从外围电路设计上来说。

对ROM的总结:

PROM是可编程的ROM,PROM和EPROM(可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。(这几种ROM中只有EEPROM还有些使用,前几种现在很少见了,这些ROM都将逐步被Flash取代)

Flash也是一种非易失性存储器(掉电不会丢失),它擦写方便,访问速度快,已大大取代了传统的EPROM的地位。由于它具有和ROM一样掉电不会丢失的特性,因此很多人称其为Flash ROM。FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦出可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速 取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,用作存储bootloader以及操作系统或者程序代码或者直接当硬盘使用(U 盘)。

STM32学习笔记:FLASH读写之一相关推荐

  1. STM32学习笔记:读写内部Flash。

    首先我们需要了解一个内存映射:    stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起始地 ...

  2. STM32学习笔记:读写内部Flash(介绍+附代码)

    一.介绍 首先我们需要了解一个内存映射: stm32的flash地址起始于0x0800 0000,结束地址是0x0800 0000加上芯片实际的flash大小,不同的芯片flash大小不同. RAM起 ...

  3. STM32学习笔记:FLASH读写之二

    因为关于STM32的Flash相关的知识点比较多,所以该内容的学习我们分为以下4个部分 1.RAM和ROM的一些基本概念 -- STM32学习笔记:FLASH读写之一 2.STM32的Flash寄存器 ...

  4. STM32学习笔记(9)——(I2C续)读写EEPROM

    STM32学习笔记(9)--(I2C续)读写EEPROM 一.概述 1. 背景介绍 2. EEPROM简介 二.AT24C02--常用的EEPROM 1. 电路原理图 2. 写操作 (1)按字节写操作 ...

  5. 《STM32学习笔记》4——核心功能电路与编程(下)

    接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.蜂鸣器驱动 1.蜂鸣器介绍 2.蜂鸣器电路 3.蜂鸣器程序 二. MIDI 音乐 ...

  6. 硬件学习、高速dsp开发板制作、STM32学习笔记

    1.硬件工程师成长之路(1)--元件基础_[云轩]的博客-CSDN博客_硬件工程师的成长之路 总目录:https://blog.csdn.net/weixin_44407238/category_10 ...

  7. 《STM32学习笔记》3——核心功能电路与编程(上)

    接上文,文中的图片,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.核心板电路分析 二.点灯 LED 1.LED电路 2.LED功能相关初始化配置 ...

  8. 《STM32学习笔记》2——开发环境的建立

    接上文,文中的图片知识,大多数来自视频的截图(来自洋桃电子). 欢迎大家批评指正! STM32学习笔记-专栏 文章目录 一.接口定义 1 芯片引脚整体简介 2 各部分引脚介绍 二.开发板简介 三.IS ...

  9. STM32学习笔记(三)丨中断系统丨EXTI外部中断(对射式红外传感器计次、旋转编码器计次)

    本篇文章包含的内容 一.中断系统 1.1 中断的定义 1.2 中断优先级 1.3 中断的嵌套 1.4 STM32中的中断系统 1.4.1 STM32的中断资源 1.4.2 嵌套中断向量控制器 NVIC ...

最新文章

  1. Redis+分布式+设计模式+Spring全家桶+Dubbo阿里P8技术精选文档
  2. micropython安装第三方库_安装第三方模块
  3. mysql8 win10启动_Windows10 mysql 8.0.12 非安装版配置启动方法
  4. Galaxy s4怎么安装一个预装软件的签名不一致的新版本
  5. 6.6折票仅剩3天 | BDTC 2019全日程公布,哪些是你感兴趣的话题?
  6. IBM T60网卡问题
  7. python中级_python复习之中级
  8. Boost.Bind的基础使用
  9. 大数据Hadoop集群中常用的任务调度框架
  10. webpack4.0.1安装问题及解决方法
  11. htons、inet_addr、
  12. 10X Genomics单细胞转录组测序
  13. mysql俩个表怎么创主外洁_单独招生面试题极其详细答案
  14. 电脑怎么修改html5,详细教你怎么设置电脑默认浏览器
  15. JavaWeb开发 —— HTML
  16. android 关机界面修改,修改Android关机界面
  17. RLHF:基于人类反馈(Human Feedback)对语言模型进行强化学习【Reinforcement Learning from Human Feedback】
  18. Matlab 预防性维修,MATLAB进行预测性维护(官网例程)-基于相似性进行剩余有效寿命预测 – MATLAB中文论坛...
  19. 看来不止一次的电影(电影经典给你好看准备下载下来,免得以后收费了)
  20. 吃烧烤之命令模式学习笔记[C++版]

热门文章

  1. 计算机运算器实验原理,运算器实验原理.ppt
  2. 数值优化:经典随机优化算法及其收敛性与复杂度分析
  3. Windows的cmd命令提示符窗口命令大全
  4. Android 双开沙箱 VirtualApp 源码分析(一)
  5. BVR、RV、BV电线三者区别
  6. matlab 软启动器,基于Matlab/Simulink的滑模软起动器仿真研究
  7. 分享:js大小写转换的代码
  8. 智慧农业物联网平台建设方案
  9. 致我们终将逝去的大学生活
  10. 无人值守污水处理控制系统。 西门子200PLC和显控触摸屏编写的智能污水处理控制系统