• 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

  • 相关阅读:
    C++使用静态类成员时出现的一个问题
    C++中的const_cast
    【位运算与嵌入式编程】
    电压取反电路
    bzoj4769
    初赛
    noip2011day2
    uva1252
    codeforces 703d
    poj[1734]
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3376290.html
Copyright © 2020-2023  润新知