查看: 1287|回复: 0

[原创] 【经验分享】eeprom地址问题

[复制链接]

该用户从未签到

655

主题

6311

帖子

0

超级版主

Rank: 8Rank: 8

积分
19924
最后登录
2024-4-19
发表于 2021-6-18 14:17:51 | 显示全部楼层 |阅读模式
最近有小伙伴问了这样一个问题,说kea64的eeprom的基地址是0x1000_0000,但是FCCOB的命令,需要的地址是地址的0-23位。
g.PNG
那我们基地址的1,不就不会被放入FCCOB里吗?因为1是在第28位啊。
既然地址都没完整放进去,那怎么擦除eeprom指定地址呢?
事实上,并不需要完整的地址,mcu可以根据FCCOB的命令域是flash命令还是eeprom命令来自动明白从哪个基地址开始操作。也就是说,当命令域是eeprom的擦写等操作时候,mcu就自动明白会从0x1000_0000开始进行操作。为了验证这一点,我们来做一个实验。
我使用了FRDM-KE02的eeprom例程来实验,它的基地址也是0x1000_0000。
源代码中要擦写eeprom的目标地址是
destAdrss = EEpromBlockBase +
              (EEpromTotalSize -(SECTOR_INDEX_FROM_END * EEpromSectorSize))
我们现在将eeprom的基地址EEpromBlockBase设置为0。如果没有基地址,还能操作eeprom,那就说明我们是对的。destAdrss现在值为0xf0
b.PNG
然后运行一下
e.PNG
程序挂了,难道思路不对吗?
仔细debug程序,会发现,我们需要注释这段代码,它做了地址范围检查,检测在不在eeprom地址范围里,我们现在测试的地址当然不在,所以我们暂时注释掉。
d.PNG
这个擦除eeprom需要暂时注释,同样的写入eeprom的函数里有相同的关于地址范围检测的代码,我们暂时也注释掉。

q.PNG
同时我们还要修改读取地址内容的代码,虽然我们是将destAdrss的基地址设置为0了,但是读取时候还是要从eeprom位置开始读。

f.PNG
v.PNG
改完以后运行一下,发现通过了
abc.PNG
我们提供的地址里去除了eeprom的基地址是0xf0,但是它仍然能修改和读取eeprom的数据,所以其实基地址并不需要去指定,mcu自己明白eeprom基地址在哪里


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-19 11:15 , Processed in 0.105255 second(s), 20 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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