123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- #include "dev_spi_conf.h"
- #ifdef USE_OBJ_SOFT_W25QXX
- #ifndef OBJ_SOFT_W25QXX_H
- #define OBJ_SOFT_W25QXX_H
- #include "stm32f7xx.h"
- #include <stdio.h>
- //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---------------------//
|