大概印象: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