Files
LFP_48V_mBMS_FW/APP_R3323/App/Hardware/w25qxx.h

81 lines
2.9 KiB
C

#ifndef __W25QXX_H
#define __W25QXX_H
#include "hc32_ddl.h"
//////////////////////////////////////////////////////////////////////////////////
//This program is for educational purposes only, without the author's permission, may not be used for any other purpose
//ALIENTEK STM32F4 Explorer Board
//W25QXX Driver code
//Hot Atomic @ALIENTEK
//Forum: www.openedv.com
//Date modified: 2014/5/6
//Version: V1.0
//All rights reserved pirated reserved.
//Copyright(C) Guangzhou wing electronic technology limited company 2009-2019
//All rights reserved
//////////////////////////////////////////////////////////////////////////////////
//W25X/Q series chip list
//W25Q80 ID 0XEF13
//W25Q16 ID 0XEF14
//W25Q32 ID 0XEF15
//W25Q64 ID 0XEF16
//W25Q128 ID 0XEF17
#define W25Q40 0XEF12
#define W25Q80 0XEF13
#define W25Q16 0XEF14
#define W25Q32 0XEF15
#define W25Q64 0XEF16
#define W25Q128 0XEF17
#define SPI_FLASH_ADDR (0x00000000)
#define SPI_FLASH_LAST_64K_BLOCK (0x00070000)
#define SPI_FLASH_LAST_32K_BLOCK (0x00078000)
#define SPI_FLASH_LAST_4K_SECTOR (0x0007F000)
#define SPI_FLASH_BLOCK_SIZE (0X10000)
#define SPI_FLASH_SECTOR_SIZE (0X1000)
#define SPI_FLASH_PAGESIZE (0x100) // 256 bytes
#define FLASH_DUMMY_BYTE_VALUE (0xffu)
#define FLASH_BUSY_BIT_MASK (0x01u)
extern uint16_t W25QXX_TYPE; //Define W25QXX chips
//////////////////////////////////////////////////////////////////////////////////
//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 W25QXX_Init(void);
uint16_t W25QXX_ReadID(void); //Read FLASH ID
uint8_t W25QXX_ReadSR(void); //Read status register
void W25QXX_Write_SR(uint8_t sr); //Write status register
void W25QXX_Write_Enable(void); //Write enable
void W25QXX_Write_Disable(void); //Write-protect
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); //Read Flash
void W25QXX_Write(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);//Write Flash
void W25QXX_Erase_Chip(void); //All erase
void W25QXX_Erase_Sector(uint32_t Dst_Addr); //Sector erase
void W25QXX_Wait_Busy(void); //Waiting for a free
void W25QXX_PowerDown(void); //Enter the power off mode
void W25QXX_WAKEUP(void); //Wake up
#endif
/*******************(C)COPYRIGHT 2022 AMG ********************END OF FILE******/