DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 878|回复: 0
打印 上一主题 下一主题

[待整理] FLASH K9F1G08U0M在MSP430F149嵌入式系统中的应用

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-10 08:35:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
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。
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 程序设计
在此给出写操作部分程序,读操作和擦除操作均可参考文中流程图来编程,值得注意的是其它具体写地址操作应仔细阅读
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的写操作、读操作及擦除操作,达到了系统的微体积和低功耗特性。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-12-1 06:55 , 耗时 0.112625 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表