27#ifndef Z_QFLASH_W25QXXX_H_
28#define Z_QFLASH_W25QXXX_H_
48#define FLASH_QSPI_PORT hqspi
58#define EXT_FLASH_QSPI_DMA_MODE
99#define EXT_FLASH_PAGE_SIZE 0x0100
100#define EXT_FLASH_SECTOR_SIZE 0x1000
101#define EXT_FLASH_BLOCK_SIZE 0x00010000
102#define EXT_FLASH_SIZE 0x04000000
103#define EXT_FLASH_PAGE_NUM (EXT_FLASH_SIZE / EXT_FLASH_PAGE_SIZE)
104#define EXT_FLASH_SECTOR_NUM (EXT_FLASH_SIZE / EXT_FLASH_SECTOR_SIZE)
105#define EXT_FLASH_BLOCK_NUM (EXT_FLASH_SIZE / EXT_FLASH_BLOCK_SIZE)
161#define QFLASH_INSTRUCTION_MODE QSPI_INSTRUCTION_1_LINE
162#define QFLASH_ADDRESS_SIZE QSPI_ADDRESS_32_BITS
163#define QFLASH_ALTERNATE_BYTE_MODE QSPI_ALTERNATE_BYTES_NONE
164#define QFLASH_DDR_MODE QSPI_DDR_MODE_DISABLE
165#define QFLASH_DDR_HOLD_HALF_CYCLE QSPI_DDR_HHC_ANALOG_DELAY
166#define QFLASH_SIOO_MODE QSPI_SIOO_INST_EVERY_CMD
167#define QFLASH_DUMMY_CYCLES 0
169#define QFLASH_DEF_TIMEOUT HAL_QSPI_TIMEOUT_DEFAULT_VALUE
170#define QFLASH_BSY_TIMEOUT 400000
174#define QFLASH_ADDRESS_MODE QSPI_ADDRESS_1_LINE
175#define QFLASH_DATA_MODE QSPI_DATA_1_LINE
177#define QFLASH_READ_COMMAND W25_FREAD
178#define QFLASH_READ_DUMMYC 8
179#define QFLASH_ALT_BYTES 0xFF
180#define QFLASH_ALT_BYTES_S QSPI_ALTERNATE_BYTES_8_BITS
181#define QFLASH_ALT_BYTES_M QSPI_ALTERNATE_BYTES_NONE
183#define QFLASH_WRITE_COMMAND W25_PAGE_P
184#define QFLASH_WDATA_MODE QSPI_DATA_1_LINE
186#elif defined FLASH_QMODE_2
188#define QFLASH_ADDRESS_MODE QSPI_ADDRESS_2_LINES
189#define QFLASH_DATA_MODE QSPI_DATA_2_LINES
191#define QFLASH_READ_COMMAND W25_FREAD_DUAL
192#define QFLASH_READ_DUMMYC 0
193#define QFLASH_ALT_BYTES 0xFF
194#define QFLASH_ALT_BYTES_S QSPI_ALTERNATE_BYTES_8_BITS
195#define QFLASH_ALT_BYTES_M QSPI_ALTERNATE_BYTES_2_LINES
197#define QFLASH_WRITE_COMMAND W25_PAGE_P
198#define QFLASH_WDATA_MODE QSPI_DATA_1_LINE
200#elif defined FLASH_QMODE_4
202#define QFLASH_ADDRESS_MODE QSPI_ADDRESS_4_LINES
203#define QFLASH_DATA_MODE QSPI_DATA_4_LINES
205#define QFLASH_READ_COMMAND W25_FREAD_QUAD
206#define QFLASH_READ_DUMMYC 4
207#define QFLASH_ALT_BYTES 0xFF
208#define QFLASH_ALT_BYTES_S QSPI_ALTERNATE_BYTES_8_BITS
209#define QFLASH_ALT_BYTES_M QSPI_ALTERNATE_BYTES_4_LINES
211#define QFLASH_WRITE_COMMAND W25_FPAGE_P_QUAD_4B
212#define QFLASH_WDATA_MODE QSPI_DATA_4_LINES
223#define W25_RESET_EN 0x66
224#define W25_RESET 0x99
225#define W25_W_ENABLE 0x06
227#define W25_FREAD 0x0B
228#define W25_FREAD_DUAL 0xBB
229#define W25_FREAD_QUAD 0xEB
230#define W25_PAGE_P 0x02
231#define W25_FPAGE_P_QUAD 0x32
232#define W25_FPAGE_P_QUAD_4B 0x34
233#define W25_S_ERASE4K 0x20
234#define W25_S_ERASE4K_4B 0x21
235#define W25_B_ERASE32K 0x52
236#define W25_B_ERASE64K 0xD8
237#define W25_B_ERASE64K_4B 0xDC
238#define W25_CH_ERASE 0xC7
239#define W25_POWERDOWN 0xB9
240#define W25_POWERUP_ID 0xAB
241#define W25_JEDEC_ID 0x9F
242#define W25_R_SR1 0x05
243#define W25_R_SFPD_REG 0x5A
244#define W25_W_DISABLE 0x04
245#define W25_MAN_DEVICE_ID 0x90
246#define W25_R_SR2 0x35
247#define W25_W_SR2 0x31
248#define W25_R_SR3 0x15
249#define W25_W_SR3 0x11
250#define W25_SR_W_ENABLE 0x50
251#define W25_ENTER_4B_ADDR 0xB7
276#define W25_DUMMY 0x00
279#define SR1_BIT_BSY (01U)
280#define SR1_BIT_WEL (02U)
281#define SR2_BIT_QE (0x02U)
381#ifdef FLASH_QSPI_MEMORY_MAPPED
382 #define ON_EXT_FLASH __attribute__((section("ExtFlashSection"))) __attribute__((aligned(4)))
QSPI_HandleTypeDef hqspi
HAL QSPI handle for the external flash memory.
void HAL_QSPI_TxCpltCallback(QSPI_HandleTypeDef *hqspi)
void HAL_QSPI_CmdCpltCallback(QSPI_HandleTypeDef *hqspi)
void HAL_QSPI_RxCpltCallback(QSPI_HandleTypeDef *hqspi)
void HAL_QSPI_ErrorCallback(QSPI_HandleTypeDef *hqspi)
HAL_StatusTypeDef QFlash_Reset(void)
HAL_StatusTypeDef QFlash_WriteSR2(uint8_t data)
writes to register 2
HAL_StatusTypeDef QFlash_WriteEnable(void)
enables writes
HAL_StatusTypeDef QFlash_ReadSR3(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_PowerDown(void)
HAL_StatusTypeDef QFlash_ReadSR2(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_CheckSR1(void)
HAL_StatusTypeDef QFlash_WriteDisable(void)
disables writes
HAL_StatusTypeDef QFlash_PowerUp(void)
HAL_StatusTypeDef QFlash_ReadSR1(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_WriteSR3(uint8_t data)
writes to register 3
HAL_StatusTypeDef QFlash_WaitForWritingComplete(void)
HAL_StatusTypeDef QFlash_ReadDevID(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_ReadManufactutrerAndDevID(uint16_t *dataptr)
read id of the winbond
HAL_StatusTypeDef QFlash_ReadJedecID(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_ReadSFDP(uint8_t *dataptr)
HAL_StatusTypeDef QFlash_Init(void)
HAL_StatusTypeDef QFlash_BErase32k(uint32_t addr)
HAL_StatusTypeDef QFlash_SErase4k(uint32_t addr)
HAL_StatusTypeDef QFlash_BErase64k(uint32_t addr)
HAL_StatusTypeDef QFlash_ChipErase(void)
HAL_StatusTypeDef QFlash_Write(uint32_t addr, uint8_t *data, uint32_t dataSize)
HAL_StatusTypeDef QFlash_Read(uint32_t address, uint8_t *buffer, uint32_t dataSize)
HAL_StatusTypeDef QFlash_WaitForDataAvailable(uint32_t timeout)
HAL_StatusTypeDef QFlash_WaitForQSPIAvailable(uint32_t timeout)
uint8_t QFlash_IsQSPIAvailable(void)
void QFlash_DefaultCmd(QSPI_CommandTypeDef *sCommand)
uint8_t QFlash_IsDataAvailable(void)
void DataReader_ReadData(uint32_t address24, uint8_t *buffer, uint32_t length)
void DataReader_WaitForReceiveDone(void)
void DataReader_StartDMAReadData(uint32_t address24, uint8_t *buffer, uint32_t length)
: Header for main.c file. This file contains the common defines of the application.
HAL_StatusTypeDef
HAL Status structures definition.