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

Flash2812_API_V210函数烧写内部FLASH成功,但掉电丢失

Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;

Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}

while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…

断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )

问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?

附图:

rookiecalf:

断电后是怎么连接的?

Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;

Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}

while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…

断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )

问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?

附图:

jinyi lu:

回复 rookiecalf:

断开仿真器断电,再上电memory 数据全部变成0XFFFF 

操作步骤 A/t+C断开仿真与CCS3.3的连接->板子断电->板子上电->A/t+C连接仿真与CCS3.3的连接->memory 窗口读出Flash里面的数据。然后就如图,全部是0XFFFF

Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;

Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}

while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…

断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )

问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?

附图:

jinyi lu:

回复 jinyi lu:

找到一些眉目,我把写入的Flash区换一下就可以了,之前用的0x3e8000开始的地址,写入成功,掉电丢失,现在改成0X3F0000写入成功,掉电依然保存,之后陆续测试了其他段,基本上都可以,似乎是Flash的设置问题(怀疑CMD文件分配内存要得注意一下),总之现在问题算是解决。

Flash_Erase((SECTORB|SECTORC|SECTORE),&EraseStatus);
for(i=0;i<0x400;i++)
{
Buffer[i] = 0x8000+i;
}Flash_ptr = (Uint16 *)0x003E8000;

Length = 0x400;
Status = Flash_Program(Flash_ptr,Buffer,Length,&ProgStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}
Status = Flash_Verify(Flash_ptr,Buffer,Length,&VerifyStatus);
if(Status != STATUS_SUCCESS) {
Example_Error(Status);
}

while(1);//在此处断点通过view->memory 查看0x003E8000开始的地址下数据已经修改为0x8000,0x8001…

断开仿真器断电,再上电memory 数据全部变成0XFFFF (仿真器为SEED-XDS510-PLUS )

问题:内部FLASH为什么会掉电丢失?要如何让他掉电不丢失?

附图:

user5180039:

回复 jinyi lu:

请问一下  Flash_Erase((SECTORB|SECTORC),&FlashStatus);这个函数怎么写?可以让我看一下你的例程吗

赞(0)
未经允许不得转载:TI中文支持网 » Flash2812_API_V210函数烧写内部FLASH成功,但掉电丢失
分享到: 更多 (0)