#ifndef __W25QXX_H #define __W25QXX_H #include "hc32_ddl.h" ////////////////////////////////////////////////////////////////////////////////// //This program is for educational purposes only, without the author's permission, may not be used for any other purpose //ALIENTEK STM32F4 Explorer Board //W25QXX Driver code //Hot Atomic @ALIENTEK //Forum: www.openedv.com //Date modified: 2014/5/6 //Version: V1.0 //All rights reserved pirated reserved. //Copyright(C) Guangzhou wing electronic technology limited company 2009-2019 //All rights reserved ////////////////////////////////////////////////////////////////////////////////// //W25X/Q series chip list //W25Q80 ID 0XEF13 //W25Q16 ID 0XEF14 //W25Q32 ID 0XEF15 //W25Q64 ID 0XEF16 //W25Q128 ID 0XEF17 #define W25Q40 0XEF12 #define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 #define SPI_FLASH_ADDR (0x00000000) #define SPI_FLASH_LAST_64K_BLOCK (0x00070000) #define SPI_FLASH_LAST_32K_BLOCK (0x00078000) #define SPI_FLASH_LAST_4K_SECTOR (0x0007F000) #define SPI_FLASH_BLOCK_SIZE (0X10000) #define SPI_FLASH_SECTOR_SIZE (0X1000) #define SPI_FLASH_PAGESIZE (0x100) // 256 bytes #define FLASH_DUMMY_BYTE_VALUE (0xffu) #define FLASH_BUSY_BIT_MASK (0x01u) extern uint16_t W25QXX_TYPE; //Define W25QXX chips ////////////////////////////////////////////////////////////////////////////////// //Instruction list #define W25X_WriteEnable 0x06 #define W25X_WriteDisable 0x04 #define W25X_ReadStatusReg 0x05 #define W25X_WriteStatusReg 0x01 #define W25X_ReadData 0x03 #define W25X_FastReadData 0x0B #define W25X_FastReadDual 0x3B #define W25X_PageProgram 0x02 #define W25X_BlockErase 0xD8 #define W25X_SectorErase 0x20 #define W25X_ChipErase 0xC7 #define W25X_PowerDown 0xB9 #define W25X_ReleasePowerDown 0xAB #define W25X_DeviceID 0xAB #define W25X_ManufactDeviceID 0x90 #define W25X_JedecDeviceID 0x9F void W25QXX_Init(void); uint16_t W25QXX_ReadID(void); //Read FLASH ID uint8_t W25QXX_ReadSR(void); //Read status register void W25QXX_Write_SR(uint8_t sr); //Write status register void W25QXX_Write_Enable(void); //Write enable void W25QXX_Write_Disable(void); //Write-protect void W25QXX_Write_NoCheck(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite); void W25QXX_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead); //Read Flash void W25QXX_Write(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);//Write Flash void W25QXX_Erase_Chip(void); //All erase void W25QXX_Erase_Sector(uint32_t Dst_Addr); //Sector erase void W25QXX_Wait_Busy(void); //Waiting for a free void W25QXX_PowerDown(void); //Enter the power off mode void W25QXX_WAKEUP(void); //Wake up #endif /*******************(C)COPYRIGHT 2022 AMG ********************END OF FILE******/