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

用LaunchPad对MSP43G2553的flash写入数据,掉电后读取的数据不对

        LaunchPad + MSP43G2553,Flash(Information Memory :Segment D【0x1000 – 0x107F】)

        通过串口和编程线,发送命令给MCU,MCU程序接到指令后处理。

        先擦除Segment D,然后把数据写入地址0x1000到0x1007。

        读取地址0x1000到0x1007,通过串口返回的数据显示数据已经写入Flash。

        拔掉LaunchPad的编程线,LaunchPad电源灯灭。

        插上LaunchPad的编程线,LaunchPad电源灯亮。

        通过串口和编程线发送读取命令,串口返回数据显示读取的数据发生了变化。

        请问这个过程中间那里有问题?

—————————————————————————————————————————-

FLASH擦除

unsigned char *e_address;
e_address = (unsigned char *)0x1000;

while(FCTL3 & BUSY);

FCTL2 = FWKEY + FSSEL0 + FN4;
FCTL1 = FWKEY + ERASE;
FCTL3 = FWKEY;

*e_address = 0;

while(FCTL3 & BUSY);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;

—————————————————————————————————————————-

FLASH写入

unsigned char *w_address;
w_address = (unsigned char *)0x1000; //可以是0x1001、0x1002到0x1007

while(FCTL3 & BUSY);

FCTL2 = FWKEY + FSSEL0 + FN4;
FCTL1 = FWKEY + WRT;
FCTL3 = FWKEY;

*w_address= F_WriteValue;

while(FCTL3 & BUSY);

FCTL1 = FWKEY;
FCTL3 = FWKEY + LOCK;

Shi JianHua:

看烧程序是是不是一块搽除,再就是程序没写对

user6110578:

我现在也出现了这个问题,我往内存区域写64个字节,从0X1040开始写,但是在写的过程中观察MEMERY里面的数据就出现错误。更换一个MCU就不会出现这样的问题。我现在要找的是为什么会出现这种问题。

灰小子:

回复 user6110578:

写的过程是看不到事实数据的吧。flash写操作不能被打断。
一般写了之后,再读取,通过判断是否和写入的内容一样,来确认是否写操作成功了

赞(0)
未经允许不得转载:TI中文支持网 » 用LaunchPad对MSP43G2553的flash写入数据,掉电后读取的数据不对
分享到: 更多 (0)