📄 nand.h
字号:
#ifndef __LFN_NAND__H
#define ___LFN_NAND__H
#define NAND256W3A "Manufacturer ID:0x20,Chip ID:0x75(ST Micro NAND 256Mb 3,3V 8-bit)"
#define CLE 20
#define ALE 21
#define WP 22
#define RB 23
#define u8 unsigned char
#define u16 unsigned short
#define u32 unsigned int
typedef struct gpio_register{
volatile unsigned int or;
volatile unsigned int tc;
volatile unsigned int osh;
volatile unsigned int osl;
volatile unsigned int tsh;
volatile unsigned int tsl;
volatile unsigned int od;
volatile unsigned int ir;
volatile unsigned int ish;
volatile unsigned int isl;
}GPIO_REGISTER;
#define NAND_CTL_SETCLE 0x55
#define NAND_CTL_CLRCLE 0x56
#define NAND_CTL_SETALE 0x57
#define NAND_CTL_CLRALE 0x58
#define NAND_CTL_SETNCE 0x59
#define NAND_CTL_CLRNCE 0x5A
#define READ_A 0x00
#define READ_B 0x01
#define READ_C 0x50
#define READ_IC_SIGNATURE 0x90
#define READ_STATUS 0x70
#define PROGRAM_PAGE 0x80
#define COPY_BACK_PROGRAM 0x00
#define ERASE_BLOCK 0x60
#define RESET 0xFF
#define CONFIRM_ERASE 0xD0
#define CONFIRM_PROGRAM 0x10
struct nand_oobinfo {
u32 useecc;
u32 eccbytes;
u32 oobfree[8][2];
u32 eccpos[32];
};
struct nand_info{
u32 block;
u32 blocksize;
u32 pageperblock;
u32 byteperpage;
u32 page;
u32 offset;
};
void nand_control(int cmd);
int nand_init (void);
void nand_uninit(void);
u32 read_nand_id(void);
u32 nand_write_command(u32 command);
u32 nand_write_addr(u32 addr);
u8 nand_read_u8(void);
int nand_read_status(void);
int nand_ic_erase(void);
int nand_read_page(u32 addr,u8 *p);
u32 Busy(void);
int nand_write_page(u32 addr,u8 *p);
void delayt(u32 tm);
int nand_block_erase(u32 addr);
u32 nand_erase_addr(u32 addr);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -