📄 nandflash.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 + -