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

📄 driver.c

📁 ARM7的w90p710开发板上NandFlash精简的底层驱动
💻 C
字号:

#include "w90p710_nandflash.h"

void NandFlashInitController(void)
{
	//Reset
	NFLASH_CMD(CMD_RESET);

	NFLASH_WAITRB;

}

void INVALID(void)
{
rSDRAM&0xFF;
}
unsigned int ReadID(void)
{
	unsigned int ID;
	

	/*Send Read ID Command*/
	NFLASH_CMD(CMD_ID);

	/*Send	Address	0*/
	NFLASH_ADDR(0);

    NFLASH_READ_ID_WAIT;
    
  	/*Get Manu ID*/
 	ID=NFLASH_DATA<<8 ;

	/*Get Devic ID*/
 	ID +=NFLASH_DATA;
 	
 	INVALID();
 	return ID;

}

unsigned char Erase_Block(unsigned int block)
{
	unsigned int blockPage=(block<<5);
	int i;
	
	NFLASH_CMD(0x60);//60h:块擦除
	
	NFLASH_ADDR(blockPage&0xff);
	NFLASH_ADDR((blockPage>>8)&0xff);
	
	NFLASH_DELAY(2);
	
	NFLASH_CMD(0xd0);//擦除确认指令
	
	NFLASH_DELAY(3);
	
//	NFLASH_DATA&0xff; //此句可要也可不要
	
	NFLASH_WAITRB;
	
	NFLASH_CMD(0x70);//读当前状态
	
	if(NFLASH_DATA&0x1)
	{
		INVALID();
		return 0;
	}
	else
	{
		INVALID();
		return 1;
	}
}		
	
	
int Write_Page(unsigned int block,unsigned int page,unsigned char *buffer)
{
	unsigned int blockPage=(block<<5)+page;
	int i;
//	unsigned char *Source;
//	Source=buffer;
	
	NFLASH_CMD(0x80);
		
	NFLASH_ADDR(0);
	NFLASH_ADDR(blockPage&0xff);
	NFLASH_ADDR(blockPage>>8&0xff);
	
	for(i=0;i<528;i++)
	{
		NFLASH_DATA=*buffer++;
	}
	
	NFLASH_CMD(0x10);
	NFLASH_RB_WAIT;
	
	NFLASH_WAITRB;
	
	NFLASH_CMD(0x70);
	
	NFLASH_DELAY(3);
	if(NFLASH_DATA&0x1)
	{
		INVALID();
		return 0;	
	}
	else
	   INVALID();
	 
}

void Read_Page(unsigned int block,unsigned int page,unsigned char *buffer)
{
	int i;
	unsigned int blockPage=(block<<5)+page;
	
	NFLASH_CMD(0x00);
	
	NFLASH_ADDR(0);	
	NFLASH_ADDR(blockPage&0xff);
	NFLASH_ADDR(blockPage>>8&0xff);	
	for(i=0;i<3;i++);

	NFLASH_WAITRB;
	for(i=0;i<528;i++)
	{
		*buffer++=NFLASH_DATA;
	}
	 INVALID();
}

⌨️ 快捷键说明

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