nand.h
上传用户:kylngs
上传日期:2022-05-06
资源大小:5k
文件大小:2k
- #ifndef NAND_DEBUG
- #define NAND_DEBUG
- #endif
- #undef NAND_DEBUG
- /*需要打印时宏定义为DEBUG_PRINT,不需要打印调试信息时宏定义为NoDEBUG_PRINT,是一个空函数*/
- #ifdef NAND_DEBUG
- #define DEBUG_PRINT printf
- #else
- #define DEBUG_PRINT NoDEBUG_PRINT
- #endif/*DEBUG*/
- /*需要打印错误信息时宏定义为ERROR_PRINT,不需要打印错误信息时宏定义为NoERROR_PRINT,是一个空函数*/
- #define ERROR_PRINT printf
- /*硬件连接信息
- */
- //Flash基地址 需要在hwinit.c中对相应的片选信号进行定义
- //如果Flash与其他芯片共用同一个CPU的/CS信号,而通过使用地址线连接芯片片选信号/CE进行区分,
- //那么相应的地址应该做出相应的改变。
- //如Arcnet与Flash公用CS1,Acrnet片选接A7,Flash片选接A8,那么Flash基地址保证A7为高,A8为低,例如0x30000080
- #define FLASH_ADDRESS 0x30000000
- #define FLASH_COMMAND *(char*)(FLASH_ADDRESS|2)
- #define DATA_ADDRESS *(char*)(FLASH_ADDRESS|1)
- #define FLASH_DATA *(char*)(FLASH_ADDRESS)
- #define PAGES_PER_BLOCK 64 /*每块64页*/
- #define BLOCKS_PER_CHIP 4096 /*4096块*/
- #define PAGE_SIZE 2048 /*每页2048字节*/
- #define SPARE_SIZE 64 /*空闲区64字节*/
- #define PAGE_SIZE_BITS 11 /*每页2048字节=2^11字节*/
- #define BLOCK_SIZE_BITS 17 /*每块2048*64字节=2^17字节*/
- #define PAGE_MASK ((PAGE_SIZE<<1)-1)/*页地址屏蔽*/
- #define BLOCK_MASK ((1L<<(BLOCK_SIZE_BITS+1))-1)/*块地址屏蔽*/
- #define CHIP_MASK (((BLOCKS_PER_CHIP*PAGE_SIZE)<<(PAGE_SIZE_BITS+1))-1)/*芯片地址屏蔽*/
- #define MAX_ADDRESS (0x3FFFF840) /* (( PAGES_PER_BLOCK*BLOCKS_PER_CHIP*(PAGE_SIZE*2) )-PAGE_SIZE)|0x40 */
- //使用LTPUODIS作为Busy信号的输入,需要先调用BusyGPIOInit()对GPIO进行初始化
- #define BUSY_IO (MCF_GPIO_PPDSDR_ETPU & 0x01)
- //写一页:
- int WriteOnePage(unsigned long Address, unsigned int Length, unsigned char *buffer);
- //读一页:
- int ReadOnePage(unsigned long Address, unsigned int Length, unsigned char *buffer);
- //多页连续读:
- int NandMTDRead(unsigned long Address,unsigned char *buffer,unsigned int Length,unsigned int modes);
- //多页连续写:
- int NandMTDWrite(unsigned long Address,unsigned char *buffer,unsigned int Length,unsigned int modes);
- //擦除函数:
- int NandMTDErase(unsigned int BlockNo,unsigned int BlocksToErase);
- //GPIO初始化:
- void BusyGPIOInit(void);
- //片选信号初始化,建议将函数内容复制到hwinit.c的mcf523x_cs_init()函数中进行统一配置
- void NandFlashCSConfig(void);