2739|2

483

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

MSP430的FLASH编程奇葩问题,已解决 [复制链接]

本帖最后由 yl20084784 于 2016-12-25 02:10 编辑

写了个小程序msp430F1611,用串口发送指令让430擦出几十KB,然后写指定的个数的0。就这么个程序,擦出一小段的时候正常,到后面就擦出不了了。
举例:
第一步:设置擦出从0x5a00开始到0xfefe,然后写40KB个0
第二步:设置擦出从0x5a00开始到0xfefe,然后写4个0。
结果就出错了。结果如下图。

按正常逻辑,擦出完毕后,0x5a03以后就应该全部是0xffff,但是到0x5c00以后就全部是0了,之前写的没擦出成功。而到了0xf640的时候值又变成0xffff了。

附上相关flash设置代码:
DCO约900KHZ
FCTL2 = FWKEY + FSSEL_2 + FN1;             // SMCLK/3 for Flash Timing Generator
FCTL1 = FWKEY + ERASE;                   // Set Erase bit
FCTL3 = FWKEY;                           // Clear Lock bit
__disable_interrupt();
              for(i=0;i<94;i++)
              {
              *(char *)(0x5a00+i*0x200) = 0;                         // Dummy write to erase Flash segment 一个块是512B
              __delay_cycles(1000);
              }
              FCTL1 = FWKEY + WRT;                     // Set WRT bit for write operation
              __delay_cycles(1000);
               i=atoi(R_data);//ASCii转换到十进制
               FCTL1 = FWKEY + WRT;         // Set WRT bit for write operation
               FCTL3 = FWKEY;               // Clear WRT bit
               for(P=(char *)0x5a00;P<(char *)0x5a00+i;P++)
                {
                  *P=MarK;  
                }
                FCTL1 = FWKEY;
                FCTL3 = FWKEY + LOCK;        // Set LOCK bit



最新回复

  详情 回复 发表于 2018-1-15 08:19
 
点赞 关注

回复
举报

483

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
已解决,是计算错误FLASH段了,实际上是82段,算成94段了...
 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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