首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于EEPROM的擦写

关于EEPROM的擦写

 

MC9S12A512的芯片
EEPROM进行擦除跟写入当重新上电时数据丢失了,我把EEPROM映射到0xa000地址上了。
在调试的时候,在memory窗口下0xa000上的值都是FF,我写入数据后这些FF没变成我写的那写数据的值,可是读出来的时候却是我写进去的那些值。但是最重要的还是上电数据丢失了。请斑竹帮忙下!程序如下:

[此贴子已经被作者于2007-3-22 13:14:54编辑过]

迷途的羔羊!
http://bbs.eccn.com/uploadImages/eeprom.rar
迷途的羔羊!
0xA000处于分页地址区。当对此地址进行操作时,必须注意其分页,即PPAGE寄存器的值。
海纳百川  有容乃大
如果我不是映射到0xa000,如果映射到固定页也是一样的情况。
我试过在不映射的情况下,因为EEPROM的地址跟寄存器地址还有RAM地址重叠了,但还留出从0x400到0x800的地址没有重叠,我在0x400的地址上也试过,出现的情况跟上面所说的一样。
迷途的羔羊!
把映射到固定页的project也贴出来看看。
海纳百川  有容乃大
http://bbs.eccn.com/uploadImages/eeprom1.rar
迷途的羔羊!
问题其实很简单。实际上你的程序对EEPROM的操作都是对的,只是你没有告诉编译器你的EEPROM在哪里,所以调试时无法正确显示。你只要在PRM文件中加上这么一句即可:

/* unbanked FLASH ROM */
ROM_4000 = READ_ONLY 0x4000 TO 0x6FFF;
EEPRO_RM = READ_ONLY 0x7000 TO 0x7FFF;
ROM_C000 = READ_ONLY 0xC000 TO 0xFEFF;

另外你说的上电后数据丢失,应该是由于再次调试连接时会将芯片全部擦除。你也可以选择不擦除EEPROM
海纳百川  有容乃大
在哪里可以选择不擦除EEPROM的选项?
关于freescale的内部EEPROM的地址,要用到全部的4K空间就必须要跟其他的存储空间重叠,而且EEPROM只支持字写入,不知道我理解的对不对?
迷途的羔羊!
在调试界面的File->Configuration里,选择Load,选中“Automatically erase and program into FLASH and EEPROM”(打勾),然后按它下方的“Advanced...”按钮,就可以选择在编程时不擦除哪个部分了。

关于第二个问题,你的理解是对的。但EEPROM的映射地址是可以改变的。如果你愿意,完全可以用到全部的EEPROM空间。
海纳百川  有容乃大
请问版主,“在调试界面的File->Configuration里,选择Load,选中“Automatically erase and program into FLASH and EEPROM”(打勾),然后按它下方的“Advanced...”按钮,就可以选择在编程时不擦除哪个部分了。”是哪个版本中的呢?
我在cw4.1中没有看到呢?
CW4.5和CW4.6。
海纳百川  有容乃大
返回列表