工程文件如下:
ht2fgGni.rar (356.21 KB)
单独擦写一个EEPROM地址是没有问题的。
但是假如连续擦写两个地址,如下
EEPROM_write_operate(0xFC,EEPROM_ADDR_BASE,Dump,ee_word_erase);
EEPROM_write_operate(0xFC,EEPROM_ADDR_BASE,0x1234,ee_word_program);
EEPROM_write_operate(0xFC,(EEPROM_ADDR_BASE+1),Dump,ee_word_erase);
EEPROM_write_operate(0xFC,(EEPROM_ADDR_BASE+1),0x5678,ee_word_program);
则对应EEPROM地址的数据如下
也就是说第一个地址没有被写入数据,而第二个地址又正确的写入了。
接下来,我测试了连续擦写256个地址,如下
for(i=0;i<256;i++)
{
EEPROM_write_operate(0xFC,(EEPROM_ADDR_BASE+i),Dump,ee_word_erase);
EEPROM_write_operate(0xFC,(EEPROM_ADDR_BASE+i),i,ee_word_program);
}
得到如下的结果:
结果发现,中间每隔一个地址,就有一个数据没有写入,而且第48个地址之后的数据都没有被写入!
PS:图片如果看不清楚,可点击放大!
[此贴子已经被作者于2008-11-3 9:35:17编辑过]
是单个字!
我上传了源程序,还请版主帮我看看啊
版主说的很对,檫除是一次两个字,而你写入一次是一个字!这样就会导致你说的问题了,所以你应该檫除一次,写两次!
我只有DG128的板子,程序段如下
for(i=0;i<1024;)
{
EEPROM_write_operate(EEPROM_ADDR_BASE+i,Dump,ee_word_erase);
EEPROM_write_operate(EEPROM_ADDR_BASE+i,0xef00,ee_word_program); //在EEPROM_ADDR_BASE地址写入数据
i=i+1;
EEPROM_write_operate(EEPROM_ADDR_BASE+i,0xabcd,ee_word_program);
i=i+1;
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |