This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430FR系列写FRAM



想把数据存储到FRAM里面,用__persisent定位之后,可以实现掉电保持,但是,重新写程序之后,这个区域是擦除的!

现在想着把数据放到INFOR段里面,修改了配置文件之后,也可以写到里面了-Z(CONST)DATA16_P,DATA20_P=1800-19FF,但是

重新烧写程序之后仍然会把里面的数据清除!

之前用F4152只要IAR里面不设置清除信息区就不会清除,现在的FR系列的同样没有设置清除信息区,可是编程之后却清除了呢???????

  • 你用的什么烧写软件?

    有的烧写软件可以设置不擦除信息区

  • 你的这个-Z(CONST)DATA16_P,DATA20_P=1800-19FF写法是从哪里找来的啊?

    看一下附件的文档,如何定义FRAM的Info flash

  • 直接用IAR的,下载用JTAG口,设置了还是不行的!原来的F4152是可以的

  • 你好,这种定位是参考的xcl文件的划分写法!

    数据既然可以写到INFOR里面,是不是就可以说明这种写法没有问题呢??

    用IAR连接JTAG,调试,Memory查看显示INFOR区已经写入了我要求写的数据,并且掉电不丢失!

    唯一不能满足要求的是重新用JTAG写程序的时候,INFOR里面之前写入的数据全部被清成了0.

  • 你好,我在进行写操作的时候,也没有像手册里面说的那样,将保护位进行清o操作(DFWP = 0),也是可以将数据写到FRAM里面去,请问这个是怎么回事???

    主要代码如下:

    __persistent unsigned long FRAM_write[128] = {0}; 

    int main(void)
    {
    int i = 0;
    WDTCTL = WDTPW | WDTHOLD; // Stop WDT

    // Configure GPIO
    P9OUT |= BIT4; // led off
    P9DIR |= BIT4; // Set P1.0 to output direction

    // Disable the GPIO power-on default high-impedance mode to activate
    // previously configured port settings
    PM5CTL0 &= ~LOCKLPM5;

    if (FRAM_write[0] == 0x12345678)
    {
    P9OUT &= ~BIT4;//led on
    }
    else
    {
    P9OUT |= BIT4;//led off
    }
    while(1)
    {
    for (i=0; i<128; i++)
    {
    FRAM_write[i] = 0x12345678;
    }
    while (1);
    }
    }

    操作环境是IAR+FR6989,实际验证掉电不丢失,但是重新用IAR写程序,对应的区域会清0,而且我这里面并没有对写保护位进行清0也是可以正常写入,请问怎么回事???

    难道用__persisent定义之后,IAR会自动进行???