浪里白条 发表于 2014-5-15 10:40:52

为什么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)));
}

-------------------------------------------------------------------------------------------

wangpengcheng 发表于 2014-5-15 11:57:02

好像KE02的EEPROM也是用Flash模拟的,所以我知道,每次你下载程序的时候,下载器会执行擦除Flash块,所以你的EEPROM数据全部被擦掉了!至于读写那块,我没试过!希望对你有帮助!

浪里白条 发表于 2014-5-15 14:08:09

版主,求解答、。

FSL_TICS_ZJJ 发表于 2014-5-15 17:04:47

wangpengcheng 发表于 2014-5-15 11:57
好像KE02的EEPROM也是用Flash模拟的,所以我知道,每次你下载程序的时候,下载器会执行擦除Flash块,所以你 ...

KE02是有内置的EEPROM的。

FSL_TICS_ZJJ 发表于 2014-5-15 17:09:17

我记得,KE02的EEPROM如果是有数据的,在写之前需要先擦掉才可以写的。
所以楼主你后面写的地址里面之前有没有数据呢?

wangpengcheng 发表于 2014-5-15 17:34:28

FSL_TICS_ZJJ 发表于 2014-5-15 17:04
KE02是有内置的EEPROM的。

是真EEPROM吗?不是那种Flex的?

FSL_TICS_ZJJ 发表于 2014-5-15 17:38:32

wangpengcheng 发表于 2014-5-15 17:34
是真EEPROM吗?不是那种Flex的?

嗯啊,是个独立的地址,和flash是分开的,不需要你像K系列那样,还要自己去分区然后再搞。

FSL_TICS_ZJJ 发表于 2014-5-15 17:39:22

楼主你好,经过确认,每次你debug的时候,芯片都会被mass erase,所以呢,所有的flash,包括eeprom都被擦掉了,KE就这个特点。

浪里白条 发表于 2014-5-15 19:20:13

FSL_TICS_ZJJ 发表于 2014-5-15 17:39
楼主你好,经过确认,每次你debug的时候,芯片都会被mass erase,所以呢,所有的flash,包括eeprom都被擦掉 ...

谢谢你的回复,读写问题已经解决。

wangpengcheng 发表于 2014-5-16 08:48:03

浪里白条 发表于 2014-5-15 19:20
谢谢你的回复,读写问题已经解决。

能否把解决方法分享一下?

wangpengcheng 发表于 2014-5-16 08:48:52

FSL_TICS_ZJJ 发表于 2014-5-15 17:38
嗯啊,是个独立的地址,和flash是分开的,不需要你像K系列那样,还要自己去分区然后再搞。
...

我知道不用配,呵呵,我是想说是否会有占用Flash空间?

FSL_TICS_ZJJ 发表于 2014-5-16 09:16:47

wangpengcheng 发表于 2014-5-16 08:48
我知道不用配,呵呵,我是想说是否会有占用Flash空间?


你看,eeprom的地址完全独立于flash,所以,eeprom不占用flash空间哦。

FSL_TICS_ZJJ 发表于 2014-5-16 09:19:25

浪里白条 发表于 2014-5-15 19:20
谢谢你的回复,读写问题已经解决。

你是说先读再写不行吗?
我这边试了都是可以的恩。

tospo_mwb 发表于 2014-5-22 22:17:28

读EEPROM不用这么,就像读内部RAM一样的,定义一个数组,指向就可以了,内部EEPROM非常不错

FSL_TICS_ZJJ 发表于 2014-6-13 15:30:43

楼主不好意思,以前回复有点出入。
其实是可以烧写的时候不擦掉EEPROM的,如果你不选择mass erase的话,而是选择sector erase,那么eeprom的数据还会照样存在,配置如下图:
这个是keil下的JLINK烧写界面:


现在补充下这个回答。

浪里白条 发表于 2014-6-13 15:35:12

FSL_TICS_ZJJ 发表于 2014-6-13 15:30
楼主不好意思,以前回复有点出入。
其实是可以烧写的时候不擦掉EEPROM的,如果你不选择mass erase的话,而 ...

感谢版主对问题的补充,这么久了都还记得这个问题,必须要赞一个。

FSL_TICS_ZJJ 发表于 2014-6-13 15:42:07

浪里白条 发表于 2014-6-13 15:35
感谢版主对问题的补充,这么久了都还记得这个问题,必须要赞一个。

呵呵,不客气。
我们在回答问题的时候还会留意之前的问题,如果发现有更好的办法,会分享出来给你们的。
这样其实也方便了后面遇到同样问题的网友。
页: [1]
查看完整版本: 为什么KE02的EEPROM进行读操作之后不能写?(已解决)