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

📄 main.c

📁 三星44b0读取nand flash的源代码.nand flash 的型号是k9f5608.很有参考价值哦
💻 C
字号:
#include "main.h"

extern  U32 NFReadID(void);
extern void NFReadPage(U32 addr, U8 *buf);
extern  U32 NFEraseBlock(U32 addr);
extern U32 NFWritePage(U32 addr, U8 *buf);


/********************************************************************************************************
** 函数功能 :长软件延时
** 入口参数 :dly	延时参数,值越大,延时越久
** 出口参数 :无
*********************************************************************************************************/
void DelayNS (U32 dly)
{
	U32 i; 
	 
	for ( ; dly>0; dly--)
		for (i=0; i<10000; i++);
}



/********************************************************************************************************
** 函数功能 :main
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
int main( )
{ 
//	U32	cnt=0;
	U32 i;
	U8  NFBuf[1000];	
	U32	Num,NFAddr = 0;
	U32 NF_id=0;

	ChangePllValue(88, 6, 1);
	
	PortInit();
	  
	console_init(115200);  

	while(1)
	{
		uartprintf("\n\r\n\r\n\r\n\r\n\r\n\r 	请输入功能代码:");		
		uartprintf("\n\r\n\r 	1、查看NandFlash ID:");		
		uartprintf("\n\r\n\r 	2、察看NF_addr位置的数据:");		
		uartprintf("\n\r\n\r 	3、擦除指定地址所在的block");
		uartprintf("\n\r\n\r 	4、写指定位置的一个page");
		uartprintf("\n\r\n\r 	5、改变新的操作位置:");
		uartprintf("\n\r\n\r 	6、");
		
		uartprintf("\n\r\n\r flash 操作位置 0x%x",NFAddr);


		Num = getch();	

		switch ( Num )
		{
			case '1':
				uartprintf("\n\r\n\r\n\r\n\r  1、查看NandFlash ID.............");		
				NF_id = NFReadID();
				uartprintf("\n\r\n\r\n\r\n\r  NF_id = 0x%x",NF_id);		
				break;
				
			case '2':
				uartprintf("\n\r\n\r 	2、察看NF_addr位置的数据:\n\r\n\r");		
				NFReadPage(NFAddr,&NFBuf[0]);
				for(i=0; i<512; i++)
				{
					printf("0x%x  ",NFBuf[i]);
				
				}
				uartprintf("\n\r\n\r 操作地址是: 0x%x",(( NFBuf[901] * 256 + NFBuf[900]) <<9) );

				break;
			case '3':
				uartprintf("\n\r\n\r 	3、擦除指定地址所在的block...........");
				NFEraseBlock(NFAddr);

				break;
			case '4':
				uartprintf("\n\r\n\r 	4、写指定位置的一个page");
				for(i=0;i<512; i++)
				{
					NFBuf[i] = i+2;
				}
				NFWritePage(NFAddr, NFBuf);
				break;
			case '5':
				uartprintf("\n\r\n\r 5 原操作位置 0x%x",NFBuf);
					uartprintf("\n\r\n\r\n\r\n\r now!Input 4 byte data...........");
					 
					 NFAddr = 0;
					 Num = getch();	
					 NFAddr = ( NFAddr <<8) | Num;
					 Num = getch();	
					 NFAddr = ( NFAddr <<8) | Num;
					 Num = getch();	
					 NFAddr = ( NFAddr <<8) | Num;
					 Num = getch();	
					 NFAddr = ( NFAddr <<8) | Num;
					uartprintf("\n\r\n\r	 NFAddr = 0x%x",NFAddr);					
				break;

			default:
				break;
			
		}
		
		DelayNS(100);
					
	}

 



	
	return 0;
}


⌨️ 快捷键说明

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