单片机flash存储器_cc2530单片机外设flash存储器 - CSDN
  • 单片机中为什么有了Flash还有EEPROM?

    万次阅读 多人点赞 2018-10-14 16:26:29
    时,然后才能再下一次...EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储...

    时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一大批程序员,终于可以随意的修改ROM中的内容了。

    EEPROM的全称是“电可擦除可编程只读存储器”,即Electrically Erasable Programmable Read-Only Memory。是相对于紫外擦除的rom来讲的。但是今天已经存在多种EEPROM的变种,变成了一类存储器的统称。

    狭义的EEPROM:

    这种rom的特点是可以随机访问和修改任何一个字节,可以往每个bit中写入0或者1。这是最传统的一种EEPROM,掉电后数据不丢失,可以保存100年,可以擦写100w次。具有较高的可靠性,但是电路复杂/成本也高。因此目前的EEPROM都是几十千字节到几百千字节的,绝少有超过512K的。

    Flash:

    Flash属于广义的EEPROM,因为它也是电擦除的ROM。但是为了区别于一般的按字节为单位的擦写的EEPROM,我们都叫它Flash。

    既然两者差不多,为什么单片机中还要既有Flash又有EEPROM呢?

    通常,单片机里的Flash都用于存放运行代码,在运行过程中不能改;EEPROM是用来保存用户数据,运行过程中可以改变,比如一个时钟的闹铃时间初始化设定为12:00,后来在运行中改为6:00,这是保存在EEPROM里,不怕掉电,就算重新上电也不需要重新调整到6:00。

    但最大区别是其实是:FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。

    在芯片的内电路中,FLASH和EEPROM不仅电路不同,地址空间也不同,操作方法和指令自然也不同,不论冯诺伊曼结构还是哈佛结构都是这样。技术上,程序存储器和非易失数据存储器都可以只用FALSH结构或EEPROM结构,甚至可以用“变通”的技术手段在程序存储区模拟“数据存储区”,但就算如此,概念上二者依然不同,这是基本常识问题。

    EEPROM:电可擦除可编程只读存储器,Flash的操作特性完全符合EEPROM的定义,属EEPROM无疑,首款Flash推出时其数据手册上也清楚的标明是EEPROM,现在的多数Flash手册上也是这么标明的,二者的关系是“白马”和“马”。至于为什么业界要区分二者,主要的原因是 Flash EEPROM的操作方法和传统EEPROM截然不同,次要的原因是为了语言的简练,非正式文件和口语中Flash EEPROM就简称为Flash,这里要强调的是白马的“白”属性而非其“马”属性以区别Flash和传统EEPROM。

    Flash的特点是结构简单,同样工艺和同样晶元面积下可以得到更高容量且大数据量下的操作速度更快,但缺点是操作过程麻烦,特别是在小数据量反复重写时,所以在MCU中Flash结构适于不需频繁改写的程序存储器

    很多应用中,需要频繁的改写某些小量数据且需掉电非易失,传统结构的EEPROM在此非常适合,所以很多MCU内部设计了两种EEPROM结构,FLASH的和传统的以期获得成本和功能的均衡,这极大的方便了使用者。随着ISP、IAP的流行,特别是在程序存储地址空间和数据存储地址空间重叠的MCU系中,现在越来越多的MCU生产商用支持IAP的程序存储器来模拟EEPROM对应的数据存储器,这是低成本下实现非易失数据存储器的一种变通方法。为在商业宣传上取得和双EEPROM工艺的“等效”性,不少采用Flash程序存储器“模拟”(注意,技术概念上并非真正的模拟)EEPROM数据存储器的厂家纷纷宣称其产品是带EEPROM的,严格说,这是非常不严谨的,但商人有商人的目的和方法,用Flash“模拟”EEPROM可以获取更大商业利益,所以在事实上,技术概念混淆的始作俑者正是他们。

     

    来源网络

    展开全文
  • 它就是放在内存中的,数据就是你要处理的内容,flash 相当于硬盘有8k左右,准确的来说是相当于普通电脑内存里的代码段。你写的整个程序(比如函数的代码之类的)就是放到flash里面去的。而且一旦烧写进去了就不能在...

    内存是片内的512Byte(some else)左右,掉电丢失,如你定义一个变量int a =xxxx;它就是放在内存中的,数据就是你要处理的内容,flash 相当于硬盘有8k左右,准确的来说是相当于普通电脑内存里的代码段。你写的整个程序(比如函数的代码之类的)就是放到flash里面去的。而且一旦烧写进去了就不能在运行时修改。也就是说如果你定义一个code a=120; 那么它就定死在flash里了,你不能再用 a=10;去修改它。内存就是用来放临时产生的数据的。

            现在的单片机,RAM主要是做运行时数据存储器,FLASH主要是程序存储器,EEPROM主要是用以在程序运行保存一些需要掉电不丢失的数据。另外,一些变量,都是放到RAM里的,一些初始化数据比如液晶要显示的内容界面,都是放到FLASH区里的(也就是以前说的ROM区),EEPROM可用可不用,主要是存一些运行中的数据,掉电后且不丢失。

    转自:https://blog.csdn.net/dzlyxzy/article/details/56667914

    展开全文
  • 今天我们来学习一下MSP430单片机FLASH操作程序设计
  • 一篇文章讲透单片机的RAM和FLASH

    千次阅读 2020-02-03 00:01:25
    作为单片机内部一个重要组成部分,存储器占有很重要的地位,今天就来聊聊我对于单片机的内部存储器RAM和FLASH的一些认识和理解。 1、先聊聊存储器 存储器单片机结构的重要组成部分,存储器是用来存储编译好的...

    作为单片机内部一个重要组成部分,存储器占有很重要的地位,今天就来聊聊我对于单片机的内部存储器RAM和FLASH的一些认识和理解。

    1、先聊聊存储器

    存储器是单片机结构的重要组成部分,存储器是用来存储编译好的程序代码和数据的,有了存储器单片机系统才具有记忆功能。按照存储介质的特性,可以分“易失性存储器”和“非易失性存储器”两类。易失性存储器断电后,里面存储的内容会丢失;非易失性存储器断电后,数据可以依然保持。

    在这里插入图片描述

    2、单片机的存储器

    如下图所示是STM32F103RB系列单片机所使用的存储器大小,Flash为128KB,RAM为20KB,这里的RAM是指SRAM。

    在这里插入图片描述
    这两个存储器的寄存器输入输出端口被组织在同一个4GB的虚拟线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。Flash用来存储编译好的程序文件,SRAM用来存储运行程序时所创建的临时数据。所以如果不加入外置存储器,那么程序里的东西就会出现在这两个存储器中。

    下图为STM32F103RB单片机的内存映射图(部分),可以看到画红圈的两个就是SRAM和Flash存储器。不知道大家有没有注意,当使用J-Flash软件给stm32下载bin文件的时候需要填写起始地址,那个0x08000000其实就是Flash存储器的起始地址。

    在这里插入图片描述

    3、关于编译器生成的文件

    如果你玩过单片机,那你应该对Keil这款软件不会感到陌生,下图是我的那款OLED时钟的软件用Keil编译后的编译信息。

    在这里插入图片描述
    很多人并不一定知道Program Size的含义,我来给大家解释一下。

    Code:是程序中代码所占字节大小;

    RO-data:程序只读的变量,也就是带const的,和已初始化的字符串等;

    RW-data:已初始化的可读写全局/静态变量;

    ZI-data:未初始化的可读写全局/静态变量;

    那么这个程序占用的Flash存储器的空间大小是多少呢?程序所占Flash空间大小=Code+RO data+RW data=生成的bin文件大小。

    那么这个程序占用的SRAM存储器的空间大小是多少呢?程序固定占用RAM大小=RW data+ZI data。

    这些信息除了在编译器下方的信息栏里面看到,也可以在项目文件里的.map文件的最下面找到,如下图:

    在这里插入图片描述

    4、数据在存储器上的存储结构

    程序在Flash上的存储结构如下图所示,通过阅读hex文件和MDK下调试综合提炼出来的。其中,ZI-data对应未初始化数据段,RW-data对应已初始化数据段,Code对应代码段。
    在这里插入图片描述

    数据在SRAM上的结构,如下图所示。这部分大家可以参考上面的内存映射图来理解。

    STM32的SRAM存储结构

    5、总结

    至此我相信大家应该对stm32单片机的内部存储有了更进一步的认识。其实如果想更深入的了解单片机的运行轨迹,我建议大家来详细研究一下stm32单片机的上电内存读取过程,如果搞明白了这块收获会是非常大的。

    展开全文
  • 一、MSP430单片机FLASH存储器模块特点 1.8~3.6V工作电压,2.7~3.6V编程电压;擦除/编程次数可达100000次:数据保持时间从10年到100年不等:60KB空间编程时间<5秒:保密熔丝烧断后不可恢复,不能再对JTAG进行...

    一、MSP430单片机FLASH存储器模块特点

    1.8~3.6V工作电压,2.7~3.6V编程电压;
    擦除/编程次数可达100000次:
    数据保持时间从10年到100年不等:
    60KB空间编程时间<5秒:
    保密熔丝烧断后不可恢复,不能再对JTAG进行任何访问;
    FLASH编程/擦除时间由内部硬件控制,无任何软件干预;

    二、FLASH存储器的操作

    由于FLASH存储器由很多相对独立的段组成,因此可在一个段中运行程序,而对另一个段进行擦除或写入操作。正在执行编程或擦除等操作的FLASH段是不能被访问的,因为这时该段是与片内地址总线暂时断开的。

    对FLASH模块的操作可分为3类:擦除、写入及读出。而擦除又可分为单段擦除和整个模块擦除;写入可分为字写入、字节写入、字连续写入和字节连续写入

    1.FLASH擦除操作:对FLASH要写入数据,必须先擦除相应的段,对FLASH存储器的擦除必须是整段地进行,可以一段一段地擦除,也可以多端一起擦除,但不能一个字节或一个字地擦除。擦除之后各位为1。擦除操作的顺序如下:

    选择适当的时钟源和分频因子,为时序发生器提供正确时钟输入
    如果Lock=1,则将它复位
    ****BUSY标志位,只有当BUSY=0时才可以执行下一步,否则一直****BUSY
    如果擦除一段,则设置ERASE=1
    如果擦除多段,则设置MERAS=1
    如果擦除整个FLASH,则设置RASE=1,同时MERAS=1
    对擦除的地址范围内的任意位置作一次空写入,用以启动擦除操作。
    在擦除周期选择的时钟源始终有效
    在擦除周期不修改分频因子
    在BUSY=1期间不再访问所操作的段
    电源电压应符合芯片的相应要求

    对FLASH擦除要做4件事

    对FLASH控制寄存器写入适当的控制位
    ****BUSY位
    空写一次
    等待

    2.FLASH编程操作。对FLASH编程按如下顺序进行:

    选择适当的时钟源和分频因子
    如果Lock=1,则将它复位
    ****BUSY标志位,只有当BUSY=0时才可以执行下一步,否则一直****BUSY
    如果写入单字或单字节,则将设置WRT=1
    如果是块写或多字、多字节顺序写入,则将设置WRT=1,BLKWRT=1
    将数据写入选定地址时启动时序发生器,在时序发生器的控制下完成整个过程

    块写入可用于在FLASH段中的一个连续的存储区域写入一系列数据。一个块为64字节长度。块开始在0XX00H、0XX40H、0XX80H、0XXC0H等地址,块结束在0XX3FH、0XX7FH、0XXBFH、0XXFFH等地址。块操作在64字节分界处需要特殊的软件支持,操作如下:

    等待WAIT位,直到WAIT=1,表明最后一个字或字节写操作结束
    将控制位BLKWRT复位
    保持BUSY位为1,直到编程电压撤离FLASH模块
    在新块被编程前,等待trcv(编程电压恢复时间)时间

    在写周期中,必须保证满足以下条件:

    被选择的时钟源在写过程中保持有效
    分频因子不变
    在BUSY=1期间,不访问FLASH存储器模块

    对FLASH写入要做4件事

    对FLASH控制寄存器写入适当的控制位
    ****BUSY位
    写一个数据
    继续写一直到写完

    3.FLASH错误操作的处理:在写入FLASH控制寄存器控制参数时,可引发以下错误:

    如果写入高字节口令码错误,则引发PUC信号。小心操作可避免
    在对FLASH操作期间读FLASH内容,会引发ACCVFIG状态位的设置。小心操作可避免
    在对FLASH操作期间看门狗定时器溢出。建议用户程序在进行FLASH操作之前先停止看门狗定时器,等操作结束后再打开看门狗
    所有的FLASH类型的MSP430器件0段都包含有中断向量等重要的程序代码,如果对其进行擦除操作,将会引起严重的后果
    不要在FLASH操作期间允许中断的发生

    4.FLASH操作小结

    对FLASH的操作是通过对3个控制字中的相应位来完成的,只有控制位的唯一组合才能实现相应的功能。下表给出了正确的控制位组合:

    功能

    BLKWRT WRT Meras Erase BUSY WAIT

    Lock

    字或字节写入 0 1 0 0 0 0 0
    块写入 1 1 0 0 0 1 0
    段擦除并写入 0 0 0 1 0 0 0
    擦除A和B以外段 0 0 1 0 0 0 0
    全部擦除并写入 0 0 1 1 0   0

    三、FLASH寄存器说明

    允许编程、擦除等操作首先要对3个控制寄存器(FCTL1、FCTL2、FCTL3)的各位进行定义。它们使用安全键值(口令码)来防止错误的编程和擦除周期,口令出错将产生非屏蔽中断请求。安全键值位于每个控制字的高字节,读时为96H,写时为5AH。

    1.FCTL1 控制寄存器1(用于控制所有写/编程或者删除操作的有效位),各位定义如下:

    15~8 7

    6

    5

    4

    3

    2

    1

    0

    安全键值,读时为96H,写时为5AH BLKWRT WRT 保留 MERAS ERASE  

    BLKWRT——段编程位。如果有较多的连续数据要编程到某一段或某几段,则可选择这种方式,这样可缩短编程时间。在一段程序完毕,再编程其它段,需对该位先复位再置位,在下一条写指令执行前WAIT位应为1。

    0:未选用段编程方式
    1:选用段编程方式

    WRT——编程位

    0:不编程,如对FLASH写操作,发生非法访问,使ACCVIFG位置位;
    1:编程

    MERAS——主存控制擦除位

    0:不擦除
    1:主存全擦除,对主存空写时启动擦除操作,完成后MERAS自动复位

    ERASE——擦除一段控制位

    0:不擦除
    1:擦除一段。由空写指令带入段号来指定擦除哪一段,操作完成后自动复位

    2.FCTL2 控制寄存器2(对进入时序发生器的时钟进行定义),各位定义如下:

    15~8 7

    6

    5

    4

    3

    2

    1

    0

    安全键值,读时为96H,写时为5AH SSEL1 SSEL0 FN5 FN4 FN3 FN2 FN1 FN0

    SSEL1、SSEL0——选择时钟源

    0:ACLK
    1:MCLK
    2:SMCLK
    3:SMCLK

    FN5~FN0——分频系数选择位

    0:直通
    1:2分频
    2:3分频
    ......
    63:64分频

    3.FCTL3 控制寄存器3(用于控制FLASH存储器操作,保存相应的状态标志和错误条件),各位定义如下:

    15~8 7

    6

    5

    4

    3

    2

    1

    0

    安全键值,读时为96H,写时为5AH     EMEX Lock WAIT ACCVIFG KEYV BUSY

    EMEX——紧急退出位。对FLASH的操作失败时使用该位作紧急处理

    0:无作用
    1:立即停止对FLASH的操作

    Lock——锁定位,给已经编程好的FLASH存储器加锁

    0:不加锁,FLASH存储器可读、可写、可擦除
    1:加锁,加锁的FLASH存储器可读、不可写、不可擦除

    WAIT——等待指示信号,该位只读。

    0:段编程操作已经开始,编程操作进行中
    1:段编程操作有效,当前数据已经正确地写入FLASH存储器,后续编程数据被列入计划

    ACCVIFG——非法访问中断标志。当对FLASH阵列进行编程或擦除操作时不能访问FLASH,否则将使得该位置位

    0:没有对FLASH存储器的非法访问
    1:有对FLASH存储器的非法访问

    KEYV——安全键值(口令码)出错标志位

    0:对3个控制寄存器的访问,写入时高字节是0A5H
    1:对3个控制寄存器的访问,写入时高字节不是0A5H,同时引发PUC信号
    KEYV不会自动复位,须用软件复位

    BUSY——忙标志位。该位只读。每次编程或擦除之前都应该检查BUSY位。当编程或擦除启动后,时序发生器将自动设置该位为1,操作完成后BUSY位自动复位

    0:FLASH存储器不忙
    1:FLASH存储器忙

    转载于:https://www.cnblogs.com/sky1991/archive/2012/08/18/2645529.html

    展开全文
  • 单片机中常见的几种存储器及作用

    千次阅读 2018-07-04 10:24:33
    单片机存储器主要分ROM(Read Only Memory,只读存储器)和RAM(Random Access Memory,随机存储器)。(注:这里为了简洁把FLASH也纳入ROM中,其作用类似)一、ROM单片机只能从这里读取数据而不能写;在单片机中可...
  • 单片机存储器结构

    千次阅读 2018-09-08 10:27:33
     我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失...
  • 5)MSP430的Flash存储器

    千次阅读 2011-01-18 13:35:00
    FLASH存储器的主要功能部件控制寄存器:控制FLASH存储器的檫除与写入 FLASH存储器阵列:存储体 地址数据锁存器:檫除与编程时执行锁存操作 编程电压发生器:产生编程电压 时序发生器:产生檫除与编程所需所有时序...
  • 1,使用厂家提供的bootloader,使用特定软件通过串口等方式下载二进制文件到单片机的内置flash,这种方法的局限性是只能下载到厂家bootloader定义的存储器上; 2,使用调试器通过SWD/JTAG接口...
  • AVR 系列单片机内部有三种类型的被独立编址的存储器,它们分别为:Flash 程序存储器、内部SRAM 数据存储器和EEPROM 数据存储器[1]。 Flash 存储器为1K~128K 字节,支持并行编程和串行下载,下载寿命通常可达10,000 ...
  • 常见存储器概念:RAM、SRAM、SDRAM、ROM、EPROM、EEPROM、Flash存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失...
  • 摘要:介绍了AM29F010B的编程要求,结合M68HC11上电自动引导功能,针对发动机控制单元设计中编程的问题,提供了一种Flash存储器在系统编程的方案,并给出了相应环节的程序流程图和部分操作的程序示例。笔者将该方法应用于...
  • MCS-51单片机存储器组织结构

    千次阅读 2013-08-12 15:51:16
    特点:哈佛结构,程序存储器与数据存储器分开,两者各有一个相互独立的64K(0x0000 ~ 0xFFFF)的寻址空间(准确地说,内部数据存储器与外部数据存储器不是一回事)。   程序存储器: ① 用于存放程序(可执行的...
  • FLASH存储器和EEPROM存储器的区别

    千次阅读 2009-06-19 11:24:00
    FLASH存储器和EEPROM存储器的区别1、首先从IO引脚占用方面比较,EEPROM只需占用两个IO引脚,时钟(clk)和数据(data)引脚,外加电源三个引脚即可,符合I2C通讯协议。而FLASH需要占用更多IO引脚,有并行和串行的,...
  •   单片机存储器类型分析 (data,xdata,code,pdata,bit)   data-----指单片机内部自带RAM空间   xdata----指单片机外扩RAM空间   pdata----指单片机外扩RAM...
  • [转]MSP430之FLASH

    2009-12-28 10:13:00
    一、MSP430单片机FLASH存储器模块特点1.8~3.6V工作电压,2.7~3.6V编程电压;擦除/编程次数可达100000次:数据保持时间从10年到100年不等:60KB空间编程时间保密熔丝烧断后不可恢复,不能再对JTAG进行任何访问;...
  • 单片机片内存储器烧写

    千次阅读 2016-04-11 20:16:22
    单片机片内存储器烧写(ROM编程)(纯粹个人理解,收集资料总结,如有不妥还请指出)单片机应用系统由硬件和软件组成,软件的载体是硬件的程序存储器,程序存储器采用只读存储器,这种存储器在电源关闭后,仍能保存...
  • PROM,称之为可编程存储器。这就象我们的练习本,买来的时候是空白的,能写东西上去,可一旦写上去,就擦不掉了,所以它只能用写一次,要是写错了,就报销了。 EPROM,称之为紫外线擦除的可编程只读存储器。它...
  • FLASH:存储单片机运行的程序,表格数据等,可以擦出写入但是基本都是整个扇区进行的。 SRAM:存储单片机运行过程中产生的了临时数据,从新上电数据丢失;一般容量较小,几十KB到几MB大小,可做CPU缓存。 EEPROM:...
1 2 3 4 5 ... 20
收藏数 5,411
精华内容 2,164
关键字:

单片机flash存储器