nand.h
上传用户:kylngs
上传日期:2022-05-06
资源大小:5k
文件大小:2k
源码类别:

VxWorks

开发平台:

C/C++

  1. #ifndef NAND_DEBUG
  2.  #define NAND_DEBUG
  3. #endif
  4. #undef NAND_DEBUG
  5. /*需要打印时宏定义为DEBUG_PRINT,不需要打印调试信息时宏定义为NoDEBUG_PRINT,是一个空函数*/
  6. #ifdef NAND_DEBUG 
  7.  #define DEBUG_PRINT         printf
  8. #else
  9.  #define DEBUG_PRINT         NoDEBUG_PRINT
  10. #endif/*DEBUG*/
  11. /*需要打印错误信息时宏定义为ERROR_PRINT,不需要打印错误信息时宏定义为NoERROR_PRINT,是一个空函数*/
  12. #define ERROR_PRINT         printf
  13. /*硬件连接信息
  14. */
  15. //Flash基地址 需要在hwinit.c中对相应的片选信号进行定义
  16. //如果Flash与其他芯片共用同一个CPU的/CS信号,而通过使用地址线连接芯片片选信号/CE进行区分,
  17. //那么相应的地址应该做出相应的改变。
  18. //如Arcnet与Flash公用CS1,Acrnet片选接A7,Flash片选接A8,那么Flash基地址保证A7为高,A8为低,例如0x30000080
  19. #define FLASH_ADDRESS 0x30000000
  20. #define FLASH_COMMAND *(char*)(FLASH_ADDRESS|2)
  21. #define DATA_ADDRESS  *(char*)(FLASH_ADDRESS|1)
  22. #define FLASH_DATA    *(char*)(FLASH_ADDRESS)
  23. #define PAGES_PER_BLOCK     64          /*每块64页*/
  24. #define BLOCKS_PER_CHIP     4096        /*4096块*/
  25. #define PAGE_SIZE           2048        /*每页2048字节*/
  26. #define SPARE_SIZE          64          /*空闲区64字节*/
  27. #define PAGE_SIZE_BITS      11          /*每页2048字节=2^11字节*/
  28. #define BLOCK_SIZE_BITS     17          /*每块2048*64字节=2^17字节*/
  29. #define PAGE_MASK           ((PAGE_SIZE<<1)-1)/*页地址屏蔽*/
  30. #define BLOCK_MASK          ((1L<<(BLOCK_SIZE_BITS+1))-1)/*块地址屏蔽*/
  31. #define CHIP_MASK           (((BLOCKS_PER_CHIP*PAGE_SIZE)<<(PAGE_SIZE_BITS+1))-1)/*芯片地址屏蔽*/
  32. #define MAX_ADDRESS         (0x3FFFF840) /* (( PAGES_PER_BLOCK*BLOCKS_PER_CHIP*(PAGE_SIZE*2) )-PAGE_SIZE)|0x40 */
  33. //使用LTPUODIS作为Busy信号的输入,需要先调用BusyGPIOInit()对GPIO进行初始化
  34. #define BUSY_IO             (MCF_GPIO_PPDSDR_ETPU & 0x01)
  35. //写一页:
  36. int WriteOnePage(unsigned long Address, unsigned int Length, unsigned char *buffer);
  37. //读一页:
  38. int ReadOnePage(unsigned long Address, unsigned int Length, unsigned char *buffer);
  39. //多页连续读:
  40. int NandMTDRead(unsigned long Address,unsigned char *buffer,unsigned int Length,unsigned int modes);
  41. //多页连续写:
  42. int NandMTDWrite(unsigned long Address,unsigned char *buffer,unsigned int Length,unsigned int modes);
  43. //擦除函数:
  44. int NandMTDErase(unsigned int BlockNo,unsigned int BlocksToErase);
  45. //GPIO初始化:
  46. void BusyGPIOInit(void);
  47. //片选信号初始化,建议将函数内容复制到hwinit.c的mcf523x_cs_init()函数中进行统一配置
  48. void NandFlashCSConfig(void);