5372|4

6105

帖子

4

TA的资源

版主

楼主
 

【MSPM0L1306 LaunchPad】 10 eeprom仿真A模型 [复制链接]

 
本帖最后由 damiaa 于 2023-11-19 12:35 编辑
                                    【MSPM0L1306 LaunchPad】 10 eeprom仿真A模型
 
 
MSPM0L1306的flash可以做模拟eeprom,这里介绍具体介绍一下(eeprom仿真A模型)
 
这里介绍几个概念,flash和eeprom是不相同的,flash可以字节写,但不能字节擦除,擦除最小单位为扇区,MSPM0L1306自然也一样。Eeprom可以字节写字节擦。
 
那问题来了,怎么样模拟你字节擦字节写的类似操作呢。这里实际的是模拟一条记录的擦写和读。
这个模型实际上是空间换功能。两个扇区模拟一条记录的读写擦除。
 
记录的情况如下:
上面的图可以看除,每条记录擦除后是活动记录标记已用记录也是记录结束也是0xffff 实际上擦除后所有区域都是0xffff
 
记录开始会标记 一下活动标记为0x0000,然后记录写数据,写完后会再记录结束标记写0x0000,下一条记录写进去(记录结束标记标记完)的时候会把上一条记录的已用记录标记标为0x0000,说明和条记录已经用完,不是最后的记录了。下次就会从最后的记录开始。也可以根据记录的标记在下次上电的时候恢复记录。
 
两个扇区的情况如下:
这个时候我们写完第n+1条记录后就擦除第一扇区
然后继续写第二扇区记录直到记录2n写完,就去写第一扇区的第一条记录,同时把第二扇区擦除。
这也就是为什么要两个扇区的原因。
 
eeprom仿真A模型的原理就是这样。
 
下面跑一下这个程序的应用
打开ccs 生成eeprom_emulation_type_a_test_LP_MSPM0L1306_nortos_ticlang项目如下:

 

   
 
 
 
 
 
 
 
 
 
 
 
 
 
这里主要关心eeprom_emulation_type_a.c eeprom_emulation_type_a.h main.c文件 前两个文件实现算法,main.c中进行调用。
main.c中主要是上电初始化,然后是数据改变后写,每改变一次写一次。中断中看数据。如果我们restart后发现数据没变,证明是保存到flash了。但因为调试不能加载flash去重新调试。这样flash数据全部被调试器擦除了。
下面演示一下调试过程:
1,在Debug Project(.....)加载这个项目(这里会擦除所有flash空间 包括模拟eeprom部分 注意)。

 

 
                                                                                
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2,单步调试,观察EEPROMEmulationBuffer 会发现开始数据都是0,后面第一第二个数据有变化。
 
 
记得这里都是单步调试哦。
 
3,复位 在单步调试到EEPROM_TypeA_init之后,看数据是否变化。
 复位后   
调试到EEPROM_TypeA_init之后:
 
发现上次复位前的数据恢复了。证明数据存储到flash了,而且数据正确。
到此,这个实验验证正确了,剩下的就是以后咋们怎么应用他到产品中了。
 
 
81

 
                                                                            谢谢
 
 
此帖出自MSPM0 MCU论坛

最新回复

很多单片机都有内部eeprom,可惜mspm0没有   详情 回复 发表于 2024-8-18 18:44
点赞 关注
 
 

回复
举报

27

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

感谢楼主的分享,很不错的分享!学习中


此帖出自MSPM0 MCU论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
你好楼主,这个帖子的代码方便发一份吗
此帖出自MSPM0 MCU论坛

点评

打开ccs 生成eeprom_emulation_type_a_test_LP_MSPM0L1306_nortos_ticlang项目 这个可以用ccs生成的。你仔细看下帖子。  详情 回复 发表于 2024-7-26 08:18
 
 
 

回复

6105

帖子

4

TA的资源

版主

4
 
asdfasasdfasddf 发表于 2024-7-25 18:08 你好楼主,这个帖子的代码方便发一份吗

打开ccs 生成eeprom_emulation_type_a_test_LP_MSPM0L1306_nortos_ticlang项目

这个可以用ccs生成的。你仔细看下帖子。

此帖出自MSPM0 MCU论坛
 
 
 

回复

39

帖子

2

TA的资源

一粒金砂(中级)

5
 

很多单片机都有内部eeprom,可惜mspm0没有

此帖出自MSPM0 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表