找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2091|回复: 10
打印 上一主题 下一主题
收起左侧

关于stc15w单片机eeprom读取2个地址时错乱

[复制链接]
跳转到指定楼层
楼主
ID:977804 发表于 2022-3-1 10:34 来自触屏版 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
读写一个地址时,正常使用。读取2个地址时,会错乱,不知道原因,猜测是不是因为写之前要擦除一下,把另一个的也擦了?
举例:上电a=0x0400,b=0x0401,按键让a++,擦掉0x0400,写入数据a。这时b的数据就乱了
是地址不对?
还是擦的时候没有精准到单个地址?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2022-3-1 12:08 | 只看该作者
按扇区操作(512字节),a,b....同时读出,修改a后再全部写回去。
回复

使用道具 举报

板凳
ID:139866 发表于 2022-3-1 13:10 | 只看该作者
我也遇到过这种问题,跟你现在状况很像,不过是用flash模拟eeprom,当时的是按半字写的,把一个变量x的值写到flash里,写完之后发现下一个地址的值也出问题了,而且导致程序中的某一个变量y也跟着出问题,最后解决办法是打开.map文件找到出错变量y的地址,发现上一个地址的内存存放的是变量x的值,x的大小是一个字节,由于是半字操作,也改变了下一块内存中y的值,所以导致y变化,
索这么多,我觉得可能是写的方式不对
回复

使用道具 举报

地板
ID:977804 发表于 2022-3-1 13:11 | 只看该作者
wulin 发表于 2022-3-1 12:08
按扇区操作(512字节),a,b....同时读出,修改a后再全部写回去。

我现在是两个都擦,然后两个都写,再读回,就错了。
有规律的,都是少56,比如这次改好是456,,断电再上电,读就是400。我再百度找找原因
回复

使用道具 举报

5#
ID:977804 发表于 2022-3-1 13:17 | 只看该作者
天ノ忆 发表于 2022-3-1 13:10
我也遇到过这种问题,跟你现在状况很像,不过是用flash模拟eeprom,当时的是按半字写的,把一个变量x的值写 ...

你的这个,如果只使用一个地址,能正常吗?我这个是STC芯片自带的EEPROM,用一个地址OK,一个以上就有问题,没找到原因
回复

使用道具 举报

6#
ID:139866 发表于 2022-3-1 13:45 | 只看该作者
3花木城 发表于 2022-3-1 13:17
你的这个,如果只使用一个地址,能正常吗?我这个是STC芯片自带的EEPROM,用一个地址OK,一个以上就有问题 ...

我那是半字读写,肯定不正常的,
你可以打开keil的调试,单步运行,看看内存是怎么变化的
回复

使用道具 举报

7#
ID:139866 发表于 2022-3-1 13:48 | 只看该作者
3花木城 发表于 2022-3-1 13:17
你的这个,如果只使用一个地址,能正常吗?我这个是STC芯片自带的EEPROM,用一个地址OK,一个以上就有问题 ...

不对,看错了, 因为是半字读写,所以地址不能是奇数,除此之外就没什么bug了
回复

使用道具 举报

8#
ID:1007506 发表于 2022-3-1 14:39 | 只看该作者
要看你的擦除模式是块擦除还是页面擦除,要注意看数据手册
回复

使用道具 举报

9#
ID:977804 发表于 2022-3-1 16:36 | 只看该作者
解决了,根据2楼的建议,现在的方案是:
数据a,数据b,  a=读地址1, b=读地址2
如果:a++,擦地址1,a写入1,b写入2
如果:b++,擦地址2,a写入1,b写入2

就是擦地址后,所有的数据都写一下。
回复

使用道具 举报

10#
ID:57657 发表于 2022-3-1 17:25 | 只看该作者
单片机内置的EEPROM,不是真正的EEPROM,而是Flash闪存,只有字节读、字节写、没有字节擦除,只有扇区擦除,一次擦1扇区(512字节),二进制1写0不可逆,只有擦除才可以全部恢复为1,一次擦一扇区(512字节),被擦除的地址必须是512的倍数(可以为0),此问题新手高发,错误理解扇区结构导致异常。
回复

使用道具 举报

11#
ID:977804 发表于 2022-3-1 17:49 来自触屏版 | 只看该作者
npn 发表于 2022-3-1 17:25
单片机内置的EEPROM,不是真正的EEPROM,而是Flash闪存,只有字节读、字节写、没有字节擦除,只有扇区擦除 ...

嗯嗯,学习了,
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表