AT24C512是不是EEPROM?
<div class='showpostmsg'>可能是我把事情想的太简单,被AT24C512这颗料折磨快两天在没仔细看数据手册的情况下,按照自己(不)正常的理解写了驱动,单字节读写入正常后来问题出在连续写入,发现读出来的数据总是不对,最后看到超过128字节后的数据是乱的
查数据手册才知道AT24C512的页写入最大只支持128字节,允许写入的次数是100000次,就像单片机的FLASH一样和AT24C02一点不像
再后来把驱动改成大于128字节时就分批写入,以为能解决问题
怕淘宝上买的便宜货容量不足,试着将所有的地址都写入一个0xaa或0x55后再读取出来判断是否正确,发现没有问题
然后按照正常的流程把将第一个字节写入0xaa,每次上电时判断不是0xaa就认为是新片子,进行初始化
后边对地址13写入128个字节的数据,下次上电时第一个字节的0xaa就成了0x00,加延时,改I2C频率,都没能解决
又做过一些读写测试,时好时坏。
怀疑可能是自己写的驱动有问题,昨晚回家把上次富士通活动时的MB85RC256V铁电存储器翻出来验证一下,通了
测试了很多次都正常,这是什么情况呢?
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> 可能是单次写入最大值为page,不能够在一次操作中跨page进行 有些norflash是这样的 从13开始写128应该是跨page了,128-byte
楼上说的对。跨page了,但是一次操作是不能跨page的,第二次操作的128个字节其实正常写入了128-13个字节,超过128的会写到0-13的地址上,这个资料上应该有说明。
为什么铁电可以
MB85RC256V有中文手册
32K才循环重来
digitaltek 发表于 2015-12-11 10:21
楼上说的对。跨page了,但是一次操作是不能跨page的,第二次操作的128个字节其实正常写入了128-13个字节, ...
第一次正式和EEPROM打交道,把它想的太简单了。
像你说的那样,如果想实现对EEPROM的灵活读写看来还要在程序上做很多工作哦
要判断数据在哪页,长度是不是跨页等等 白丁 发表于 2015-12-11 10:39
为什么铁电可以
MB85RC256V有中文手册
32K才循环重来
谢谢老大,我想当然的把EEPROM想象成地址会自动后移了,这下明白了 littleshrimp 发表于 2015-12-11 11:17
谢谢老大,我想当然的把EEPROM想象成地址会自动后移了,这下明白了
hi 你好我也在搞这块可以留个QQ联系方式吗谢谢 怎么连续写入呢?总是失败 跨页写数据,超过一页自动从该页首地址开始覆盖数据,需要有跨页判断,标记 正准备用AT24C1024
页:
[1]