FLASH在MSP430F149嵌入式系统中的应用

发布者:工号待定最新更新时间:2012-04-18 来源: 微计算机信息 关键字:K9F1G08U0M  MSP430F149  FLASH 手机看文章 扫描二维码
随时随地手机看文章

NAND Flash是采用NAND结构技术的非易失存储器,具有ROM存储器的特点,存储在该芯片中的数据可在断电情况下维持10年不丢失,而芯片的引脚与访问又具有类似于RAM的特点。NAND FLASH 存储器将数据线与地址线复用为8条线,另外还分别提供了命令控制信号线,因此,NAND FLASH 存储器不会因为存储容量的增加而增加引脚数目。从而极大方便了系统设计和产品升级。

1 元件介绍

1.1 MSP430芯片

MSP430系列单片机是TI公司推出的16位RISC系列单片机,该系列是一组超低功耗微控制器,供电电压范围为1.8V—3.6V。考虑到本系统有微体积、低功耗的要求,在此选用MSP430F149,它具有60KB Flash Memory、2kb RAM、有8个通道采样率为200K的12位A/D转换器、硬件乘法器、2个带有大量捕获/比较寄存器的16位定时器、看门狗等,为系统的进一步开发扩展提供了良好的基础,特别适用于较复杂的系统开发。

1.2 NAND Flash

NAND结构Flash是Sumsung公司隆重推出并着力开发的新一代数据存储器件,在此选用芯片K9F1G08U0M,电源电压2.7V—3.6V,与MSP430F149一致,功耗低,容量可达128M×8Bit,按页进行读写,按块擦除,通过I/O口分时复用作为命令引脚/地址引脚/数据引脚。有很高的可靠性。

2 硬件设计

本系统中,K9F1G08U0M的数据输入输出口与单片机的P6端口相连。片选信号与单片机的P2.4相连, CLE(命令锁存控制端)、ALE(地址锁存控制端)、WE(写操作控制端)、RE(读操作控制端)分别通过控制单片机P3.3、P2.3、P2.6、P2.5引脚的电平,决定对FLASH

进行控制字操作、地址操作、写操作还是读操作。在此不使用写保护功能,所以WP接高电平。FLASH与单片机的部分连接组成电路如图1所示。

图1  MSP430F149与K9F1G08U0M的连接

3 软件设计

MSP430的开发软件较多,本文采用IAR公司的集成开发环境—IAR Embedded workbench 嵌入式工作台,利用C430(MSP430系列的C语言)编写调试。单片机对FLASH的操作主要有写、读、擦除。

3.1 写操作

向FLASH内部写数据是基于页的,K9F1G08U0M的命令字、地址和数据都是通过并行口线I/O0—I/O7在控制信号的作用下分时操作。地址A0—A10,A11—A26通过I/O0—I/O7分4次送入。同时K9F1G08U0M芯片提供了一根状态指示信号线 ,当该信号为低电平时,表示FLASH可能正处于擦除、编程或读操作的忙状态;而当其为高电平时,则表示为准备好状态,此时可以对芯片进行各种操作。本系统须写入126M数据写操作流程图如图2。[page]

3.2 读操作

读操作有串行页读、连续行读、随机读3种类型。在此选用串行页读取。首先将读操作控制字00h输入,再写入地址,写入控制字30h,待 信号变高后,将本页数据依次读出。随后再改变页地址读出其它页内数据。操作流程图如图3。

图2 写操作流程图  

图3  读FLASH数据程序流程图

3.3 擦除操作

任何FLASH器件的写入操作都必须在空的或已擦除的单元内进行,因此在进行下一次存储数据之前都必须对FLASH进行擦除操作。

擦除操作基于块,K9F1G08U0M内有1024块,块地址的输入需要两个周期,块操作的地址只有A18—A27有效,A12—A17备忽略。在地址后被送入的块擦除命令(D0h)启动块擦除操作,待 信号变高后,送入命令字70h,读出I/O0的值来判断数据擦除是否成功。图4为块擦除流程图。

图4  擦除FLASH程序流程图

4 程序设计

在此给出写操作部分程序,读操作和擦除操作均可参考文中流程图来编程,值得注意的是其它具体写地址操作应仔细阅读[page]

K9F1G08U0M芯片资料。

#include

#define   CLE   BIT3  

#define   ALE   BIT3

#define   WE    BIT6

#define   CE    BIT4

#define   RE    BIT5

#define   RB    BIT7

void  ReadFlash();   //读FLASH子程序

void  WriteFlash();   //写FLASH子程序

void  inituart(void); //初始化异步串行通信

void  Write10h();  //写控制字10h子程序

void  WriteCommand(); //写命令字写地址

void  ClrFlash();    //擦除FLASH子程序

unsigned   int  k,i,a

void  main ()

{

WDTCTL = WDTPW + WDTHOLD;

BCSCTL1 &= ~XT2OFF;

do

{

IFG1 &= ~OFIFG;

for (iq0=0x05; iq0>0; iq0--);

}   //检验晶振是否起振

while ((IFG1 & OFIFG)!= 0);

BCSCTL2 = SELM_2 + SELS + DIVS0;

//SMCLK选择2分频后的4M

While(k<0xFC00) //页数<64512时执行

{

WriteCommand(); //调用写控制字写地址子程序

While(i<2048)   //字节数<2048时执行循环

{

WriteFlash();  //调用写数据子程序,

32个字节

i=i+32;      //字节数+32

}

i=0;      //一页写完后,字节数置0

Write10h();  //调用写10h子程序

while(!(P2IN & RB));  //等待RB信号变高

k++;      //页数+1

k=0;      //页数置0

LPM4;    //全部写完后,MSP430进入低功耗模式4

5 结束语

MSP430系列单片机具有实时处理能力强、运行速度快、性价比高等特点。本文介绍了FLASH K9F1G08U0M在由MSP430F149组成的嵌入式系统中的应用,实验表明: 整个系统简单可靠、功能完善、运行稳定,具有实用价值。本文作者创新点:实现了MSP430单片机和NAND Flash两种低功耗芯片在嵌入式系统中的应用,完成了对FLASH的写操作、读操作及擦除操作,达到了系统的微体积和低功耗特性。

关键字:K9F1G08U0M  MSP430F149  FLASH 引用地址:FLASH在MSP430F149嵌入式系统中的应用

上一篇:μC/OS-II的任务切换机理及中断调度优化
下一篇:基于CAN/RS485双层网络的远程抄表系统设计

推荐阅读最新更新时间:2024-03-16 12:58

MSP430F149的TIMER_B连续计数模式
程序: //定时器B 模式二 #include msp430x14x.h void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT P6DIR |= BIT2;P6OUT |= BIT2; //关掉电平转换芯片(可以不用纠结) P3DIR |= BIT4; // P3.4 output TBCCTL0 = CCIE; // 打开捕获/比较中断 TBCCR0 = 50000; TBCTL = TBSSEL_2 + MC_2; // SMCLK, contm
[单片机]
S3C2440开发板裸机程序系列07—NAND FLASH存储器
1. 概述 我的TQ2440开发板上安装有2M的NOR FLASH和512M的NAND FLASH。 NOR FLASH 的特点是芯片内执行(XIP, eXecute In Place),应用程序可以直接在 NOR FLASH 里运行,不必再把代码读到系统RAM中(可以节约SRAM的成本)。NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。 NAND FLASH的特点是有很高的存储密度,并且写入和擦除速度也很快,但是无法直接寻址运行程序,接口上需要专门的控制器。另外NAND FLASH 非常容易出现坏区,所以需要有校验的算法。 因此,NOR FLASH一
[单片机]
S3C2440开发板裸机程序系列07—NAND <font color='red'>FLASH</font>存储器
武汉新芯50nm高性能的SPI NOR Flash产品全线量产
紫光集团旗下武汉新芯集成电路制造有限公司(以下简称“武汉新芯”),一家领先的非易失性存储供应商,宣布其采用50nm Floating Gate工艺SPI NOR Flash宽电压产品系列XM25QWxxC全线量产,产品容量覆盖16Mb到256Mb。该系列支持低功耗宽电压工作,为物联网、可穿戴设备和其它功耗敏感应用提供灵活的设计方案。 XM25QWxxC系列产品在1.65V至3.6V电压范围内读取速度可达133MHz(在所有单/双/四通道和QPI模式下均支持),工作温度范围可达-40℃到105℃。在电源电压下降后,时钟速度没有任何减慢,其传输速率可以胜过8位和16位并行闪存。在连续读取模式下能实现高效的存储器访问,仅需8个时钟的指
[手机便携]
STM32, Flash DFU芯片,内部flash,代码升级
这次要讲讲如何用USB升级单片机代码。以前曾经做过串口升级,网络升级,升级的基本原理都类似,只不过升级的工具不同罢了,串口升级当然是用串口了,网络升级用的是TCP/IP,USB升级当然用的是USB了。下面就来讲讲USB升级的实现。 修改部分部分都在USB_User组里: STM32 Internal Flash DFU芯片内部flash代码升级 - ziye334 - ziye334的博客我们一个一个文件讲过来。 首先讲讲hw_config.c,这个文件跟之前工程差不多。由于演示的需要,我们在这个文件里初始化一个按键引脚,并定义按键读取函数,该按键决定代码是否升级,如果程序一开始,该按键按下,则进入升级模式,否则跳转到升级
[单片机]
MSP430F149的IO口
1 概述 MSP430F149共有6组IO口,每组8bit, IO口的设置包括设置IO功能、方向、输入输出寄存器初值。对IO口不做设置,默认情况下为第一功能,输入模式。 2 常用寄存器 PxDIR 0 输入,1 输出; PxSEL 0 I/O口,1 第二功能; PxOUT,PxIN; PxIES 设置中断触发方式 0上升沿,1下降沿; PxIE 设置中断触发允许0禁止,1允许; PxIFG 中断标志寄存器,需要软件清零。 3 用法 IO口中断: P1,P2口总共有16个IO口均能引发中断,相关寄存器为PXIE(中断允许):0不允许,1允许。PXIES(中断触发岩选择)0上升沿、1下降沿。PXIFG(中断标志寄存器),I0口
[单片机]
STM32F103 Flash操作代码解析
/************************************************************************/ // !!!一定要记住!!!Flash寿命是有限的,别程序开着一直擦!!用到再擦 // !!!爱护Flash人人有责 // 必须先解锁Flash uint64_t data = 0; // 一页 1KB // stm32f103 Flash 建议使用页地址为:0x0807F000 // 寻址范围:0x0807F000 - 0x0807FFFF uint32_t *Address = (uint32_t*)0x08
[单片机]
兆易创新出第一颗国产高速8口 SPI NOR Flash
在5月10日举行的第九届松山湖IC论坛上,兆易创新存储事业部资深产品市场总监陈辉表示,兆易创新推出第一颗国产高速8口 SPI NOR Flash GD25LX256E,最高时钟频率达到200MHz,数据吞吐量是现有产品的5倍,符合最新的JEDEC JESD251标准规范,可以满足车载高速读取需要。 此外,据了解,内置ECC算法可以大幅度提高产品使用寿命,IO CRC功能也为高速系统设计提供了保障。 陈辉强调,GD25LX256E将广泛使用在对高性能有严格要求的车载,AI及IoT等应用领域。
[手机便携]
基于FLASH介质嵌入式存储方案的设计与实现
摘要 作为一种新型的存储介质,FLASH以其优良的特性,在嵌入式领域中得到了广泛的应用。本文通过分析FLASH介质的自身特性,并结合嵌入式系统的特点,设计实现于兼容性、可靠性以及开销等方面都得到充分优化的FLASH存储系统。 关键字 嵌入式系统 文件系统 FLASH 1 引言 FLASH(闪速存储器)作为一种安全、快速的存储体,具有体积小、容量大、成本低、掉电数据不丢失等一系列优点,已成为嵌入式系统中数据和程序最主要的载体。由于FLASH在结构和操作方式上与硬盘、E2ROM等其他存储介质有较大区别,使用FLASH时必须根据其自身特性,对存储系统进行特殊设计,以保证系统的性能达到最优。 2 FLASH的特点 FLASH是一
[缓冲存储]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

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

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