#ifndef __W25QXX_H #define __W25QXX_H #include "main.h" //W25X系列/Q系列芯片列表 ID码 #define W25Q80 0xEF13 #define W25Q16 0xEF14 #define W25Q32 0xEF15 #define W25Q64 0xEF16 #define W25Q128 0xEF17 #define W25Q256 0xEF18 #define W25Q128_FLASH_SIZE 0x01000000 #define W25Q128_ADDR_BIT_NUM 24 #define NOR_FLASH_SIZE W25Q128_FLASH_SIZE #define NOR_PAGE_SIZE 0x100 extern unsigned short W25QXX_TYPE; //定义W25QXX芯片型号 ////////////////////////////////////////////////////////////////////////////////// //指令表 #define W25Qx_CMD_Reset_Enble 0x66 #define W25Qx_CMD_Reset_Memory 0x99 #define W25Qx_CMD_ManufactDeviceID 0x90 #define W25Qx_CMD_ReadStatusReg1 0x05 #define W25Qx_CMD_ReadStatusReg2 0x35 #define W25Qx_CMD_ReadStatusReg3 0x15 #define W25Qx_CMD_WriteStatusReg1 0x01 #define W25Qx_CMD_WriteStatusReg2 0x31 #define W25Qx_CMD_WriteStatusReg3 0x11 #define W25Qx_CMD_WriteEnable 0x06 #define W25Qx_CMD_WriteDisable 0x04 #define W25Qx_CMD_ChipErase 0x60 #define W25Qx_CMD_SectorErase_4K 0x20 #define W25Qx_CMD_SectorErase_32K 0x52 #define W25Qx_CMD_SectorErase_64K 0xD8 #define W25Qx_CMD_Quad_PageProgram 0x32 #define W25Qx_CMD_Quad_Read 0x6B /* #define W25X_WriteEnable 0x06 #define W25X_WriteDisable 0x04 #define W25X_ReadStatusReg1 0x05 #define W25X_ReadStatusReg2 0x35 #define W25X_ReadStatusReg3 0x15 #define W25X_WriteStatusReg1 0x01 #define W25X_WriteStatusReg2 0x31 #define W25X_WriteStatusReg3 0x11 #define W25X_ReadData 0x03 #define W25X_FastReadData 0x0B #define W25X_FastReadDual 0x3B #define W25X_FastReadQuad 0x6B #define W25X_PageProgram 0x32 #define W25X_BlockErase 0xD8 #define W25X_SectorErase 0x20 #define W25X_ChipErase 0x60 #define W25X_PowerDown 0xB9 #define W25X_ReleasePowerDown 0xAB #define W25X_DeviceID 0xAB #define W25X_ManufactDeviceID 0x90 #define W25X_JedecDeviceID 0x9F #define W25X_Enable4ByteAddr 0xB7 #define W25X_Exit4ByteAddr 0xE9 #define W25X_EnterQPIMode 0x38 #define W25X_ExitQPIMode 0xFF */ extern unsigned short norflash_get_busy_flag[2]; extern unsigned short norflash_err_flag[2]; extern void W25QXX_Init(void); extern void W25QXX_Qspi_Enable(void); extern void W25QXX_Qspi_Disable(void); extern unsigned short W25QXX_ReadID(void); extern unsigned char W25QXX_ReadSR(unsigned char regno); extern void W25QXX_Write_SR(unsigned char regno,unsigned char sr); extern void W25QXX_Write_Enable(void); extern void W25QXX_Write_Disable(void); extern void W25QXX_Write_NoCheck(unsigned char* pBuffer,unsigned int WriteAddr,unsigned short NumByteToWrite);//写flash,不校验 extern void W25QXX_Read(unsigned char* pBuffer,unsigned int ReadAddr,unsigned short NumByteToRead); extern void W25QXX_Write(unsigned char* pBuffer,unsigned int WriteAddr,unsigned short NumByteToWrite); extern void W25QXX_Write_Byte_no_wait(unsigned char* pBuffer,unsigned int WriteAddr,unsigned short NumByteToWrite); extern void W25QXX_Erase_Chip(void); extern void W25QXX_Erase_Chip_no_wait(void); extern void W25QXX_Erase_Sector(unsigned int addr); extern void W25QXX_Erase_Sector_4k_no_wait(unsigned int addr); extern void W25QXX_Erase_Sector_32k_no_wait(unsigned int addr); extern void W25QXX_Erase_Sector_64k_no_wait(unsigned int addr); extern void W25QXX_Wait_Busy(void); extern void W25QXX_Reset(void); #endif