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