/* * Flash.h * * Created on: 2024年5月16日 * Author: 34509 */ #ifndef HARDWARE_SPI_FLASH_H_ #define HARDWARE_SPI_FLASH_H_ #include "ch32l103.h" /***************************************** *@Note Winbond W25Qxx SPIFLASH pins: CS —— PB12(SPI2_NSS) DO —— PB14(SPI2_MISO) WP —— 3.3V DI —— PB15(SPI2_MOSI) CLK —— PB13(SPI2_SCK) HOLD —— 3.3V *******************************************/ #define RCC_APB2Periph_GPIOX RCC_PB2Periph_GPIOB #define RCC_APB1Periph_SPIX RCC_PB1Periph_SPI2 #define CS_PIN GPIO_Pin_12 #define CS_GPIO GPIOB #define DO_PIN GPIO_Pin_14 #define DO_GPIO GPIOB #define DI_PIN GPIO_Pin_15 #define DI_GPIO GPIOB #define CLK_PIN GPIO_Pin_13 #define CLK_GPIO GPIOB #define SPIX SPI2 /* Winbond SPI Falsh ID */ #define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 /* Winbond SPIFalsh 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 SPI_Flash_Init(void); u8 SPI_ReadWriteByte(u8 TxData); u8 SPI_Flash_ReadSR(void); void SPI_FLASH_Write_SR(u8 sr); void SPI_Flash_Wait_Busy(void); void SPI_FLASH_Write_Enable(void); void SPI_FLASH_Write_Disable(void); u16 SPI_Flash_ReadID(void); void SPI_Flash_Erase_Sector(u32 Dst_Addr); void SPI_Flash_Read(u8* pBuffer,u32 ReadAddr,u16 size); void SPI_Flash_Write_Page(u8* pBuffer,u32 WriteAddr,u16 size); void SPI_Flash_Write_NoCheck(u8* pBuffer,u32 WriteAddr,u16 size); void SPI_Flash_Write(u8* pBuffer,u32 WriteAddr,u16 size); void SPI_Flash_Erase_Chip(void); void SPI_Flash_PowerDown(void); void SPI_Flash_WAKEUP(void); void SPI_Flash_TEST(void); #endif /* HARDWARE_SPI_FLASH_H_ */