[求助]MC9S12DG128B 的eeprom怎么用啊
- UID
- 137075
- 性别
- 男
|
[求助]MC9S12DG128B 的eeprom怎么用啊
在仿真的时候把信息写到EEPROM 中去了,然后读取相应地址的内容,返回值也是对的,但是掉电后内容就丢失了,不知道为什么。还请大家帮个忙,很急啊! |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
那你是怎么写EEPROM的呢?EEPROM的位置有没有映射? |
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
通过 ECLKDIV ESTAT EPORT 三个REG 来写的, .prm文件中没有反映EEPROM 的位置映射
关系,我的程序是参考邵贝贝老师的书写的。在仿真的时候檫除是正常的,写也是正常的,可就是一掉电,信息就丢了,RAM地址也是对的
while(!(eclkdiv&0x80)){}
while(!(estat&0x80)){}
while(!(eport&0x80)){}
...
while(!(estat&0x40)){} |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
上电复位后,EEPROM的缺省位置在0x0000~0x07FF,而RAM在0x0000~0x1FFF。所以EEPROM完全被RAM覆盖掉了,而RAM的级别是比EEPROM高的。如果你没有将EEPROM映射到别的区域,这时数据可能只是写入了RAM,所以掉电后数据就丢失了。 |
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
谢谢斑竹!!!!!
还有请问斑竹,怎么把EEPROM映射到别的区域啊,.prm文件里面没有该选项啊! |
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
我在数据手册里的关于EEPROM的使用里面也没有看到相关的设置啊,斑竹所说的EEPROM的缺省位置我在手册里面也能够找到,但是就是没有说明怎么修改映射区域啊!!!!! |
|
|
|
|
|
- UID
- 104673
- 性别
- 男
|
寄存器,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开始
|
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
|
|
|
|
|
- UID
- 137075
- 性别
- 男
|
好的strongchen 斑竹,我再看以下您说的手册,谢谢 |
|
|
|
|
|
- UID
- 144694
- 性别
- 男
|
S12MMCV4.pdf 这个文档在那里呀,我在freescale里找了半天,没有找到,很想看看,请版主帮忙了,谢谢
qutao713@163.com |
|
|
|
|
|
- UID
- 104380
- 性别
- 男
|
就在DG128数据手册的ZIP文件中,也可以直接在飞思卡尔网站上搜索。我上传一下试试:
http://bbs.eccn.com/uploadImages/S12MMCV4.zip |
|
|
|
|
|