#include "dev_spi_conf.h" #ifdef USE_OBJ_SOFT_W25QXX #ifndef OBJ_SOFT_W25QXX_H #define OBJ_SOFT_W25QXX_H #include "stm32f7xx.h" #include //W25X系列/Q系列芯片列表 //W25Q80 ID 0XEF13 //W25Q16 ID 0XEF14 //W25Q32 ID 0XEF15 //W25Q64 ID 0XEF16 //W25Q128 ID 0XEF17 //W25Q256 ID 0XEF18 //W25Q512 ID 0XEF19 #define W25Q10 0XEF10 #define W25Q20 0XEF11 #define W25Q40 0XEF12 #define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 #define W25Q256 0XEF18 #define W25Q512 0XEF19 ////////////////////////////////////////////////////////////////////////////////// //指令表 #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_WriteSrEnable 0x50 #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 #define W25X_Enable4ByteAddr 0xB7 #define W25X_Exit4ByteAddr 0xE9 typedef struct { uint16_t W25Q_TYPE; uint16_t W25Q_OK; uint8_t UniqID[8]; uint16_t PageSize; uint32_t PageCount; uint32_t SectorSize; uint32_t SectorCount; uint32_t BlockSize; uint32_t BlockCount; // so block trong chip flash uint32_t CapacityInKiloByte; uint8_t StatusRegister[3]; }w25qxx_object_t; extern w25qxx_object_t w25qxx_obj ; void W25QXX_Init(void); uint16_t W25QXX_ReadID(void); //读取FLASH ID uint8_t W25QXX_ReadSR(uint8_t regno); //读取状态寄存器 void W25QXX_4ByteAddr_Enable(void); //使能4字节地址模式 void W25QXX_Write_SR(uint8_t regno,uint8_t sr); //写状态寄存器 void W25QXX_Write_Enable(void); //写使能 void W25QXX_Write_Disable(void); //写保护 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); //读取flash void W25QXX_Write(uint8_t * pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);//写入flash void W25QXX_Erase_Chip(void); //整片擦除 void W25QXX_Erase_Sector(uint32_t Dst_Addr); //扇区擦除 void W25QXX_Wait_Busy(void); //等待空闲 void W25QXX_PowerDown(void); //进入掉电模式 void W25QXX_WAKEUP(void); //唤醒 void W25QXX_Write_UnProtect(void); uint16_t W25QXX_ID_OK(void); #endif #endif //---------------------------USE_OBJ_SOFT_W25QXX---------------------//