您的位置 首页 FPGA

MSP430功能模块详解系列之——FLASH存储器

一、MSP430单片机FLASH存储器模块特点1.8~3.6V工作电压,2.7~3.6V编程电压;擦除/编程次数可达100000次:数据保持时间从10年到100年不等…

一、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存储器忙

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/273220.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部