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

📄 nandflash.h

📁 WINCE4.25.0下的NANDFLASH驱动2k大页面
💻 H
字号:

#define d0 0
#define d1 1
#define d2 2
#define d3 3
#define d4 4
#define d5 5
#define d6 6
#define d7 7
#define rb 16
#define re 20
#define ce 17
#define cle 19
#define ale 28
#define we 29
#define pf_out 1
#define pf_in 0
#define setdata1 1
#define setdata0 0
#define set_dir_in 0
#define set_dir_out 1


#define  pNAND_COMMAND_REG   (volatile unsigned short *)FIO0_FLAG_D
#define  pNAND_ADDRESS_REG   (volatile unsigned short *)FIO0_FLAG_D
#define  pNAND_DATA_REG      (volatile unsigned short *)FIO0_FLAG_D


#pragma pack(1)




int pf_direction(int pf, int pf_direction);
int pf_in_enable(int pf, int pf_direction);
int pf_outset(int pf, int setdata);
int pf_set(int pf);
int pf_clear(int pf);
bool nandflash_cle_on();
bool nandflash_cle_off();
bool nandflash_ce_on();
bool nandflash_ce_off();
bool nandflash_we_on();
bool nandflash_we_off();
bool nandflash_ale_on();
bool nandflash_ale_off();
bool nandflash_re_on();
bool nandflash_re_off();
bool nandflash_rb_on();
bool nandflash_rb_off();
void data_thran_dir(int set_dir);
void delay(int time);

int nandflash_init();  //初始化pf为输出,返回0出错
bool nandflash_exit();
void create_initial_invalid_block_table(); //无效模块初始化设置
unsigned int set_block_address(unsigned int Block_Address ,int block_count);
bool check_is_invalid_block(unsigned int Block_Address);
unsigned char check_block_read(int NAND_Addr);

void write_command(unsigned char command); //写命令
void write_flash_command(unsigned char write_data);

bool nd_block_erase(unsigned int Block_Address); //檫除模块数据
bool Page_data_write(unsigned int Block_Address,unsigned short Page_Address,unsigned char *psrc);//页写数据
bool Page_data_read(unsigned int Block_Address,unsigned short Page_Address,unsigned char *psrc);//页读数据

void write_addr(int nand_addr);//写地址
void write_flash_addr(unsigned char write_data);

bool Wait_NAND_RADY(int pf);
bool NAND_Finish(int pf);
unsigned char statue_read(void);
unsigned char ReadByte(void);


typedef struct Invalid_Block{
	int bad_block;
	struct Invalid_Block *next;	
}BAD_BLOCK;

struct Invalid_Block_Table{
	struct Invalid_Block value;
};

struct NAND_Address{               //地址表中的地址结构	
    struct NAND_Address *pre;
    struct NAND_Address *next;
	unsigned int value;
    unsigned char NAND_Address_A0_A7;
   	unsigned char NAND_Address_A8_A11;
	unsigned char NAND_Address_A12_A19;
   	unsigned char NAND_Address_A20_A27;
	unsigned char NAND_Address_A28;
	};

struct NAND_Address_Table{//初始化时就得到的地址表
	   struct	NAND_Address current;
    	};



//char nanda = 0;
//volatile char * const nandflash = &(nanda);



⌨️ 快捷键说明

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