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

📄 nand.h

📁 使用物理地址方式绕开mtd驱动进行nand flash的低级格式化和维护可以修复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 + -