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写操作不能被打断。
一般写了之后,再读取,通过判断是否和写入的内容一样,来确认是否写操作成功了