为什么KE02的EEPROM进行读操作之后不能写?(已解决)
本帖最后由 浪里白条 于 2014-5-15 19:21 编辑WriteEEPROM();
ReadEEPROM();
这样可以往EEPROM里写入数据,但是这样,EEPROM死活写不进去数据
ReadEEPROM();
WriteEEPROM();
还有,为什么我每次DEBUG的时候编译器都会把eeprom里的数据擦掉,我该在哪里进行设置?
--------------------------------------------------------------------------------------------------------------------------------
void WriteEEPROM()
{
Error = FLASH1_Write(EEPROM_TDeviceData,&CMGS,0x10000000,11);
while (!DataWrittenFlg)
{
FLASH1_Main(EEPROM_TDeviceData);
}
DataWrittenFlg = FALSE;
if (FLASH1_GetOperationStatus(EEPROM_TDeviceData) == LDD_FLASH_FAILED)
;
else
;
}
void ReadEEPROM()
{
Error = FLASH1_Read(EEPROM_TDeviceData,0x10000000,&CMGS,11); /* Start reading from the flash memory */
do {
FLASH1_Main(EEPROM_TDeviceData);
OpStatus = FLASH1_GetOperationStatus(EEPROM_TDeviceData);
} while (!((OpStatus == LDD_FLASH_IDLE) | (OpStatus == LDD_FLASH_FAILED)));
}
------------------------------------------------------------------------------------------- 好像KE02的EEPROM也是用Flash模拟的,所以我知道,每次你下载程序的时候,下载器会执行擦除Flash块,所以你的EEPROM数据全部被擦掉了!至于读写那块,我没试过!希望对你有帮助! 版主,求解答、。 wangpengcheng 发表于 2014-5-15 11:57
好像KE02的EEPROM也是用Flash模拟的,所以我知道,每次你下载程序的时候,下载器会执行擦除Flash块,所以你 ...
KE02是有内置的EEPROM的。 我记得,KE02的EEPROM如果是有数据的,在写之前需要先擦掉才可以写的。
所以楼主你后面写的地址里面之前有没有数据呢?
FSL_TICS_ZJJ 发表于 2014-5-15 17:04
KE02是有内置的EEPROM的。
是真EEPROM吗?不是那种Flex的? wangpengcheng 发表于 2014-5-15 17:34
是真EEPROM吗?不是那种Flex的?
嗯啊,是个独立的地址,和flash是分开的,不需要你像K系列那样,还要自己去分区然后再搞。
楼主你好,经过确认,每次你debug的时候,芯片都会被mass erase,所以呢,所有的flash,包括eeprom都被擦掉了,KE就这个特点。 FSL_TICS_ZJJ 发表于 2014-5-15 17:39
楼主你好,经过确认,每次你debug的时候,芯片都会被mass erase,所以呢,所有的flash,包括eeprom都被擦掉 ...
谢谢你的回复,读写问题已经解决。 浪里白条 发表于 2014-5-15 19:20
谢谢你的回复,读写问题已经解决。
能否把解决方法分享一下? FSL_TICS_ZJJ 发表于 2014-5-15 17:38
嗯啊,是个独立的地址,和flash是分开的,不需要你像K系列那样,还要自己去分区然后再搞。
...
我知道不用配,呵呵,我是想说是否会有占用Flash空间? wangpengcheng 发表于 2014-5-16 08:48
我知道不用配,呵呵,我是想说是否会有占用Flash空间?
你看,eeprom的地址完全独立于flash,所以,eeprom不占用flash空间哦。 浪里白条 发表于 2014-5-15 19:20
谢谢你的回复,读写问题已经解决。
你是说先读再写不行吗?
我这边试了都是可以的恩。 读EEPROM不用这么,就像读内部RAM一样的,定义一个数组,指向就可以了,内部EEPROM非常不错 楼主不好意思,以前回复有点出入。
其实是可以烧写的时候不擦掉EEPROM的,如果你不选择mass erase的话,而是选择sector erase,那么eeprom的数据还会照样存在,配置如下图:
这个是keil下的JLINK烧写界面:
现在补充下这个回答。 FSL_TICS_ZJJ 发表于 2014-6-13 15:30
楼主不好意思,以前回复有点出入。
其实是可以烧写的时候不擦掉EEPROM的,如果你不选择mass erase的话,而 ...
感谢版主对问题的补充,这么久了都还记得这个问题,必须要赞一个。 浪里白条 发表于 2014-6-13 15:35
感谢版主对问题的补充,这么久了都还记得这个问题,必须要赞一个。
呵呵,不客气。
我们在回答问题的时候还会留意之前的问题,如果发现有更好的办法,会分享出来给你们的。
这样其实也方便了后面遇到同样问题的网友。
页:
[1]