| /** | |
| ****************************************************************************** | |
| * File Name : QUADSPI.h | |
| * Description : This file provides code for the configuration | |
| * of the QUADSPI instances. | |
| ****************************************************************************** | |
| * @attention | |
| * | |
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |
| * All rights reserved.</center></h2> | |
| * | |
| * This software component is licensed by ST under Ultimate Liberty license | |
| * SLA0044, the "License"; You may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at: | |
| * www.st.com/SLA0044 | |
| * | |
| ****************************************************************************** | |
| */ | |
| /* Define to prevent recursive inclusion -------------------------------------*/ | |
| #ifndef __quadspi_H | |
| #define __quadspi_H | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| /* Includes ------------------------------------------------------------------*/ | |
| #include "main.h" | |
| /* USER CODE BEGIN Includes */ | |
| /* USER CODE END Includes */ | |
| extern QSPI_HandleTypeDef hqspi; | |
| /* USER CODE BEGIN Private defines */ | |
| #define APPLICATION_ADDRESS QSPI_BASE | |
| // Flash example | |
| #define QSPI_FLASH_SIZE POSITION_VAL(0x2000000)-1 | |
| #define QSPI_PAGE_SIZE 256 | |
| /* Reset Operations */ | |
| #define RESET_ENABLE_CMD 0x66 | |
| #define RESET_MEMORY_CMD 0x99 | |
| /* Identification Operations */ | |
| #define READ_ID_CMD 0x9E | |
| #define READ_ID_CMD2 0x9F | |
| #define MULTIPLE_IO_READ_ID_CMD 0xAF | |
| #define READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5A | |
| /* Read Operations */ | |
| #define READ_CMD 0x03 | |
| #define READ_4_BYTE_ADDR_CMD 0x13 | |
| #define FAST_READ_CMD 0x0B | |
| #define FAST_READ_DTR_CMD 0x0D | |
| #define FAST_READ_4_BYTE_ADDR_CMD 0x0C | |
| #define DUAL_OUT_FAST_READ_CMD 0x3B | |
| #define DUAL_OUT_FAST_READ_DTR_CMD 0x3D | |
| #define DUAL_OUT_FAST_READ_4_BYTE_ADDR_CMD 0x3C | |
| #define DUAL_INOUT_FAST_READ_CMD 0xBB | |
| #define DUAL_INOUT_FAST_READ_DTR_CMD 0xBD | |
| #define DUAL_INOUT_FAST_READ_4_BYTE_ADDR_CMD 0xBC | |
| #define QUAD_OUT_FAST_READ_CMD 0x6B | |
| #define QUAD_OUT_FAST_READ_DTR_CMD 0x6D | |
| #define QUAD_OUT_FAST_READ_4_BYTE_ADDR_CMD 0x6C | |
| #define QUAD_INOUT_FAST_READ_CMD 0xEB | |
| #define QUAD_INOUT_FAST_READ_DTR_CMD 0xED | |
| #define QUAD_INOUT_FAST_READ_4_BYTE_ADDR_CMD 0xEC | |
| /* Write Operations */ | |
| #define WRITE_ENABLE_CMD 0x06 | |
| #define WRITE_DISABLE_CMD 0x04 | |
| /* Register Operations */ | |
| #define READ_STATUS_REG1_CMD 0x05 | |
| #define WRITE_STATUS_REG1_CMD 0x01 | |
| #define READ_LOCK_REG_CMD 0xE8 | |
| #define WRITE_LOCK_REG_CMD 0xE5 | |
| #define READ_FLAG_STATUS_REG_CMD 0x70 | |
| #define CLEAR_FLAG_STATUS_REG_CMD 0x50 | |
| #define READ_NONVOL_CFG_REG_CMD 0xB5 | |
| #define WRITE_NONVOL_CFG_REG_CMD 0xB1 | |
| #define READ_VOL_CFG_REG_CMD 0x85 | |
| #define WRITE_VOL_CFG_REG_CMD 0x81 | |
| #define READ_ENHANCED_VOL_CFG_REG_CMD 0x65 | |
| #define WRITE_ENHANCED_VOL_CFG_REG_CMD 0x61 | |
| #define READ_EXT_ADDR_REG_CMD 0xC8 | |
| #define WRITE_EXT_ADDR_REG_CMD 0xC5 | |
| /* Program Operations */ | |
| #define PAGE_PROG_CMD 0x02 | |
| #define PAGE_PROG_4_BYTE_ADDR_CMD 0x12 | |
| #define DUAL_IN_FAST_PROG_CMD 0xA2 | |
| #define EXT_DUAL_IN_FAST_PROG_CMD 0xD2 | |
| #define QUAD_IN_FAST_PROG_CMD 0x32 | |
| #define EXT_QUAD_IN_FAST_PROG_CMD 0x12 /*0x38*/ | |
| #define QUAD_IN_FAST_PROG_4_BYTE_ADDR_CMD 0x34 | |
| /* Erase Operations */ | |
| #define SUBSECTOR_ERASE_CMD 0x20 | |
| #define SUBSECTOR_ERASE_4_BYTE_ADDR_CMD 0x21 | |
| #define SECTOR_ERASE_CMD 0xD8 | |
| #define SECTOR_ERASE_4_BYTE_ADDR_CMD 0xDC | |
| #define BULK_ERASE_CMD 0xC7 | |
| #define PROG_ERASE_RESUME_CMD 0x7A | |
| #define PROG_ERASE_SUSPEND_CMD 0x75 | |
| /* One-Time Programmable Operations */ | |
| #define READ_OTP_ARRAY_CMD 0x4B | |
| #define PROG_OTP_ARRAY_CMD 0x42 | |
| /* 4-byte Address Mode Operations */ | |
| #define ENTER_4_BYTE_ADDR_MODE_CMD 0xB7 | |
| #define EXIT_4_BYTE_ADDR_MODE_CMD 0xE9 | |
| /* Quad Operations */ | |
| #define ENTER_QUAD_CMD 0x35 | |
| #define EXIT_QUAD_CMD 0xF5 | |
| #define READ_STATUS_REG2 0x35 | |
| #define WRITE_STATUS_REG2 0x31 | |
| /* Default dummy clocks cycles */ | |
| #define DUMMY_CLOCK_CYCLES_READ 0 | |
| #define DUMMY_CLOCK_CYCLES_READ_QUAD 8 | |
| #define DUMMY_CLOCK_CYCLES_READ_DTR 6 | |
| #define DUMMY_CLOCK_CYCLES_READ_QUAD_DTR 8 | |
| /* End address of the QSPI memory */ | |
| #define QSPI_END_ADDR (1 << QSPI_FLASH_SIZE) | |
| #define FLASH_SECTOR_ERASE_MAX_TIME 5000 | |
| #define FLASH_CHIP_ERASE_MAX_TIME (60*1000) | |
| #define HAL_QPSI_TIMEOUT_FLASH_ERASE_VALUE (50*1000) | |
| #define QSPI_OK HAL_OK | |
| /* USER CODE END Private defines */ | |
| void MX_QUADSPI_Init(void); | |
| /* USER CODE BEGIN Prototypes */ | |
| int qspi_init(void); | |
| HAL_StatusTypeDef qspi_sector_erase(uint32_t BlockAddress); | |
| HAL_StatusTypeDef qspi_write_buffer(size_t offset, const uint8_t* buffer, size_t length); | |
| HAL_StatusTypeDef qspi_read_buffer(size_t address, const uint8_t* buffer, size_t length); | |
| HAL_StatusTypeDef qspi_enable_memorymapped_mode(void); | |
| int is_qspi_memorymapped(); | |
| void qspi_disable_memorymapped_mode(void); | |
| void QSPI_WriteEnable(QSPI_HandleTypeDef *hqspi); | |
| void qspi_chip_erase(); | |
| /* USER CODE END Prototypes */ | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /*__ quadspi_H */ | |
| /** | |
| * @} | |
| */ | |
| /** | |
| * @} | |
| */ | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |