⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 NAND FLASH 的读写操作程序
💻 C
字号:
//本程序在每个Flash操作子函数中都加入了口线的方向配置。
#include "msp430x14x.h"
#include "flash.h"
//****************************************************
//往FLASH中写入sequential data input命令字
//****************************************************
void WriteSequentialDataInputCommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashSequentialDataInput;
  FlashControlPort=CommandInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读模式1命令字并选中A区
//****************************************************
void WriteRead1ACommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashRead1A;
  FlashControlPort=CommandInputInReadMode; 
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}

//****************************************************
//往FLASH中写入读模式1命令字并选中B区
//****************************************************
void WriteRead1BCommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashRead1B;
  FlashControlPort=CommandInputInReadMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE; 
}
//****************************************************
//往FLASH中写入读模式2命令字并选中C区
//****************************************************
void WriteRead2CommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashRead2;
  FlashControlPort=CommandInputInReadMode&(~FlashSE);
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}
//****************************************************
//读取FLASH的ID
//****************************************************
void WriteReadIDCommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashReadID;
  FlashControlPort=CommandInputInReadMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE; 
}
//****************************************************
//往FLASH中写入复位命令字
//****************************************************
void WriteReadResetCommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashReset;
  FlashControlPort=CommandInputInReadMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入块擦除命令字
//****************************************************
void WriteBlockEraseCommandToFlash(unsigned short FlashRowAddress)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashBlockErase1cycle;
  FlashControlPort=CommandInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
  OutputToFlash=FlashRowAddress; 
  FlashControlPort=AddressInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;  
  OutputToFlash=(FlashRowAddress>>8);
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
  OutputToFlash=FlashBlockErase2cycle;
  FlashControlPort=CommandInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}
//****************************************************
//往FLASH中写入读取状态命令字
//****************************************************
void WriteReadStatusToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashReadStatus;
  FlashControlPort=CommandInputInReadMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE; 
}
//****************************************************
//往FLASH中写入页编程命令字
//****************************************************
void WritePageProgramCommandToFlash(void)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashPageProgram;
  FlashControlPort=CommandInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}


//****************************************************
//往FLASH中写入地址的程序(读模式)
//****************************************************
void WriteReadModeAddressToFlash(unsigned short FlashRowAddress,unsigned short FlashColumnAddress)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashColumnAddress;
  FlashControlPort=AddressInputInReadMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
  OutputToFlash=FlashRowAddress;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;   
  OutputToFlash=(FlashRowAddress>>8);
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}

//****************************************************
//往FLASH中写入地址的程序(读模式)
//****************************************************
void WriteWriteModeAddressToFlash(unsigned short FlashRowAddress,unsigned short FlashColumnAddress)
{
  DataPortDirection=0xFF;
  ControlPortDirection=(~FlashRB);
  OutputToFlash=FlashColumnAddress;
  FlashControlPort=AddressInputInWriteMode;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
  OutputToFlash=FlashRowAddress;
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;   
  OutputToFlash=(FlashRowAddress>>8);
  FlashControlPort&=~FlashWE;
  FlashControlPort|=FlashWE;
}



//****************************************************
//为读取数据作准备
//****************************************************
void PrepareForReadDataFromFlash(void)
{
  ControlPortDirection=(~FlashRB);
  FlashControlPort=PrepareForDataOutput&(~FlashSE);
}

//****************************************************
//写入数据到Flash作准备(不包括C区域)
//****************************************************
void PrepareForWriteDataToFlashNoCArea(void)
{
  ControlPortDirection=(~FlashRB);
  FlashControlPort=PrepareForDataInput|FlashSE;
}
//****************************************************
//写入数据到Flash作准备(包括C区域)
//****************************************************
void PrepareForWriteDataToFlashIncludeCArea(void)
{
  ControlPortDirection=(~FlashRB);
  FlashControlPort=PrepareForDataInput&(~FlashSE);
}



//****************************************************
//组合函数
//****************************************************
//****************************************************
//读取Flash中的状态寄存器,其中返回值在InputDataFromFlash中
//****************************************************
void ReadStatusFromFlash(void)
{
  WriteReadStatusToFlash();
  DataPortDirection&=~0xFF;
  FlashControlPort&=~FlashRE;
  FlashControlPort|=FlashRE;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -