w25qxx.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #ifndef __FLASH_H
  2. #define __FLASH_H
  3. #include "sys.h"
  4. //////////////////////////////////////////////////////////////////////////////////
  5. //本程序只供学习使用,未经作者许可,不得用于其它任何用途
  6. //ALIENTEK战舰STM32开发板
  7. //W25Q64 代码
  8. //正点原子@ALIENTEK
  9. //技术论坛:www.openedv.com
  10. //修改日期:2012/9/9
  11. //版本:V1.0
  12. //版权所有,盗版必究。
  13. //Copyright(C) 广州市星翼电子科技有限公司 2009-2019
  14. //All rights reserved
  15. //////////////////////////////////////////////////////////////////////////////////
  16. //W25X系列/Q系列芯片列表
  17. //W25Q80 ID 0XEF13
  18. //W25Q16 ID 0XEF14
  19. //W25Q32 ID 0XEF15
  20. //W25Q64 ID 0XEF16
  21. //W25Q128 ID 0XEF17
  22. #define W25Q80 0XEF13
  23. #define W25Q16 0XEF14
  24. #define W25Q32 0XEF15
  25. #define W25Q64 0XEF16
  26. #define W25Q128 0XEF17
  27. extern u16 W25QXX_TYPE; //定义W25QXX芯片型号
  28. #define W25QXX_CS PBout(12) //W25QXX的片选信号
  29. ////////////////////////////////////////////////////////////////////////////
  30. //指令表
  31. #define W25X_WriteEnable 0x06
  32. #define W25X_WriteDisable 0x04
  33. #define W25X_ReadStatusReg 0x05
  34. #define W25X_WriteStatusReg 0x01
  35. #define W25X_ReadData 0x03
  36. #define W25X_FastReadData 0x0B
  37. #define W25X_FastReadDual 0x3B
  38. #define W25X_PageProgram 0x02
  39. #define W25X_BlockErase 0xD8
  40. #define W25X_SectorErase 0x20
  41. #define W25X_ChipErase 0xC7
  42. #define W25X_PowerDown 0xB9
  43. #define W25X_ReleasePowerDown 0xAB
  44. #define W25X_DeviceID 0xAB
  45. #define W25X_ManufactDeviceID 0x90
  46. #define W25X_JedecDeviceID 0x9F
  47. void W25QXX_Init(void);
  48. u16 W25QXX_ReadID(void); //读取FLASH ID
  49. u8 W25QXX_ReadSR(void); //读取状态寄存器
  50. void W25QXX_Write_SR(u8 sr); //写状态寄存器
  51. void W25QXX_Write_Enable(void); //写使能
  52. void W25QXX_Write_Disable(void); //写保护
  53. void W25QXX_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite);
  54. void W25QXX_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead); //读取flash
  55. void W25QXX_Write(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite);//写入flash
  56. void W25QXX_Erase_Chip(void); //整片擦除
  57. void W25QXX_Erase_Sector(u32 Dst_Addr); //扇区擦除
  58. void W25QXX_Wait_Busy(void); //等待空闲
  59. void W25QXX_PowerDown(void); //进入掉电模式
  60. void W25QXX_WAKEUP(void); //唤醒
  61. void W25QXX_Read(u8* pBuffer,u32 ReadAddr,u16 NumByteToRead) ;
  62. void W25QXX_Write_Page(u8* pBuffer,u32 WriteAddr,u16 NumByteToWrite);
  63. #endif