#ifndef __BSP_W25QXX_H #define __BSP_W25QXX_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32wlxx.h" #include "spi.h" #include "main.h" #define PRINTF_DEBUG printf #define W25Q80 0XEF13 #define W25Q16 0XEF14 #define W25Q32 0XEF15 #define W25Q64 0XEF16 #define W25Q128 0XEF17 //W25Q128一共是16M,这里只分出来了12M使用,是为了后续的测试USB读卡器做准备 #define W25Q128FV_FLASH_SIZE (1024*1024*12) //定义了用户使用的空间大小 #define W25Q128FV_SECTOR_SIZE 65536 //一个块的大小是64KB*1024 = 65536byte #define W25Q128FV_SUBSECTOR_SIZE 4096 //一个扇区的大小是4KB*1024= 4096byte #define W25Q128FV_PAGE_SIZE 256 //单次写入最多字节数 /** * @brief W25Q128FV Commands */ #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 //这个地方的片选信号,是最后一个自定义的片选IO的引脚 #define W25Qx_Enable() HAL_GPIO_WritePin(W25Q_CS_GPIO_Port, W25Q_CS_Pin, GPIO_PIN_RESET) #define W25Qx_Disable() HAL_GPIO_WritePin(W25Q_CS_GPIO_Port, W25Q_CS_Pin, GPIO_PIN_SET) void BSP_W25QXX_Init(void); uint16_t BSP_W25QXX_ReadID(void); //读取FLASH ID uint8_t BSP_W25QXX_ReadSR(void); //读取状态寄存器 void BSP_W25QXX_Write_SR(uint8_t sr); //写状态寄存器 void BSP_W25QXX_Write_Enable(void); //写使能 void BSP_W25QXX_Write_Disable(void); //写保护 void BSP_W25QXX_Write_NoCheck(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite); void BSP_W25QXX_Read(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead); //读取flash void BSP_W25QXX_Write(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);//写入flash void BSP_W25QXX_Erase_Chip(void); //整片擦除 void BSP_W25QXX_Erase_Sector(uint32_t Dst_Addr); //扇区擦除 void BSP_W25QXX_Wait_Busy(void); //等待空闲 void BSP_W25QXX_PowerDown(void); //进入掉电模式 void BSP_W25QXX_WAKEUP(void); //唤醒 #ifdef __cplusplus } #endif #endif /* __W25Qx_H */