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

📄 nandflash.h

📁 linux下nand flash驱动
💻 H
字号:
/*
 * NandFlahs底层代码头文件
 */


#ifndef __NANDFLASH__
#define __NANDFLASH__

#define MAX_NAND_CACHE_COUNT		4

typedef struct _NandCacheHeader {
	unsigned char bUsed;			// 标识某块是否使用
	unsigned long nUseCount;		// 使用记数
	unsigned long nTickCount;		// 时间记数
	unsigned char bDirty;			// 是否需要回写
	unsigned long nBlockNum;		// NandFlash块号
	unsigned char *pSectorBuf;		// 数据缓存指针
} NAND_CACHE_HEADER;


extern unsigned char 
WriteSector1(unsigned char *, unsigned long , unsigned short);  
extern unsigned char 
ReadSector1(unsigned char *, unsigned long, unsigned short);    
extern unsigned char 
InitNandFlash(void);            

#define WRITEBACK_DELAY					20000		// 20s

#define NANDFLASH_SIZE					32768000	//(32000*1024)
#define BLOCK_SIZE1						16384		//(16*1024)
#define BLOCK_NUM						2000		//(NANDFLASH_SIZE/BLOCK_SIZE1)
#define SECTOR_PER_BLOCK				32			//(BLOCK_SIZE1/512)
	
#define READ1_CMD    					0x00
#define READ2_CMD    					0x50
#define READ_ID_CMD   					0x90
#define RESET_CMD    					0xff
#define PAGE_PROGRAM_CMD  				0x10
#define BLOCK_ERASE_CMD   				0x60
#define BLOCK_ERASE_CONFIRM_CMD  		0xd0
#define READ_STATUS_CMD   				0x70
#define SDATA_INPUT_CMD					0x80

#define READY_BUSY_PIN					0x04
#define CMD_LATCH_PIN					0x01
#define ADD_LATCH_PIN					0x02
#define CE_PIN							0x08

#define PROGRAM_ERROR					0x01
#define ERASE_ERROR						0x01

#define CMD_LATCH_ENABLE 				(PDDATA |= CMD_LATCH_PIN)
#define CMD_LATCH_DISABLE 				(PDDATA &= ~CMD_LATCH_PIN)
#define ADD_LATCH_ENABLE() 				(PDDATA |= ADD_LATCH_PIN)
#define ADD_LATCH_DISABLE() 			(PDDATA &= ~ADD_LATCH_PIN)
#define NANDFLASH_ENABLE() 				(PDDATA &= ~CE_PIN)
#define NANDFLASH_DISABLE() 			(PDDATA |= CE_PIN)
#define NANDFLASH_READY() 	    		(PDDATA & READY_BUSY_PIN)

#define PFLASH			        		0x13000060
#define NOERR			        		0x00

#define WRITE_BYTE(val)					(*((volatile unsigned char *)PFLASH) = val)
#define READ_BYTE() 		    		(*((volatile unsigned char *)PFLASH))

#define WRITE_CMD(val)  {PDDATA |= CMD_LATCH_PIN; WRITE_BYTE(val); PDDATA &= ~CMD_LATCH_PIN;}		


#endif

⌨️ 快捷键说明

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