MSP430F149的存储器结构及FLASH读写

发布者:春水碧于天最新更新时间:2015-09-17 来源: eefocus关键字:MSP430F149  存储器结构  FLASH读写 手机看文章 扫描二维码
随时随地手机看文章
1      概述

1.1 FLASH特点

    写操作只能将1改写为0,不能将0改写成1。FLASH擦除后所有单元变为1,擦除操作只能针对整个段。FLASH在擦除前不能被改写。

1.2 MSP430F149存储器编址方式

    MSP430F149的ROM为60K+256B的FLASH,RAM为2K。MSP430存储器采用冯诺依曼结构,RAM和ROM合在一起编址。MSP430F149内部集成有FLASH控制器,可以简化对FLASH的操作。

    64K的寻址空间分为RAM、FLASH。

    RAM分两块:

1、寄存器(0000H-01FFH),存放特殊寄存器、设备寄存器、变量与堆栈。

2、数据RAM(01FFH-),存放各种变量、中间结果、堆栈。

    FLASH分两块:

1、主FLASH 一般用于存放程序代码。

2、信息FLASH(InfoFlash)用作掉电后保存少量数据。分为InfoA(0X1080-0X10FF)和InfoB(0X1000-0X1080),每段各128B。

1.3 操作

  三种操作:读取、擦除(只能针对段擦除)、写入(可以写入单个字节)。

2使用方法

2.1 程序架构

    读取FLASH方法和读取RAM方法相同。写和擦除FLASH要进行如下配置:

配置寄存器

制定指针地址

写数据/复制数据

配置寄存器

2.2 参数配置

    主要配置三个寄存器FCTL1,FCTL2,FCTL3。

    1、配置FLASH控制器时钟。时钟要求控制在250-470Khz之间。

FCTL2 = FWKEY + FSSEL0 + FN0;  //2分频

    2、用指针指向地址Unsigned char *ptr= (unsigned char *) 0x1080;

    3、进入写模式或擦除模式FCTL1=FWKEY+WRT;或FCTL1=FWKEY+ERASE

    4、清除锁定位 FCTL3=FWKEY;

5、写数据 *ptr=0x30;或擦除*ptr=0;

6、退出写状态,恢复锁存

FCTL1=FWKEY;

FCTL3=FWKEY+LOCK;

2.3 说明

    上电FLASH默认状态是读。为防止错误操作,FLASH的三个寄存器FCTLX都采用了密码核对机制FWKEY。

    上电时FLASH的InfoFLASH区域值均为1,可直接进行写操作,但此后的写操作必须先擦除才能正确写入。

MSP430系列单片机FLASH擦写典型次数是10万次,最低保证1万次。产品设计初期要规划好FLASH的寿命,尽量不让某些需要频繁改动的数据保存在FLASH中,这些数据可保存在RAM中,在断电前才存入FLASH中。

3相关寄存器

1、FCTL2

FWKEY Bits

15-8

FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

will be generated.

FSSELx Bits

7−6

Flash controller clock source select

00 ACLK

01 MCLK

10 SMCLK

11 SMCLK

FNx Bits

5-0

Flash controller clock divider. These six bits select the divider for the flash

controller clock. The divisor value is FNx + 1. For example, when FNx=00h,

the divisor is 1. When FNx=03Fh the divisor is 64.

FCTL2 = FWKEY + FSSEL0 + FN0;

2、FCTL1

FWKEY

Bits

15-8

FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

will be generated.

MERAS

ERASE

Bit 2

Bit 1

Mass erase and erase. These bits are used together to select the erase mode.

MERAS and ERASE are automatically reset when EMEX is set.

MERAS ERASE Erase Cycle

0 0 No erase

0 1 Erase individual segment only

1 0 Erase all main memory segments

1 1 Erase all main and information memory segments

WRT Bit 6 Write. This bit is used to select any write mode. WRT is automatically reset

when EMEX is set.

0 Write mode is off

1 Write mode is on

3、FCTL3

FWKEYx Bits

15-8

FCTLx password. Always read as 096h. Must be written as 0A5h or a PUC

will be generated.

LOCK Bit 4 Lock. This bit unlocks the flash memory for writing or erasing. The LOCK bit

can be set anytime during a byte/word write or erase operation and the

operation will complete normally. In the block write mode if the LOCK bit is set

while BLKWRT=WAIT=1, then BLKWRT and WAIT are reset and the mode

ends normally.

0 Unlocked

1 Locked

4 实例

4.1 上电后向InfoFLASH某单元写入一个字节数据

    1、配置FLASH控制器时钟。时钟要求控制在250-470Khz之间。

FCTL2 = FWKEY + FSSEL0 + FN0;  //2分频

    2、用指针指向地址Unsigned char *ptr= (unsigned char *) 0x1080;

    3、进入写模式FCTL1=FWKEY+WRT;

    4、清除锁定位 FCTL3=FWKEY;

5、写数据 *ptr=0x30;

6、退出写状态,恢复锁存

    注意FLASH操作期间不允许中断,所以写FLASH时要对全局中断允许进行操作。

代码如下:

  WDTCTL = WDTPW + WDTHOLD;                 // Stop watchdog timer

  FCTL2 = FWKEY + FSSEL0 + FN0;             // MCLK/2 for Flash Timing Generator

  unsigned char *ptr=(unsigned char *)0x1080;

  FCTL1=FWKEY+WRT;

  FCTL3=FWKEY;

  _DINT();

  *ptr=0x30;

  while(FCTL3&BUSY);

  _EINT();

  FCTL1=FWKEY;

  FCTL3=FWKEY+LOCK;

4.2 向FLASH的InfoA中连续写入128B数据

    说明:通过FCTL1将FLASH设为段擦除模式后,只要向某个段内任何存储单元写入0即可进行擦除操作。

void write_SegA (char value)

{

  char *Flash_ptr;                          // Flash pointer

  unsigned int i;

  Flash_ptr = (char *) 0x1080;              // Initialize Flash pointer

  FCTL1 = FWKEY + ERASE;                    // Set Erase bit

  FCTL3 = FWKEY;                            // Clear Lock bit

  *Flash_ptr = 0;                           // Dummy write to erase Flash segment

  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

  for (i=0; i<128; i++)

  {

    *Flash_ptr++ = value;                   // Write value to flash

  }

  FCTL1 = FWKEY;                            // Clear WRT bit

  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit

}

关键字:MSP430F149  存储器结构  FLASH读写 引用地址:MSP430F149的存储器结构及FLASH读写

上一篇:MSP430F149看门狗及其应用
下一篇:MSP430F149的时钟系统

推荐阅读最新更新时间:2024-03-16 14:32

MSP430F149学习笔记——时钟
由于近期的需要,开始学习TI的MSP430 MCU。脑子不好使记不下来,只能辛苦一一敲在这里,便于大脑短路时随时查阅。 首先学习了F149的时钟系统。F149拥有一个名为DCOCLK的内部数控振荡器,可外接两个晶振,通常一个晶振提供32768Hz实时时钟(LFXT1CLK),另一个晶振提供最大8MHz的系统主时钟(XT2CLK)。 以上3个时钟源可以产生三个时钟信号: ACLK:辅助时钟。可由LFXT1CLK经1/2/4/8分频得到,可软件配置作为各种外设提供时钟信号。 MCLK:主时钟。可由DCOCLK/LFXT1CLK/XT2CLK经1/2/4/8分频得到,作为CPU和系统时钟。 SMCLK:副时钟。可由D
[单片机]
MSP430F149最小系统板利用1602液晶显示的正弦波示波器程控
首先,讲一下 MSP430F149 的结构。MSP430 系列单片机是美国德州仪器(TI)1996年开始推向市场的一种16位超低功耗、具有精准指令集(RISC)的混合信号处理器(Mixed Signal Processor)。单个芯片的价格在 20 元左右。MSP430F149 是最小系统板,其中自带了 12 位的ADC模块,液晶显示屏我们可以另加,采集到单片机内部也就是 4096 个不同的读数。再由单片机引脚的最高电压是2.5V,易得理论精度为 0.6 mV,也就是说ADC的位数越多,数据采集精度越高。需要什么样的ADC模块也可以根据需求另外加上。另外提示一点 MSP430F149 的RAM只有 2K。以上都是一些用的上的常识,
[单片机]
nand flash 读写(基本操作)
开场白: 希望通过这篇文章记录一下自己在调试NAND flash的经验。希望对大家有用。 上个月搞了一块开发板QT210。说实话没有找到很多的datasheet就开始搞了。最早还是从boot说起,说到这这里不得不提到boot中打印的错误信息 ****CRC Error*****。最后还是决定静心调试看看怎么回事。结果发现资料还是确少,怎么办?找了以前的omap开发板。(个人觉得omap的板子 BSP还是做的比较好的)。在omap上调试了一下并测试了一些基本的NAND的读写操作。 210的板子准备在linux中使用MTD去管理者块flash。并且留下了疑问:s5pc110的片子memory map给nand 和 onen
[单片机]
nand <font color='red'>flash</font> <font color='red'>读写</font>(基本操作)
MSP430F149单片机实现温控仪
  引言   温度控制对于工业和日常生活等领域都具有广阔的应用前景,很多应用领域,需要精度较高的恒温控制,由于其控制具有非线性、时滞性和不确定性,用传统的控制达不到好的控制效果。模糊控制是一种基于规则的控制,它直接采用语言型控制规则,出发点是现场操作人员的控制经验或相关专家的知识,其鲁棒性强,干扰和参数变化对控制效果的影响被大大减弱,所以特别适合于0~100℃温度的精确控制。   MSP430系列单片机是一个16位的、具有精简指令集的、超低功耗的混合型单片机。MSP430F149单片机采用了精简指令(RISC),具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令,大量的寄存器以及
[单片机]
<font color='red'>MSP430F149</font>单片机实现温控仪
STM32:Flash擦除与读写操作
应用平台:STM32F030F4P6 ST官方库:STM32Cube_FW_F0_V1.9.0 背景知识 绝大多数的单片机和微控制器(ARM,x86),地址空间都是以字节为单位的,也就是说一个地址是一个字节。 Flash存储器有个特点,就是只能写0,不能写1。所以如果原来的地址有数据了,意味着有一些位为0,这些位就相当于无效了。所以必须写之前确保他们都为1,只有擦除才可以。另外每次擦除都必须擦除一个4K大小的扇区,这是flash的特性所决定的。 对Flash操作前必需打开内部振荡器。 STM32F030F4P6的Flash存储简介 STM32F030F4P6硬件配置:  FLASH (16KB)  RAM (4K
[单片机]
基于MSP430F149的无线环境监测传感器系统设计
引言   传感器技术与通信技术、计算机技术相结合构成的智能传感器以其较高的精度、良好的可靠性、功能的多样性等特点在过程控制以及信号监测中得到人们的关注, 已成为当今国内外研究的一大热点。本文设计了一种用于对环境信息进行实时监测的无线传感器系统, 在实际应用中能够对环境参数进行准确的测量并可靠传输, 体现了传感器系统数字化、智能化、无线化的优点。   该系统以 MSP430F149 超低功耗微控制器为核心, 配置新式的微型低功耗传感器, 可实时地对所测环境的温度、湿度、光照强度、有害气体浓度等参数进行测量处理。采用电池供电,无线传输, 避免了布线的烦琐, 而且具有良好的便携性。 系统硬件设计   整个传
[工业控制]
基于<font color='red'>MSP430F149</font>的无线环境监测传感器系统设计
MSP430读写擦除自带FLASH源程序
1-简介 MSP430单片机对片内FLASH的读写操作程序范例。 2-程序例程 //****************************************************************************** // 参数: wAddr 为地址 , 范围 0x1000~0xFFFF voidReadFlash(U16 wAddr,U8 *bBuf,U8 bLen) { while(bLen--) *bBuf++=*(U8 *)wAddr++; return; } voidWriteFlash(U16 wAddr,U8 *bBuf,U8 bLen) { U8 reg1,reg2; reg1=_BIC_S
[单片机]
msp430F149单片机的flash读写程序
//基于msp430F149单片机的flash读写,记录430的运行状态, //实现在复位和掉电的情况下,恢复原始运行状态。 #include msp430x14x.h #include function.h unsigned char value1=0; // 待写入段A的值 unsigned char *data =(unsigned char *)0x4080; // 段A的头指针 void write_SegA (unsigned char value1) { char *Flash_ptr; // Flash pointer Fl
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved