littleshrimp 发表于 2015-12-11 10:13

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>

白丁 发表于 2015-12-11 10:17

可能是单次写入最大值为page,不能够在一次操作中跨page进行

白丁 发表于 2015-12-11 10:18

有些norflash是这样的

白丁 发表于 2015-12-11 10:21

从13开始写128应该是跨page了,128-byte

digitaltek 发表于 2015-12-11 10:21

楼上说的对。跨page了,但是一次操作是不能跨page的,第二次操作的128个字节其实正常写入了128-13个字节,超过128的会写到0-13的地址上,这个资料上应该有说明。

白丁 发表于 2015-12-11 10:26




白丁 发表于 2015-12-11 10:39

为什么铁电可以
MB85RC256V有中文手册

32K才循环重来

littleshrimp 发表于 2015-12-11 11:14

digitaltek 发表于 2015-12-11 10:21
楼上说的对。跨page了,但是一次操作是不能跨page的,第二次操作的128个字节其实正常写入了128-13个字节, ...

第一次正式和EEPROM打交道,把它想的太简单了。
像你说的那样,如果想实现对EEPROM的灵活读写看来还要在程序上做很多工作哦
要判断数据在哪页,长度是不是跨页等等

littleshrimp 发表于 2015-12-11 11:17

白丁 发表于 2015-12-11 10:39
为什么铁电可以
MB85RC256V有中文手册

32K才循环重来

谢谢老大,我想当然的把EEPROM想象成地址会自动后移了,这下明白了

liu_jing_yang 发表于 2016-3-25 08:16

littleshrimp 发表于 2015-12-11 11:17
谢谢老大,我想当然的把EEPROM想象成地址会自动后移了,这下明白了

hi 你好我也在搞这块可以留个QQ联系方式吗谢谢

爱学习的dajian 发表于 2016-12-1 17:59

怎么连续写入呢?总是失败

拉普拉 发表于 2018-12-19 09:06

跨页写数据,超过一页自动从该页首地址开始覆盖数据,需要有跨页判断,标记

chenbingjy 发表于 2018-12-21 09:03

正准备用AT24C1024
页: [1]
查看完整版本: AT24C512是不是EEPROM?