3275|7

3404

帖子

6

TA的资源

裸片初长成(初级)

楼主
 

430G系列如何利用内部flash存储 [复制链接]

最近在用430G系列的片子做一个小东西,也就是launpad上的那个系列的。想用内部flash存几个简单的系数,谁有这方面的应用给说一下呗

最新回复

感谢分享   详情 回复 发表于 2015-4-28 22:26
 
点赞 关注

回复
举报

3404

帖子

6

TA的资源

裸片初长成(初级)

沙发
 
本帖最后由 jishuaihu 于 2015-4-28 13:49 编辑

好像找到了,是不是INFOA-INFOD,每段64B,有用过的也来讨论一下
 
 

回复

2144

帖子

3

TA的资源

五彩晶圆(中级)

板凳
 
可以用inf信息段,也可以用程序没用玩的flash部分
当然了需要注意inf信息段需要注意只有部分可以用,有些段内部是DCO校准数据等等的有用数据,擦除了就挺麻烦的了,具体的一时还记不得


infc段可以随意用,这个是确定的

 
个人签名电工
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

4
 
信息字段存在InfoA里面,这段别随便擦除,否则MCU可能运行异常。
还有就是在使用Flash的时候一定要记住Flash是有一定寿命的,别频繁擦除、写入同一个扇区。
 
 
 

回复

27

帖子

1

TA的资源

一粒金砂(中级)

5
 
本帖最后由 huybn5776 于 2015-4-29 17:08 编辑

正好改完我的头文件,传给你一份
FlashRW.7z (1.37 KB, 下载次数: 58)
※4/9发现有小bug,重传没问题的版本并加入FlashModifyChar

里面有打一点注释,应该不会太难懂,主要会用到这几个函数
FlashWriteChar → 写字节 1Byte
FlashEWChar → 擦除段并写入1Byte
FlashReadChar → 读取指定Flash位址 (1Byte) FlashRW.7z (1.37 KB, 下载次数: 58)
FlashReadInt → 读取指定Flash位址 (2Byte)
FlashData2 → 在Debug模式为MSP430编程的同时,把指定的2Byte数据写入Flash中,像是这样用↓
FlashData2(FData,0xd000,0x08,0x01)
进入Debug后开启Memory Browser,键入FData后可以看到地址0xd000那边为0108
把#define展开的话,会是这个样子
#pragma RETAIN(FData)
#pragma location=0xd000
const char FData[2] = {0x08,0x01};
其中FData数组大小可以自由更改以写入更多的数据

我用MSP430G2553从来没用到0xd000后面的空间过,故我把0xd000~0xecff都当成可用空间了
与InfoA~D不同的是,它擦除时是一次擦512Byte而非64Byte
故此这一区的数据修改过后,想改写的话一次得擦除512Byte才行
我另外写了段FlashModifyInt函数即为把这512Byte的数据备份0xea00~0xebff后,改好要修改的地方后再存回
在这个区段要改写数据的话,尽量不要跨区段改写,不然会变成要备份512Byte × 2
像是0xd000~0xd1ff  0xd200~0xd3ff,擦除0xd000~0xd1ff中任一地址即会把整个段擦除为0xff

点评

感谢分享  详情 回复 发表于 2015-4-28 22:26
感谢分享  详情 回复 发表于 2015-4-28 22:25
谢谢,解释的太清楚了。  详情 回复 发表于 2015-4-28 22:04
 
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

6
 
huybn5776 发表于 2015-4-28 16:17
正好改完我的头文件,传给你一份


里面有打一点注释,应该不会太难懂,主要会用到这几个函数
FlashWriteChar → 写字节 1Byte
FlashEWChar → 擦除段并写入1Byte
FlashReadChar → 读取指定Flash位址 (1Byte)
FlashReadInt → 读取指定Flash位址 (2Byte)
FlashData2 → 在Debug模式为MSP430编程的同时,把指定的2Byte数据写入Flash中,像是这样用↓
FlashData2(FData,0xd000,0x08,0x01)
进入Debug后开启Memory Browser,键入FData后可以看到地址0xd000那边为0108
把#define展开的话,会是这个样子
#pragma RETAIN(FData)
#pragma location=0xd000
const char FData[2] = {0x08,0x01};
其中FData数组大小可以自由更改以写入更多的数据

我用MSP430G2553从来没用到0xd000后面的空间过,故我把0xd000~0xecff都当成可用空间了
与InfoA~D不同的是,它擦除时是一次擦512Byte而非64Byte
故此这一区的数据修改过后,想改写的话一次得擦除512Byte才行
我另外写了段FlashModifyInt函数即为把这512Byte的数据备份0xeb00~0xecff后,改好要修改的地方后再存回
在这个区段要改写数据的话,尽量不要跨区段改写,不然会变成要备份512*2Byte
像是0xd000~0xd1ff  0xd200~0xd3ff,擦除0xd000~0xd1ff中任一地址即会把整个段擦除为0xff

谢谢,解释的太清楚了。


 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

7
 
huybn5776 发表于 2015-4-28 16:17
正好改完我的头文件,传给你一份


里面有打一点注释,应该不会太难懂,主要会用到这几个函数
FlashWriteChar → 写字节 1Byte
FlashEWChar → 擦除段并写入1Byte
FlashReadChar → 读取指定Flash位址 (1Byte)
FlashReadInt → 读取指定Flash位址 (2Byte)
FlashData2 → 在Debug模式为MSP430编程的同时,把指定的2Byte数据写入Flash中,像是这样用↓
FlashData2(FData,0xd000,0x08,0x01)
进入Debug后开启Memory Browser,键入FData后可以看到地址0xd000那边为0108
把#define展开的话,会是这个样子
#pragma RETAIN(FData)
#pragma location=0xd000
const char FData[2] = {0x08,0x01};
其中FData数组大小可以自由更改以写入更多的数据

我用MSP430G2553从来没用到0xd000后面的空间过,故我把0xd000~0xecff都当成可用空间了
与InfoA~D不同的是,它擦除时是一次擦512Byte而非64Byte
故此这一区的数据修改过后,想改写的话一次得擦除512Byte才行
我另外写了段FlashModifyInt函数即为把这512Byte的数据备份0xeb00~0xecff后,改好要修改的地方后再存回
在这个区段要改写数据的话,尽量不要跨区段改写,不然会变成要备份512*2Byte
像是0xd000~0xd1ff  0xd200~0xd3ff,擦除0xd000~0xd1ff中任一地址即会把整个段擦除为0xff

感谢分享
 
 
 

回复

1291

帖子

0

TA的资源

纯净的硅(中级)

8
 
huybn5776 发表于 2015-4-28 16:17
正好改完我的头文件,传给你一份


里面有打一点注释,应该不会太难懂,主要会用到这几个函数
FlashWriteChar → 写字节 1Byte
FlashEWChar → 擦除段并写入1Byte
FlashReadChar → 读取指定Flash位址 (1Byte)
FlashReadInt → 读取指定Flash位址 (2Byte)
FlashData2 → 在Debug模式为MSP430编程的同时,把指定的2Byte数据写入Flash中,像是这样用↓
FlashData2(FData,0xd000,0x08,0x01)
进入Debug后开启Memory Browser,键入FData后可以看到地址0xd000那边为0108
把#define展开的话,会是这个样子
#pragma RETAIN(FData)
#pragma location=0xd000
const char FData[2] = {0x08,0x01};
其中FData数组大小可以自由更改以写入更多的数据

我用MSP430G2553从来没用到0xd000后面的空间过,故我把0xd000~0xecff都当成可用空间了
与InfoA~D不同的是,它擦除时是一次擦512Byte而非64Byte
故此这一区的数据修改过后,想改写的话一次得擦除512Byte才行
我另外写了段FlashModifyInt函数即为把这512Byte的数据备份0xeb00~0xecff后,改好要修改的地方后再存回
在这个区段要改写数据的话,尽量不要跨区段改写,不然会变成要备份512*2Byte
像是0xd000~0xd1ff  0xd200~0xd3ff,擦除0xd000~0xd1ff中任一地址即会把整个段擦除为0xff

感谢分享
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表