MSP430 flash 操作

发布者:ananan一二三四五最新更新时间:2020-05-08 来源: eefocus关键字:MSP430  flash  操作  程序代码 手机看文章 扫描二维码
随时随地手机看文章

关于flash具体说明,可以参照msp430 user guide中的具体章节。


介绍

一般,在单片机中的flash是用于存放程序代码的,属于只读型存储器(ROM)。但是在许多单片机中内部,都会专门留有一小段flash控制区,用于存放重要的配置参数,使得这些参数在掉电后仍然可以保存在单片机上面。


硬件介绍

430单片机的存储器组织结构采用冯诺依曼结构,RAM和ROM统一编址在同一寻址空间,没有代码空间和数据空间之分。


一般430的单片机都统一在0-64k地址范围中,只有少数高端的型号才能突破64k。地址的大概编码方式见msp430 user guide。(msp430f22x4的是在P310处)

以msp430f22x4为例,它的information memory大小为256个字节,分成4端,分别为segment A、B、C、D。对应的地址从0x010ff-0x01000。每块64个字节。

flash操作包括:字或字节写入;字符串写入;段擦除;主flash擦除。

flash操作时需要把flash时钟的范围控制在257kHz到476kHz。如果不在这个范围内,将会产生不可预料的结果。


擦除:擦除的最小单位是段,有三种擦除模式

    MERAS    ERASE    Erase Mode
    0        1        Segment erase
    1        0        Mass erase(all main memory segments)
    1        1        Erase all flash memory(main and information segments)

通过MERAS、ERASE位来设置擦除模式:段擦除,主flash擦除,全部擦除。

写入:写入的模式由WRT和BLKWRT位来确定

BLKWRT    WRT    Write Mode
    0        1    Byte/word write
    1        1    Block write

这两种模式中块写入要比字或字节写入操作速度大约快两倍,因为在块写入完成之前,变成电压一直维持直到块写入完成。


程序实现

设置Flash时钟,初始化Flash控制器

void flash_init(void)
    {
        FCTL2 = FWKEY + FSSEL_2 + FN1;    //默认SMCLK/3
    }

擦除函数

void flash_erase(unsigned int addr)
    {
        unsigned char *paddr;
        paddr = (unsigned char *)addr;
        FCTL1 = FWKEY + ERASE;
        FCTL3 = FWKEY;
        DINT;
        *paddr = 0;
        flash_wait_for_enable();
        EINT;
    }
    
    void flash_wait_for_enable(void)
    {
        while((FCTL3&BUSY)==BUSY);    //Busy
    }

写入字节

void flash_write_char(unsigned int addr,char data)
    {
        unsigned char * paddr;
        paddr = (unsigned char *)addr;
        FCTL1 = FWKEY + WRT;
        FCTL3 = FWKEY;
        DINT;
        *paddr = data;
        flash_wait_for_enable();
        EINT;
        FCTL1 = FWKEY;
        FCTL3 = FWKEY + LOCK;
    }

读取字

unsigned char flash_read_char(unsigned int addr)
    {
        unsigned char data;
        unsigned char *paddr = (unsigned char *)addr;
        data = *paddr;
        return data;
    }

实际使用事项

向information memory中写入字时,必须是偶数地址,奇数地址会写在这个地址的前一个偶数地址。

程序可以在flash中运行,也可以在RAM中运行,如果在RAM中运行,那么要把程序先从flash中移到RAM中,然后跳转到RAM中运行。(在430这款单片机中,没有必要将程序移到RAM中)

关键字:MSP430  flash  操作  程序代码 引用地址:MSP430 flash 操作

上一篇:MSP430读写片内FLASH保存数据
下一篇:关于MSP430F5438程序升级介绍--防迷路

推荐阅读最新更新时间:2024-11-07 19:50

STM32增强型微控制器访问NAND Flash学习笔记
一、了解NAND Flash 简单的理解就是,NORFlash具有随机存取和随字节执行写操作的能力,即可以访问到存储器内部的任意一个字节,且具有读取速度快等特点,它占据1MB—16MB闪存的大部分市场,根据其读取数据速度快的特点主要应用在代码存储;而NAND Flash以“页”为单位进行对数据的读写操作,且具有写入和擦除速度快等特点,它应用在8MB—256MB的产品中,根据其特点主要应用在数据存储上。 以型号HY27UF081G2A的NAND Flash芯片为例,其总线宽度为8bit,总内存大小为1Gbit(即128MB),共分为1024块(Block),每块又分为64页(Page),每页共2KB(main memo
[单片机]
STM32增强型微控制器访问NAND <font color='red'>Flash</font>学习笔记
基于XCR3032的大容量FLASH存储器接口设计
  FLASH存储器(FLASH Memory)是非易失存储器,即使在供电电源关闭后仍然能保留信 息, 可以对存储器单元块进行擦除和再编程,并且不需要额外的编程电压。FLASH存储器具有工 作电压低、擦写速度快、功耗低、寿命长、价格低廉、控制方法灵活、体积小等优点。近年 来,FLASH存储器在嵌入式系统代码存储和大容量数据存储领域中得到了广泛的应用。本文 介绍了使用XCR3032实现K9K1G08U0M与微控制器的接口原理,给出了VerilogHD L实现程序。对大容量FLASH存储器的接口设计具有一定的参考价值。   1XCR3032   XCR3032是Xilinx公司生产的CoolRunner XPLA3系列CPLD
[嵌入式]
MSP430 低通滤波器测试
MSP430型号 :MSP430F5529 通过MATLAB 设计了一个9阶的低通滤波器,系数乘以100倍存在.c文件中,直接对数据进行差分运算获得滤波后的输出值。 原始DAC数据也通过MATLAB生成。(12位DAC) include msp430.h #include DAC7311.h #include Clock_init.h #include Timer_Init.h #include Filter.h const unsigned int Data ={ 1018,2851,2077,2221,1377,1762,2709,2013,2693,1521, 2214,2238,2507,30
[单片机]
<font color='red'>MSP430</font> 低通滤波器测试
MSP430时钟配置
大家都知道MSP430是一款低功耗的单片机,超低功耗一直都是MSP430系列单片机的口号,为了适应各种功耗要求,比如在用电池供电的场合下,对于功耗是个严峻的挑战,所以MSP430单片机可以配置3种时钟振荡器,这3种时钟振荡器分别为:低频时钟源LFXT1CLK、高频时钟源XT2CLK、数字控制RC振荡器DCOCLK。其中DCOCLK是在单片机内部,实际上就是RC振荡器,并且可编程。配置在保持默认时,时钟频率大概在1MHz左右(这个是实际测试出来的),规格书有的讲在800KHz左右。在MSP430的时钟模块就有3个,分别为:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK。 下面我来看这3个时钟模块的时钟源可以来自于哪些
[单片机]
MSP430口线模拟I2C总线
/******************************************************************************************************** * 功能: 实现MSP430口线模拟I2C总线协议与24C04通信. * * 描述: 主系统工作时钟为12MHz,I2C工作时钟频率为1MHz.给某地址写入一个数据 * * 再读出来,如写入前和读出后的数据一致,则P1.0输出高电平,否则输出低电 * * 平.
[单片机]
体感技术:无需编程也可以操作机械臂
  此款机械臂7Bot在众筹平台Kickstarter上发起的,售价仅为350美元,此款机械臂无需进行任何编程技术即可供任何人使用,不一定只有拥有工程学位的人才可以操作。   7Bot机械价格甚至比iPhone更便宜,比之前更大的机械臂版本IRB 2400价格低更多,IRB 2400定价为50000美元。    7Bot 是一个全金属设计6轴桌面机器人手臂,其动力来自于6大扭矩金属舵机,动作速度和精准性都非常好,保证其动作和性能的可靠性。重2.5公斤,17英寸高,伸缩距离可达434毫米。   7Bot使用的硬件性能非常好,对机器人进行编程不是件小事情,尤其是对于没有很强的工程背景的用户来说更非易事。所以我们会提供各种级别的控制和编
[机器人]
SST25VF080B SPI接口FLASH STM32驱动
所有的FLASHA 都一样只能从1变0,要想从0变1 只有擦除一个页扇, SST25VF080B 最小可以擦除4KB的页 速度也不错 50MHz 容量1MB 挺够用的 10万次的擦写寿命。最低2.7V 就可正常工作。 Flexible Erase Capability Uniform 4 KByte sectors Uniform 32 KByte overlay blocks Uniform 64 KByte overlay blocks 先记下 这些个7788的命令 SST25VF080B 的各种命令比较繁琐 Status Register这个设置写保护多点 我这里只用它的判忙BUSY 一样先配
[单片机]
SST25VF080B SPI接口<font color='red'>FLASH</font> STM32驱动
网易丁磊:雷军的小米是伪操作系统
丁磊   已过了不惑之年的丁磊,无论是青春气息还是身材体型都已经无法和互扎克伯格这样的互联网新贵们相媲美,但是T恤、牛仔裤和阿迪达斯跑鞋的标准“IT男”打扮,还是让人依稀看到了那个当年果断“下海”并“触网”,最终得到成功的前中国首富的风采。   雷军 (微博) 的小米是伪操作系统   “丁磊貌似已经很久没有为游戏以外的网易产品站台了吧?”对于丁磊亲自出席网易云阅读上线一周年的活动仪式,媒体朋友们都带有这样的疑问,对此丁磊并不认同,他认为有时候他会在台前,有时候也会在幕后支持,而涉及移动互联网的事情,他都很关注。而与丁磊展开的专访,就从移动互联网开始。   “雷军的小米是伪操作系统,他并没有核心的引擎,就好比去买辆吉
[手机便携]
网易丁磊:雷军的小米是伪<font color='red'>操作</font>系统
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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