2056|4

52

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于Lauchpad的内部Flash问题 [复制链接]

我想用Lauchpad实现掉电保护功能,用的是内部Flash,发现若往同一地址反复擦写,读出来的值最终会等于0。求高手解答疑惑,谢谢了。

最新回复

本帖最后由 scott123 于 2014-7-11 08:50 编辑 印象中是FAE跟我說的 你應該先驗証這一個答案的真假 我只是寫好玩的,沒有去測試FLASH壽命 如果答案是真的 那可能就真的要儲存在EEPROM了  详情 回复 发表于 2014-7-11 08:47
 
点赞 关注

回复
举报

52

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
下面贴上关于Flash的代码



#include "msp430G2553.h"
unsigned int SegAddr = 0;
unsigned int SegPre = 0;

unsigned char Flash_Init(unsigned char Div,unsigned char Seg)
{
        if(Div < 1)
        {
                Div = 1;
        }
        if(Div > 64)
        {
                Div = 64;
        }
        FCTL2 = FWKEY + FSSEL_2 + Div -1;
        SegPre = Seg;
        if(Seg <= 31)
        {
                SegAddr = 0xFFFF - (Seg + 1) * 512 +1;
                return (1);
        }
        switch(Seg)
        {
        case 'A': case 'a':                SegAddr = 0x10C0;break;
        case 'B': case 'b':                SegAddr = 0x1080;break;
        case 'C': case 'c':                SegAddr = 0x1040;break;
        case 'D': case 'd':     SegAddr = 0x1000;break;
        default:        SegAddr = 0x20FF;return (0);
        }
        return (1);
}



unsigned char Flash_ReadChar(unsigned int Addr)
{
        unsigned char Data = 0;
        unsigned int *Ptr_SegAddr,temp = 0;
        if((SegPre <= 31 && Addr >= 512) || (SegPre > 31 && Addr >= 64))
        {
                return 0;
        }
        temp = SegAddr + Addr;
        Ptr_SegAddr = (void*)temp;
        Data = *(Ptr_SegAddr);
        return (Data);
}



char Flash_Direct_WriteChar(unsigned int Addr,unsigned char Data)
{
        unsigned int temp = 0;
        unsigned char *Ptr_SegAddr;
        if((SegPre <= 31 && Addr >= 512) || (SegPre > 31 && Addr >= 64))
        {
                return 0;
        }
        temp = SegAddr + Addr;
        Ptr_SegAddr = (unsigned char*)temp;
        FCTL1 = FWKEY + WRT;
        FCTL3 = FWKEY;
        _disable_interrupts();
        *Ptr_SegAddr = Data;
        while(FCTL3 & BUSY);
        _enable_interrupts();
        FCTL1 = FWKEY;
        FCTL3 = FWKEY + LOCK;
        return 1;
}
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
印象中
是flash,不像是eeprom
只能重覆讀寫幾千次,eeprom才能到百萬次

点评

也就是说不推荐用内部Flash?  详情 回复 发表于 2014-7-10 19:09
 
 
 

回复

52

帖子

0

TA的资源

一粒金砂(中级)

4
 
scott123 发表于 2014-7-10 17:48
印象中
是flash,不像是eeprom
只能重覆讀寫幾千次,eeprom才能到百萬次

也就是说不推荐用内部Flash?
 
 
 

回复

32

帖子

0

TA的资源

一粒金砂(中级)

5
 
本帖最后由 scott123 于 2014-7-11 08:50 编辑

印象中是FAE跟我說的
你應該先驗証這一個答案的真假
我只是寫好玩的,沒有去測試FLASH壽命
如果答案是真的
那可能就真的要儲存在EEPROM了
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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