2025-06-27 00:32:57 +08:00
|
|
|
|
#ifndef __FLASH_H
|
|
|
|
|
|
#define __FLASH_H
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>ѧϰʹ<CFB0>ã<EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>;
|
|
|
|
|
|
//ALIENTEKս<4B><D5BD>STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
//W25Q64 <20><><EFBFBD><EFBFBD>
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD>@ALIENTEK
|
|
|
|
|
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̳:www.openedv.com
|
|
|
|
|
|
//<2F><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD>:2012/9/9
|
|
|
|
|
|
//<2F>汾<EFBFBD><E6B1BE>V1.0
|
|
|
|
|
|
//<2F><>Ȩ<EFBFBD><C8A8><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>
|
|
|
|
|
|
//Copyright(C) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿƼ<D3BF><C6BC><EFBFBD><EFBFBD><EFBFBD>˾ 2009-2019
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//All rights reserved
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//W25Xϵ<58><CFB5>/Qϵ<51><CFB5>оƬ<D0BE>б<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//W25Q80 ID 0XEF13
|
|
|
|
|
|
//W25Q16 ID 0XEF14
|
|
|
|
|
|
//W25Q32 ID 0XEF15
|
|
|
|
|
|
//W25Q32 ID 0XEF16
|
|
|
|
|
|
#define W25Q80 0XEF13
|
|
|
|
|
|
#define W25Q16 0XEF14
|
|
|
|
|
|
#define W25Q32 0XEF15
|
|
|
|
|
|
#define W25Q64 0XEF16
|
|
|
|
|
|
#define W25Q128 0XEF17
|
|
|
|
|
|
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
#define SPI_FLASH_TYPE SPI_Flash_GetType() //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD>flashоƬ<D0BE>ͺ<EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
2025-07-05 19:47:28 +08:00
|
|
|
|
//ָ<><D6B8><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
#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 SPI_Flash_Init(void);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
u16 SPI_Flash_ReadID(void); //<2F><>ȡFLASH ID
|
|
|
|
|
|
u8 SPI_Flash_ReadSR(void); //<2F><>ȡ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|
|
|
|
|
void SPI_FLASH_Write_SR(u8 sr); //д״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|
|
|
|
|
void SPI_FLASH_Write_Enable(void); //дʹ<D0B4><CAB9>
|
|
|
|
|
|
void SPI_FLASH_Write_Disable(void); //д<><D0B4><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
void SPI_Flash_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u32 NumByteToWrite);
|
2025-07-05 19:47:28 +08:00
|
|
|
|
void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u32 NumByteToRead); //<2F><>ȡflash
|
|
|
|
|
|
void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u32 NumByteToWrite);//д<><D0B4>flash
|
|
|
|
|
|
void SPI_Flash_Erase_Chip(void); //<2F><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SPI_Flash_Erase_Sector(u32 Dst_Addr);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SPI_Flash_Wait_Busy(void); //<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void SPI_Flash_PowerDown(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
|
void SPI_Flash_WAKEUP(void); //<2F><><EFBFBD><EFBFBD>
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u16 SPI_Flash_GetType (void);
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
|
}
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|