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

mc9s12dg128 eeprom问题

mc9s12dg128 eeprom问题

mc9s12dg128 eeprom默认地址是多少?如果没有进行地址重订位的话,如何对eeprom编程?


我按照<单片机嵌入式应用的在线开发方法>160叶进行调试,16m晶振,并没有看到eeprom被擦除阿。请赐教

谁有更多的9s12系列单片机资料阿,共享把,给我一份,
我的信箱wjj_emcu@163.com谢谢
EEPROm的擦除还设计到几个寄存器的配置,那几个寄存器不是在EEPROM那章,而在内存地址分配那章
我有这样的例子
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
麻烦你给我传一份好么,我的信箱wjjxy1998@163.com
谁有更多的9s12系列单片机资料阿,共享把,给我一份,
我的信箱wjj_emcu@163.com谢谢
初始化:
void EepromInit(void){
INITEE=17;
asm nop;
MISC=1;
}
擦写:
unsigned char EepromErase(unsigned int *pAddress, unsigned char size)
{
if(ECLKDIV_EDIVLD == 1)
{if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0))
{ while(size)
{ if(ESTAT_CBEIF == 1)
{ *pAddress = 0xFFFF;
pAddress += 2;
ECMD =ERASECMD;
ESTAT_CBEIF = 1;
if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1))
return ERROR;
while (ESTAT_CCIF == 0);
size--; }
}
return NOERROR;
}
else return ERROR;

}
else return ERROR;

}
unsigned char EepromProgram(unsigned int *pAddress, unsigned int *pData, unsigned char size)
{ if(ECLKDIV_EDIVLD == 1)
{ if((ESTAT_ACCERR == 0) && (ESTAT_PVIOL == 0))
{ while(size)
{ if(ESTAT_CBEIF == 1)
{ *pAddress++ = *pData++;
ECMD = PROGCMD;
ESTAT_CBEIF = 1;
if((ESTAT_ACCERR == 1) || (ESTAT_PVIOL == 1))
return ERROR;
while (ESTAT_CCIF == 0);
size--; }
}
return NOERROR;
}
else return ERROR;
}
else return ERROR;

}
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
万分感谢阿
谁有更多的9s12系列单片机资料阿,共享把,给我一份,
我的信箱wjj_emcu@163.com谢谢
nishui_2000 你好,我按照你给出的代码,进行mc9s12dp256的操作,数据掉电就丢失了 ,
我看到cw建立的PRM中“RAM = READ_WRITE 0x1000 TO 0x3FFF;”,并没有EEPROM的定义呀。还有EEPROM的具体地址由INITEE寄存器控制。请参见《S12MMCV4.pdf》文件中关于INITEE的介绍。可是我没有看明白INITEE的E11--E15,These bits determine the upper five bits of the base address for the system¡¯s internal EEPROM array
的含义。麻烦你给解释一下,谢谢了
nishui_2000兄 你好
我也遇到上面几位兄弟与到的问题!!
能给我们详细解释一下吗?我已经困惑一个多星期了!!如果那位兄弟已经解决了这个问题,希望能尽快帮忙!!
谢谢了!!
HFFFDFF
高手周末都不上论坛的啊!!
很急哦!!
再次感谢!!
HFFFDFF
高手周末都不上论坛的啊!!
很急哦!!
再次感谢!!
HFFFDFF
这段时间忙着买车,所以没空上论坛,不好意思,让大家等久了啊
上面的例子肯定好用的,我是用在9S12D64上,但是我想DG128肯定页通用的,直接拷贝过去就可以用
只是有一点忘了粘贴
/*下面为读写EEPROM的配置和操作函数*/
#define MASS_ERASE 0x41
#define ERASECMD 0x40
#define PROGCMD 0x20
#define Address_Start 0x1000 //定义读取或写EEPROM的地址
#define SizeMsg 24 //has been changed
#define ERROR 0xFF
#define NOERROR 0x0

unsigned int write_data[10]; //把这些数据写到EEPROM里面
unsigned int read_data[10]; //从EEPROM中读取的数据放到这个数组里面
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
其中,EEPROM的地址定义根据INITEE这个寄存器来定,这个寄存器设定的值不同,实际EEPROM的起始地址页不一样。这个例子我试验过的,很好用
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
能告诉我这段程序对应的EEPROM地址吗?
HFFFDFF
INITEE上说的高5位对应的0~31分别把EEPROM映射到存储器那些地方啊?
我换了这些值,但是就是找不到相应的EEPROM地址!!
HFFFDFF
不好意思,我用的单片机是9S12D64的,但是我想DG128的应该页一样用,
对D64来说,INTEE=17时,EEPROM的首地址是0x1000,然后这个地址后面的1K都应该是EEPROM空间
改改INTEE值(具体多少我忘了,我试过),可以把EEPROM的地址改为0x2000,然后那个例子也好用的
对DG128来说,它的EEPROM可能大些,所以其地址范围和D64会有少许差别,但我想用法应该是一样的
水泡泡
 我的QQ是:52449804 
 我的网站是: www.dyic.com.cn
 欢迎访问和留言跟我联系
我用的是A64!!现在是想找出设置相应值的规律!!我看了和你的怠应该一样!!
由于刚接触FC的单片机,所以可能很多问题很幼稚,希望谅解!!
谢谢了!!
HFFFDFF
返回列表