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

[求助]MC9S12DG128B 的eeprom怎么用啊

[求助]MC9S12DG128B 的eeprom怎么用啊

在仿真的时候把信息写到EEPROM 中去了,然后读取相应地址的内容,返回值也是对的,但是掉电后内容就丢失了,不知道为什么。还请大家帮个忙,很急啊!

HELP!
软件仿真还是硬件仿真?
海纳百川  有容乃大
是硬件仿真。
HELP!
还请斑竹大人多多指教。
HELP!
那你是怎么写EEPROM的呢?EEPROM的位置有没有映射?
海纳百川  有容乃大
通过 ECLKDIV ESTAT EPORT 三个REG 来写的, .prm文件中没有反映EEPROM 的位置映射
关系,我的程序是参考邵贝贝老师的书写的。在仿真的时候檫除是正常的,写也是正常的,可就是一掉电,信息就丢了,RAM地址也是对的
while(!(eclkdiv&0x80)){}
while(!(estat&0x80)){}
while(!(eport&0x80)){}
...
while(!(estat&0x40)){}
HELP!
上电复位后,EEPROM的缺省位置在0x0000~0x07FF,而RAM在0x0000~0x1FFF。所以EEPROM完全被RAM覆盖掉了,而RAM的级别是比EEPROM高的。如果你没有将EEPROM映射到别的区域,这时数据可能只是写入了RAM,所以掉电后数据就丢失了。
海纳百川  有容乃大
谢谢斑竹!!!!!
还有请问斑竹,怎么把EEPROM映射到别的区域啊,.prm文件里面没有该选项啊!
HELP!
我在数据手册里的关于EEPROM的使用里面也没有看到相关的设置啊,斑竹所说的EEPROM的缺省位置我在手册里面也能够找到,但是就是没有说明怎么修改映射区域啊!!!!!
HELP!
寄存器,RAM,EEPROM可以通过设置INITRG,INITRM,INITEE来重新分配他们的位置。
这些寄存器只能写一次,建议在初始化分配寄存器,RAM,EEPROM的位置。对每个INITxx赋值后,在其指令后需插入一空指令。
如果映射有冲突,寄存器具有最高优先级,与其重叠的RAM和EEPROM此时无效。
复位后,寄存器从0x0000开始,但可以被映射到64K空间内的前32K的范围内,而且映射的地址必须是2K的整数倍。
复位后RAM区从0x1000开始,但可以被映射到64K字节空间内的任何16K字节块内。
比如从$0000-$3FFF,$4000-$7FFF.
RAM15-14用来决定RAM区映射到哪个16K的字节块中。RAM13-11不起作用
RAMHAL用来决定12KRAM是放在16K的后12K区域还是前12K区域
比如INITRM=9,则RAM从$9000到$BFFF共12K
DP256有4K的EEPROM,通过INITEE的EEON位来使能
复位后,EEPROM区域从$0000开始,但可被映射任意64K空间中的4K字节块内。
EE15-12决定16位EEPROM区域地址的前4位
比如:INITEE=0x11,则地址是从$1000开始

在这个文档里:S12MMCV4.pdf。
海纳百川  有容乃大
谢谢 yunfeng 大哥的指点。
HELP!
好的strongchen 斑竹,我再看以下您说的手册,谢谢
HELP!
S12MMCV4.pdf 这个文档在那里呀,我在freescale里找了半天,没有找到,很想看看,请版主帮忙了,谢谢

qutao713@163.com
就在DG128数据手册的ZIP文件中,也可以直接在飞思卡尔网站上搜索。我上传一下试试:

http://bbs.eccn.com/uploadImages/S12MMCV4.zip
海纳百川  有容乃大
返回列表