MSP430F169 FLASH 操作

发布者:SerendipityRose最新更新时间:2022-09-21 来源: csdn关键字:MSP430F169  FLASH  操作  存储空间 手机看文章 扫描二维码
随时随地手机看文章

本章介绍430F169的FLASH操作以及特性

建议点击下方链接根据官方手册进行程序书写

废话不多说冲!!!


什么是FLASH 简单来说就像是储物间,你的代码就是物品存储在里面,用到那个代码时取出来用再放回去!


1 430F169 具有60KB主存和256B闪存和2KB RAM

相对于其他的单片机来说是比较大的存储空间了

2 注意事项

(敲黑板)

在进行FLASH操作的时候必须保证电压在2.7V以上时钟频率在257~476KHZ之间,不然会出现意想不到的错误

3 FLASH的写入和擦除

(敲黑板)

430F169这款芯片只支持段擦除或者块擦除(擦除主存段)或者全部擦除(主存加闪存)。

选择WRT或者BLKWRT选择是字/字节或者段写入


从RAM写入FLASH流程如下(*字写入*)

<1>关闭所有中断和看门狗(一般情况下关门狗默认关闭)

<2>通过BUSY判断FLASH是否忙碌

<3>设置FLASH控制寄存器 设置字写入(可以理解为解锁)

<4>写入数据

<5>设置控制寄存器(上锁)开启中断

从RAM写入FLASH流程如下(块写入)

<1>关闭中断和看门狗定时器

<2>判断是否忙碌

<3>设置FLASH控制寄存器

<4>设置块写入还是段写入

<5>是否等待

<6>是否忙碌

<7>是否写入其他快

<8>打开中断

4 停止操作FLASH

任何关于FLASH的读写操作可设置EMEX位来停止

5 4KB的FLASH例子如图

5 FLASH寄存器

<1>FCTL1,FLASH控制寄存器1(主要用来选择块写入或者字写入,擦除的方式)

<2>FCTL2,FLASH控制寄存器2(选择FLASH时钟和分频比)

<3>FCTL3,FLASH控制寄存器3(上锁,等待,忙碌)

<4>IE1,中断使能寄存器(内存访问冲突中断)

更加详细的细节请下载用户指导手册!!!!

6 写入FLASH操作流程(以我的代码为例)

<1>选择flash的时钟确定分频比(FLASH最后的时钟要在257~476Khz之间)

<2>FCTL1和FCTL3赋予写的权限擦除方式为段擦除

<3>执行一次假写(必须有)

<4>FCTL1赋予写权限选择字写入

<5>写入数据

<6>FCTL1和FCTL3关闭写权限上锁放置误操作

(本人用的是闪存A和B地址0X1010和0X1080)


void flash_init(void)

{

 FCTL2 = FWKEY + FSSEL0 + FN5;  //FLASH时钟初始化  MCLK(8MHZ) 32分频

}


void write_flashA(void)         //FLASH段A写入数据

{

  char *flash_ptr;

  unsigned int i;

  

  flash_ptr = (char *) 0x1080;   //指针指向你写的F

  FCTL1 = FWKEY + ERASE;   //执行写操作权限 擦除个别段

  FCTL3 = FWKEY;           //赋予写操作权限

  *flash_ptr = 0;          //执行一次flash 需要一次假写入

  FCTL1 = FWKEY + WRT;     //执行写操作权限 打开写模式

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

  {

    *flash_ptr++ = value;//写入数据  真正执行写操

    value++;

  }

  FCTL1 = FWKEY ;           //清除 WRT写操作位

  FCTL3 = FWKEY + LOCK;    //FLASH上锁 防止误操作

}


7 确定FLASH写入成功


主程序

#include "msp430x16x.h"

#include "System_clock.h"

#include "flash.h"


void main( void )

{

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  System_clock();               //初始化时钟

  flash_init();

  _DINT();                      //关闭中断

  write_flash(0x1010,123);

  write_flashA();

  copy_flashAtoB();

  read_and_write_one_flash();

  write_flash(0x1010,255);

  write_flash(0x1080,255);

  while(1)

  {

  

  }

}


(本人用的是闪存A和B地址0X1010和0X1080)

打开工程(下面有链接)点击 VIEW->Memory->memory1->0x1010->go to

430芯片初始状态都是0XFF如图

添加断点如图点击运行

点击单步调试

0X1010地址被写入123(0x7b)

一直单步调试流程图如下

块A被写入

A被复制到B中
擦除段A段B


关键字:MSP430F169  FLASH  操作  存储空间 引用地址:MSP430F169 FLASH 操作

上一篇:MSP430FR6989系列教程之LCD
下一篇:MSP430 串口通讯

推荐阅读最新更新时间:2024-11-13 19:46

电源意外关闭时MCU能否继续完成相应操作
对于主电源掉电后需要继续工作一段时间来用于数据保存或者发出报警的产品,我们往往都能够看见产品PCB板上有大电容甚至是超级电容器的身影。大容量的电容虽然能延时系统掉电,使得系统在电源意外关闭时MCU能继续完成相应操作,而如果此时重新上电,却经常遇到系统无法启动的问题。那么这到底是怎么回事呢?遇到这种情况又该如何处理呢? 一、上电失败问题分析 1. 上电缓慢引起的启动失败 对于需要进行掉电保存或者掉电报警功能的产品,利用大容量电容缓慢放电的特性来实现这一功能往往是很多工程师的选择,以便系统在外部电源掉电的情况下,依靠电容的储能来维持系统需要的重要数据保存及安全关闭的时间。此外,在不需要掉电保存数据的系统中,为了防止电源纹波
[电源管理]
深入解析发动机启停技术原理及操作方式
“红灯停,绿灯行”是车辆和行人遵守的交通规则,现在也被运用到发动机上,发动机启停技术能让发动机在一定条件下也能做到“红灯停,绿灯行”,这一技术是当下汽车节能减排的新途径。 如今稍微好的车都配有发动机启动技术。对于它,有些车主每天都在使用,认为他它可以节能减排,能省下一大笔钱。而大多数的车都认为这个功能太过鸡肋,经常启停的体验非常不好,对发动机也有伤害,以至于一上车就把它给关了。 实际上,发动机启停技术目前已经非常成熟,装配此项功能的发动机的耐受度也足够高,大家可以放心使用。 如果你想对它有更多的了解,下面就跟着我们一起,深入发动机自动启停系统。 简单来说,发动机自动启停技术是应城市交通拥堵的路况而产生的。市区行车,
[嵌入式]
深入解析发动机启停技术原理及<font color='red'>操作</font>方式
借钱上市,东芝存储器能否再度崛起重现辉煌?
随着国际间贸易摩擦不断加大,半导体行业亏损周期延长, 日系半导体厂商的日子越来越不好过,东芝存储器自去年从东芝独立出来以后,即定下2023年超过2万亿日元的销售目标,谋求2万亿日元的市值,并且开始筹划上市。 但整体行业增长开始缓慢,2万亿日元的市值对TMC来说何其艰难。而存储行业有着超强的周期性,衰退周期陷入亏损,大起大落,注定不能给予过高的定价,而TMC则NAND Flash为主要利润源,所以想要达到2万亿日元的市值将不可谓不艰难。 难以盈利? 在存储需求方面,B端的需求从去年开始减弱,整体市场需求偏低,NAND Flash、DRAM持续跌价。 面对供过于求的市况,西部数据与希捷等巨头在2019年第一季度的成绩
[嵌入式]
借钱上市,东芝存储器能否再度崛起重现辉煌?
是德科技联手联发科完成3GPP R16物理层互操作性开发测试
是德科技(NYSE:KEYS) 日前宣布已与联发科技合作实现基于3GPP R16标准的物理层互操作性开发测试(IODT)。是德科技是一家领先的技术公司,致力于帮助企业、服务提供商和政府客户加速创新,创造一个安全互联的世界。 IODT对于设备制造商开发高级5G应用产品的生态系统至关重要。此次合作使用了是德科技的PathWave信号生成软件和联发科技的Dimensity 5G集成芯片平台来共同实现。3GPP于2020年7月完成了R16标准的发布,使无线行业能够验证设备是否符合与5G NR增强功能相关的一组规范。 是德科技高级总监曹鹏表示:“是德科技很高兴与联发科技合作,该合作项目于三年前启动,旨在加速5G NR技术和产品的研发
[网络通信]
示波器简介、用途及操作方法
示波器,“人”如其名,就是显示波形的机器,它还被誉为“电子工程师的眼睛”。它的核心功能就是为了把被测信号的实际波形显示在屏幕上,以供工程师查找定位问题或评估系统性能等等。 示波器是干什么用的 1、可以测量直流信号、交流信号的电压幅度 2、可以测量交流信号的周期,并以此换算出交流信号的频率。 3、可显示交流信号的波形。 4、可以用两个通道分别进行信号测量。 5、可以在屏幕上同时显示两个信号的波形,即双踪测量功能。此功能能够测量两个信号之间的 相位差,和波形之间形状的差别。 怎样使用示波器_示波器的使用方法图解 跟万用表类似,要使用示波器,首先也得把它和被测系统相连,用的是示波器探头,如图20-4所示。
[测试测量]
AMD将在Navi架构中嵌入人工智能操作电路
  距离7月底SIGGRAPH 2017大会上 AMD 公布的下一代Vega图形架构的消息不过几天时间,人们已经在谈论明年将推出的 Navi 架构了。但是当时除了“可扩展性”、“下一代内存”等这些模糊的描述之外,关于 Navi 架构,我们所知道的只有“7nm FinFET”工艺。下面就随嵌入式小编一起来了解一下相关内容吧。   不过据雷锋网了解在8月11日 AMD 的一个新报告显示, Navi 将是 AMD 的第一款具有专用于人工智能(AI)操作的GPU。   据Fudzilla消息,AMD首席架构师Raja Koduri的Radeon技术团队本来希望在Vega中就实现这一愿望,但由于时间和资源的问题没能达成。   但现在7nm
[嵌入式]
南开大学研制出了一种智能防疫遥操作机器人小安
测体温、喷撒消毒剂、转运检测样本、清运垃圾……一台机器人就可以搞定!近日,由南开大学人工智能学院段峰教授团队研制的智能防疫遥操作机器人“小安”首次亮相,并成功完成部分功能。 据段峰介绍,机器人“小安”将有效协助医护人员日常工作,减少人力成本,在一定程度上阻断新冠肺炎疫情背景下前线医护人员面临的高感染风险。 机器人清运垃圾   机器人协助“远程会诊” 这台拥有一个“脑袋”、两个机械“手臂”的机器人“小安”可以通过手机操控在室内进行灵活穿梭,实现线体温检测、导诊分诊、消毒剂喷撒、检测样本转运、垃圾清运等功能,并可利用身上配备的摄像头对病房进行实时观察,协助医生开展“远程会诊”。 段峰表示,人工智能将为
[机器人]
基于Msp430单片机的直流电子负载设计
传统的负载检测将电阻、电容以及电感等串并联组合模拟实际负载,这种做法负载形式单一、大小不能连续调节,且占用较大安装空间,电能损耗大。直流电子负载克服了传统负载的缺点,不仅能够精确检测负载电压、调整负载电流,同时还可以实现模拟负载短路。直流电子负载已成为开关电源相关设备调试检测中的重要仪器。 文中设计了一款简易的直流电子负载,采用Msp430F169微控制器作为程序和算法控制单元,配合基于MOSFET的恒流源电路,实现了直流电流输出和负载电压调制率测量的功能。 1 系统总体框图和工作原理 1.1 系统总体框图 根据直流电子负载的基本功能要求以及工作原理,系统主要包括:4 x 4键盘模块、电源模块、LCD12864显示模块
[单片机]
基于Msp430单片机的直流电子负载设计
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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