2388|0

1059

帖子

1

TA的资源

版主

楼主
 

MSP430-FLASH信息区使用方法 [复制链接]



对于设计的产品来说,我们往往需要保存一些数据,往往我们采用外部的串行flash或者EEPROM,但有时候我们需要存储的配置参数并不是很多,此时如果我们用MSP430作为主控,我们就可以用MSP430-FLASH信息区保存我们的配置参数。

       对于MSP430来说,其FLASH型单片机的FLASH存储器模块根据不同的容量分为若干段,其信息存储器SegmengA和SegmentB各包含128字节,其他段有512字节,SegmentB的地址是: 0x1000到0x107F,SegmentA的地址是: 0x1080到0x10FF。其他段的地址根据容量不同,从0xFFFF开始,每512字节为一段进行分配。
       大家应该都知道,对于FLASH存储器来说,其写入数据时,每一位只能由“ 1”变成“ 0”,而不能由“ 0”变成“ 1“,所以当我们有数据要想保存到FLASH存储器时,必须先对目标段进行整段擦除操作,擦除操作使的对应段FLASH存储器变成全“ 1”。这样我们才可以写我们的数据。
       先介绍擦除FLASH段的程序。
      
  1. void Flash_clr( int *Data_ptr )
  2. {
  3.   _DINT();
  4.   FCTL1 = 0x0A502;          /* ERASE = 1 */
  5.   FCTL3 = 0x0A500;          /* Lock = 0 */
  6.   *Data_ptr=0;              /* erase Flash segment */
  7.   _NOP();
  8.   _EINT();  
  9.   _NOP();
  10. }
复制代码

       FLASH存储器可以按字节写入,也可以按字写入。
        
  1. void Flash_wb( unsigned char *Data_ptr,unsigned  char byte ){
  2.   _DINT();
  3.   FCTL3 = 0x0A500;          /* Lock = 0 */
  4.   FCTL1 = 0x0A540;          /* WRT = 1 */
  5.   *Data_ptr=byte;           /* program Flash word */
  6.   _EINT();
  7. }
复制代码
  1. void Flash_ww( unsigned int *Data_ptr, unsigned int word )
  2. {
  3.   _DINT();
  4.   FCTL3 = 0x0A500;          /* Lock = 0 */
  5.   FCTL1 = 0x0A540;          /* WRT = 1 */
  6.   *Data_ptr=word;           /* program Flash word */
  7.   _EINT();  
  8. }
复制代码

       FLASH存储器连续写入n字节
  1. void flash_memcpy(char *ptr, char *from, int len)
  2. {
  3. _DINT();
  4. FCTL3 = 0x0A500; /* Lock = 0 */
  5. FCTL1 = 0x0A540; /* Write = 1 */
  6. while (len)
  7. {
  8. *ptr++ = *from++;
  9. len--;
  10. }
  11. _EINT();
  12. }
复制代码

对于FLASH存储器数据读取就比较简单了,如下
  1. #define   FSEG_A 0x01080    /* Flash Segment A start address */
  2. #define   FSEG_B 0x01000    /* Flash Segment B start address */
  3. unsigned char Data[8];
  4. unsigned char  *ptr;
  5. unsigned char i;                  
  6. ptr=(unsigned char *)FSEG_A;
  7. for (i=0;i<8;i++)
  8. Data[i]=*ptr++;   
复制代码


     



此内容由EEWORLD论坛网友qwerghf原创,如需转载或用于商业用途需征得作者同意并注明出处


      




 
点赞 关注

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

随便看看
查找数据手册?

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