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:
好的,多谢