w25qxx.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef __SPI_FLASH_H
  2. #define __SPI_FLASH_H
  3. #include "stm32f10x.h"
  4. //如果使用霸道开发板,把该宏配置成1 ,指南者配置成0
  5. #define USE_BD 1
  6. /**************************SPI参数定义********************************/
  7. #define FLASH_SPIx SPI2
  8. #define FLASH_SPI_APBxClock_FUN RCC_APB1PeriphClockCmd
  9. #define FLASH_SPI_CLK RCC_APB1Periph_SPI2
  10. #define FLASH_SPI_GPIO_APBxClock_FUN RCC_APB1PeriphClockCmd
  11. #define FLASH_SPI_SCK_PORT GPIOB
  12. #define FLASH_SPI_SCK_PIN GPIO_Pin_13
  13. #define FLASH_SPI_MOSI_PORT GPIOB
  14. #define FLASH_SPI_MOSI_PIN GPIO_Pin_15
  15. #define FLASH_SPI_MISO_PORT GPIOB
  16. #define FLASH_SPI_MISO_PIN GPIO_Pin_14
  17. #if (USE_BD ==1)
  18. #define FLASH_SPI_GPIO_CLK RCC_APB2Periph_GPIOB
  19. #define FLASH_SPI_CS_PORT GPIOD
  20. #define FLASH_SPI_CS_PIN GPIO_Pin_11
  21. #else
  22. #define FLASH_SPI_GPIO_CLK (RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC)
  23. #define FLASH_SPI_CS_PORT GPIOC
  24. #define FLASH_SPI_CS_PIN GPIO_Pin_0
  25. #endif
  26. //CS引脚配置
  27. #define FLASH_SPI_CS_HIGH GPIO_SetBits(FLASH_SPI_CS_PORT,FLASH_SPI_CS_PIN);
  28. #define FLASH_SPI_CS_LOW GPIO_ResetBits(FLASH_SPI_CS_PORT,FLASH_SPI_CS_PIN);
  29. /*等待超时时间*/
  30. #define SPIT_FLAG_TIMEOUT ((uint32_t)0x1000)
  31. #define SPIT_LONG_TIMEOUT ((uint32_t)(10 * SPIT_FLAG_TIMEOUT))
  32. /*信息输出*/
  33. #define FLASH_DEBUG_ON 0
  34. extern int uart_msg_send(u8 uartid, const char *buf, u32 buflen);
  35. #define FLASH_INFO(fmt,arg...) OTP_TRACE(fmt,##arg)//trace_otp_trace1(uart_msg_send, 4, fmt, ##arg);
  36. #define FLASH_ERROR(fmt,arg...) //printf("<<-FLASH-ERROR->> "fmt"\n",##arg)
  37. #define FLASH_DEBUG(fmt,arg...) //do{\
  38. // if(FLASH_DEBUG_ON)\
  39. // printf("<<-FLASH-DEBUG->> [%d]"fmt"\n",__LINE__, ##arg);\
  40. // }while(0)
  41. #define DUMMY 0x00
  42. #define READ_JEDEC_ID 0x9f
  43. #define ERASE_SECTOR 0x20
  44. #define READ_STATUS 0x05
  45. #define READ_DATA 0x03
  46. #define WRITE_ENABLE 0x06
  47. #define WRITE_DATA 0x02
  48. uint32_t SPI_FLASH_Read_ID(void);
  49. void SPI_FLASH_Erase_Sector(uint32_t addr);
  50. void SPI_FLASH_Read_Data(uint32_t addr,uint8_t *readBuff,uint32_t numByteToRead);
  51. void SPI_FLASH_Write_Data(uint32_t addr,uint8_t *writeBuff,uint32_t numByteToWrite);
  52. void SPI_FLASH_WaitForWriteEnd(void);
  53. //连续写入多字节
  54. void SPI_FLASH_Write_Datas(uint32_t addr,uint8_t *writeBuff,uint32_t numByteToWrite);
  55. #endif /* __SPI_FLASH_H */