Board logo

标题: 对EEPROM连续擦写时出现问题! [打印本页]

作者: johdon23    时间: 2008-11-3 09:34     标题: 对EEPROM连续擦写时出现问题!

工程文件如下:

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地址的数据如下


AIIhsPz9.jpg

也就是说第一个地址没有被写入数据,而第二个地址又正确的写入了。


接下来,我测试了连续擦写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);

}
得到如下的结果:


PY1MD5DI.jpg

结果发现,中间每隔一个地址,就有一个数据没有写入,而且第48个地址之后的数据都没有被写入!

PS:图片如果看不清楚,可点击放大!

[此贴子已经被作者于2008-11-3 9:35:17编辑过]



附件: [对EEPROM连续擦写时出现问题!] ht2fgGni.rar (2008-11-3 09:09, 356.21 KB) / 下载次数 194
http://bbs.eccn.com/attachment.php?aid=5419&k=8120a3482dd75ec22cf1b74909871e19&t=1732313641&sid=SOO7n3

图片附件: [对EEPROM连续擦写时出现问题!] AIIhsPz9.jpg (2008-11-3 09:12, 94.42 KB) / 下载次数 266
http://bbs.eccn.com/attachment.php?aid=5420&k=cfcda6b29cddf6a617017e51550a4a0a&t=1732313641&sid=SOO7n3



图片附件: [对EEPROM连续擦写时出现问题!] PY1MD5DI.jpg (2008-11-3 09:14, 82.78 KB) / 下载次数 250
http://bbs.eccn.com/attachment.php?aid=5421&k=16f42b50126dbc01cf253c847ef12141&t=1732313641&sid=SOO7n3


作者: strongchen    时间: 2008-11-3 14:44

是否擦写操作的延时不够?
作者: johdon23    时间: 2008-11-3 16:39

应该不是吧。对EEPROM的擦/写操作,都是判断了命令完成标志ESTAT_CCIF的,不需要加延时吧?
作者: strongchen    时间: 2008-11-4 14:40

写入单位是字还是双字?
作者: johdon23    时间: 2008-11-5 08:57

是单个字!

我上传了源程序,还请版主帮我看看啊


作者: strongchen    时间: 2008-11-6 11:12

但是EEPROM的擦除单位是双字,即四个字节。
作者: applespine    时间: 2008-11-21 15:16

版主说的很对,檫除是一次两个字,而你写入一次是一个字!这样就会导致你说的问题了,所以你应该檫除一次,写两次!

我只有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