430flash的操作

大概印象:430的flash好像有点像arm的flash,只不过是arm的flash要比430的大很多,而且430的flash不同于E2PROOM,这一点需要值得注意

 

MSP430flash的基本特点:

1,拥有内置的编程电压发生器

2:可以进行位,字节,还有字的寻址

3:可以进行段擦除,和整体的擦除

注意:对flash进行操作的时候,flash的操作编程电压必须要大于2.7V,如果小于2.7v的话,将会出现不可预知的错误

 

还是先来看看430的整体的基本框图:这张框图集合了430flash的所有的操作

 

标号1,定时器发生器:注意这里的定时器的编程频率必须处于257KHz到476KHz之间,

标号2:编程电压发生器,这里必须产生一个大于2.7v的电压

标号3:三个可以操作的寄存器

标号4:这里就是flash区域,430的flash大小为4KB+256byte

其中4KB是主记忆区,256byte是信息记忆区

这里需要注意的是flash的擦除是以段为最小单位进行擦除,在主存储区4KB中,flash是以512个字节为一段,在信息存储区,256byte是以128个字节为一个段

 

430flash支持比特,字节还有块数据的写入,同时也支持三种擦除方式:1擦除一个段,2,擦除所有的主存储区,3擦除所有flash区域

 

 擦除

方式1:代码是从flash中取出

注意擦除flash的流程图,这里也是看懂这一个流程图就可以了

标号1:步骤一,要关闭所有的中断和看门狗,MSP430的低功耗模式设计,在擦除的时候,cpu被强制的挂起,这时,外部的所有中断不能响应,看门狗如果没有关闭,在擦除过程中会导致程序复位而产生不可预知的结果

标号2:设置flash的控制位和擦除模式

标号3:伪写入一个数据

标号4:重新唤醒cpu

 

方式2:代码是从RAM中取出的话,cpu可以让他不休眠,这样可以继续执行下面的代码

这是原先把flash中的程序拷贝到RAM中,之后在将pc程序指针指向RAM中的地址,那样就可以擦除flash了,这里也只是需要看懂擦鞋的流程图就可以了

 

当代码是从RAM中读出的时候,这是cpu就可以不必被强制挂起,这时候需要注意的是,还是要关闭程序的所有中断,并且要判断BUSY这个标志位,因为BUSY==1,表示flash正在进行读写操作,所以,要等BUSY==0的时候才能进行读写操作

这里看一下流程图就可以知道了

1:关闭所有的中断和看门狗

2:之后判断flash的操作状态,当flash没有进行操作的时候,进行如下的操作

3:设置flash的操作,和擦除的模式

4:伪写入

5:之后判断flash的操作状态,当flash没有进行操作的时候,重新开启中断还有看门狗

 

 

之后就是对flash的写操作

写操作可以有两种操作方式:1:字节和比特的写入,2:块写入

写操作与擦除的流程图是相似的,也分为从flash中读出指令,和从RAM中取出指令

这个时候的操作和擦除过程神似

 

还有就是块写入,就是在进行块写入的时候,写入的时间是不能超过累计编程时间的,累计编程时间是4毫秒,这是因为在对flash进行操作的时候,要对flash加一个比较高的电压,如果持续的时间过长,高电压会对flash有损坏,在进行块写入的时候代码必须是从RAM中取出

这是块写入的操作流程

 

版权所有,转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3376290.html

 

 

 

 

posted @ 2013-10-18 17:10  跨七海的风  阅读(867)  评论(0编辑  收藏  举报