TI中文支持网
TI专业的中文技术问题搜集分享网站

MSP430FR6972: FRAM读写丢失

Part Number:MSP430FR6972

我用官方的例程读写FRAM后,仿真器重新加载后内容全变为0,芯片不掉电仿真器重新加载后被写区域也变0

Green Deng:

你好,请问你是完全参考例程的吗?有对例程做过哪些修改?

,

HaiBin li:

#define WRITE_SIZE 128

#pragma PERSISTENT(FRAM_write)unsigned char FRAM_write[WRITE_SIZE] = {0};

void FRAMWrite(unsigned char *buff,unsigned char len){ unsigned int i=0;

for ( i= 0; i < len; i++) { FRAM_write[i] = buff[i]; }

}

void FRAMRead(unsigned char *buff,unsigned char len){ unsigned int i=0;

for ( i= 0; i < len; i++) { buff[i]= FRAM_write[i] ; }

}

,

HaiBin li:

用仿真器保存不了,但是不用仿真器直接烧写到单片机掉电会保存,是不是仿真器需要再那设置

,

Green Deng:

说实话,一般都是在flash模式下使用flashAPI工程,没测试过ram模式下,所以我也不确定ram下使用例程是否有效。

,

HaiBin li:

啥意思,用仿真器是在ram模式吗?不能设置吗

,

HaiBin li:

应该是仿真器加载程序的时候把内部存储全部擦掉了,能不能设置一下

,

Green Deng:

是的,仿真器是ram模式。而且ram运行的话重新上下电或者复位芯片都会把ram全部擦除,因为ram本身就是掉电丢失内容,这个没办法设置。

,

HaiBin li:

对,ram肯定会擦除掉,我保存数据是保存在fram,ram肯定不行啊,仿真器不能设置fram某些区域不擦除?而且ti给的例程没有指定写fram的的地址,怎么才能读写指定地址的fram,或者用ti的例程可以把仿真器设置为不擦除那块fram

,

Green Deng:

重新加载代码时会重新初始化 PERSISTENT 数据。 (复位时不会重新初始化。)为避免这种情况,可以使用 NOINIT [参考CC User Guide (SLAU132U) Sec 5.12.22]。 使用 NOINIT 需要注意:

1) 需要修改CCS download设置“Project->Properties->Debug->MSP430 Flash Settings”更改为“Replacewritten”或“..necessary segment”。(或者使用Information Memory。)

2) 代码必须指定何时初始化该区域,因为它的内容是不确定的。

,

HaiBin li:

好的,多谢

赞(0)
未经允许不得转载:TI中文支持网 » MSP430FR6972: FRAM读写丢失
分享到: 更多 (0)