SWM341_sfc.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef __SWM341_SFC_H__
  2. #define __SWM341_SFC_H__
  3. typedef struct {
  4. uint8_t ClkDiv; //SPI_SCLK是系统时钟的几分频,取值:SFC_CLKDIV_1、SFC_CLKDIV_2、SFC_CLKDIV_4、SFC_CLKDIV_8
  5. uint8_t Cmd_Read; //读取SPI Flash用的指令码
  6. uint8_t Width_Read; //读取SPI Flash时数据线位数,取值SFC_RDWIDTH_1、SFC_RDWIDTH_2、SFC_RDWIDTH_4
  7. uint8_t Cmd_PageProgram; //页编程SPI Flash用的指令码
  8. uint8_t Width_PageProgram; //页编程SPI Flash时数据线位数,取值SFC_PPWIDTH_1、SFC_PPWIDTH_4
  9. } SFC_InitStructure;
  10. #define SFC_CLKDIV_1 0
  11. #define SFC_CLKDIV_2 1
  12. #define SFC_CLKDIV_4 2
  13. #define SFC_CLKDIV_8 3
  14. #define SFC_RDWIDTH_1 0
  15. #define SFC_RDWIDTH_2 1
  16. #define SFC_RDWIDTH_4 2
  17. #define SFC_PPWIDTH_1 0
  18. #define SFC_PPWIDTH_4 1
  19. #define SFC_CMD_READ_JEDEC 0x9F
  20. #define SFC_CMD_ERASE_CHIP 0x60
  21. #define SFC_CMD_WRITE_ENABLE 0x06
  22. #define SFC_CMD_PAGE_PROGRAM 0x02
  23. #define SFC_CMD_ERASE_SECTOR 0x20
  24. #define SFC_CMD_ERASE_BLOCK32KB 0x52
  25. #define SFC_CMD_ERASE_BLOCK64KB 0xD8 //W25Q32
  26. #define SFC_CMD_READ_STATUS_REG1 0x05
  27. #define SFC_CMD_READ_STATUS_REG2 0x35
  28. #define SFC_CMD_READ_STATUS_REG3 0x15
  29. #define SFC_CMD_WRITE_STATUS_REG1 0x01
  30. #define SFC_CMD_WRITE_STATUS_REG2 0x31
  31. #define SFC_CMD_WRITE_STATUS_REG3 0x11
  32. #define SFC_STATUS_REG_BUSY_Pos 0
  33. #define SFC_STATUS_REG_QUAD_Pos 9
  34. void SFC_Init(SFC_InitStructure * initStruct);
  35. uint32_t SFC_ReadJEDEC(void);
  36. void SFC_Erase(uint32_t addr, uint8_t wait);
  37. void SFC_EraseEx(uint32_t addr, uint8_t cmd, uint8_t wait);
  38. void SFC_Write(uint32_t addr, uint32_t buff[], uint32_t cnt);
  39. void SFC_GPIOWrite(uint32_t addr, uint32_t buff[], uint32_t cnt);
  40. void SFC_Read(uint32_t addr, uint32_t buff[], uint32_t cnt);
  41. uint8_t SFC_ReadStatusReg(uint8_t cmd);
  42. void SFC_WriteStatusReg(uint8_t cmd, uint16_t reg);
  43. void SFC_QuadSwitch(uint8_t on);
  44. uint8_t SFC_QuadState(void);
  45. uint8_t SFC_FlashBusy(void);
  46. #endif //__SWM341_SFC_H__