BSP driver for DISCO_L496AG

Dependents:   DISCO_L496AG-LCD-prova_1 DISCO_L496AG-LCD-prova_2 DISCO_L496AG-LCD-demo DISCO_L496AG-SRAM-demo

Committer:
bcostm
Date:
Mon Mar 26 10:28:18 2018 +0200
Revision:
0:d83f1c8ca282
Child:
2:106c7b82e064
Add BSP files coming from CubeL4 V1.11.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:d83f1c8ca282 1 /**
bcostm 0:d83f1c8ca282 2 ******************************************************************************
bcostm 0:d83f1c8ca282 3 * @file mx25r6435f.h
bcostm 0:d83f1c8ca282 4 * @author MCD Application Team
bcostm 0:d83f1c8ca282 5 * @version V1.0.0
bcostm 0:d83f1c8ca282 6 * @date 17-February-2017
bcostm 0:d83f1c8ca282 7 * @brief This file contains all the description of the MX25R6435F QSPI memory.
bcostm 0:d83f1c8ca282 8 ******************************************************************************
bcostm 0:d83f1c8ca282 9 * @attention
bcostm 0:d83f1c8ca282 10 *
bcostm 0:d83f1c8ca282 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
bcostm 0:d83f1c8ca282 12 *
bcostm 0:d83f1c8ca282 13 * Redistribution and use in source and binary forms, with or without modification,
bcostm 0:d83f1c8ca282 14 * are permitted provided that the following conditions are met:
bcostm 0:d83f1c8ca282 15 * 1. Redistributions of source code must retain the above copyright notice,
bcostm 0:d83f1c8ca282 16 * this list of conditions and the following disclaimer.
bcostm 0:d83f1c8ca282 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
bcostm 0:d83f1c8ca282 18 * this list of conditions and the following disclaimer in the documentation
bcostm 0:d83f1c8ca282 19 * and/or other materials provided with the distribution.
bcostm 0:d83f1c8ca282 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
bcostm 0:d83f1c8ca282 21 * may be used to endorse or promote products derived from this software
bcostm 0:d83f1c8ca282 22 * without specific prior written permission.
bcostm 0:d83f1c8ca282 23 *
bcostm 0:d83f1c8ca282 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
bcostm 0:d83f1c8ca282 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
bcostm 0:d83f1c8ca282 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
bcostm 0:d83f1c8ca282 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
bcostm 0:d83f1c8ca282 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
bcostm 0:d83f1c8ca282 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
bcostm 0:d83f1c8ca282 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
bcostm 0:d83f1c8ca282 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
bcostm 0:d83f1c8ca282 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
bcostm 0:d83f1c8ca282 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
bcostm 0:d83f1c8ca282 34 *
bcostm 0:d83f1c8ca282 35 ******************************************************************************
bcostm 0:d83f1c8ca282 36 */
bcostm 0:d83f1c8ca282 37
bcostm 0:d83f1c8ca282 38 /* Define to prevent recursive inclusion -------------------------------------*/
bcostm 0:d83f1c8ca282 39 #ifndef __MX25R6435F_H
bcostm 0:d83f1c8ca282 40 #define __MX25R6435F_H
bcostm 0:d83f1c8ca282 41
bcostm 0:d83f1c8ca282 42 #ifdef __cplusplus
bcostm 0:d83f1c8ca282 43 extern "C" {
bcostm 0:d83f1c8ca282 44 #endif
bcostm 0:d83f1c8ca282 45
bcostm 0:d83f1c8ca282 46 /* Includes ------------------------------------------------------------------*/
bcostm 0:d83f1c8ca282 47
bcostm 0:d83f1c8ca282 48 /** @addtogroup BSP
bcostm 0:d83f1c8ca282 49 * @{
bcostm 0:d83f1c8ca282 50 */
bcostm 0:d83f1c8ca282 51
bcostm 0:d83f1c8ca282 52 /** @addtogroup Components
bcostm 0:d83f1c8ca282 53 * @{
bcostm 0:d83f1c8ca282 54 */
bcostm 0:d83f1c8ca282 55
bcostm 0:d83f1c8ca282 56 /** @addtogroup mx25r6435f
bcostm 0:d83f1c8ca282 57 * @{
bcostm 0:d83f1c8ca282 58 */
bcostm 0:d83f1c8ca282 59
bcostm 0:d83f1c8ca282 60 /** @defgroup MX25R6435F_Exported_Types
bcostm 0:d83f1c8ca282 61 * @{
bcostm 0:d83f1c8ca282 62 */
bcostm 0:d83f1c8ca282 63
bcostm 0:d83f1c8ca282 64 /**
bcostm 0:d83f1c8ca282 65 * @}
bcostm 0:d83f1c8ca282 66 */
bcostm 0:d83f1c8ca282 67
bcostm 0:d83f1c8ca282 68 /** @defgroup MX25R6435F_Exported_Constants
bcostm 0:d83f1c8ca282 69 * @{
bcostm 0:d83f1c8ca282 70 */
bcostm 0:d83f1c8ca282 71
bcostm 0:d83f1c8ca282 72 /**
bcostm 0:d83f1c8ca282 73 * @brief MX25R6435F Configuration
bcostm 0:d83f1c8ca282 74 */
bcostm 0:d83f1c8ca282 75 #define MX25R6435F_FLASH_SIZE 0x800000 /* 64 MBits => 8MBytes */
bcostm 0:d83f1c8ca282 76 #define MX25R6435F_BLOCK_SIZE 0x10000 /* 128 blocks of 64KBytes */
bcostm 0:d83f1c8ca282 77 #define MX25R6435F_SUBBLOCK_SIZE 0x8000 /* 256 blocks of 32KBytes */
bcostm 0:d83f1c8ca282 78 #define MX25R6435F_SECTOR_SIZE 0x1000 /* 2048 sectors of 4kBytes */
bcostm 0:d83f1c8ca282 79 #define MX25R6435F_PAGE_SIZE 0x100 /* 32768 pages of 256 bytes */
bcostm 0:d83f1c8ca282 80
bcostm 0:d83f1c8ca282 81 #define MX25R6435F_DUMMY_CYCLES_READ 8
bcostm 0:d83f1c8ca282 82 #define MX25R6435F_DUMMY_CYCLES_READ_DUAL 4
bcostm 0:d83f1c8ca282 83 #define MX25R6435F_DUMMY_CYCLES_READ_QUAD 4
bcostm 0:d83f1c8ca282 84 #define MX25R6435F_DUMMY_CYCLES_2READ 2
bcostm 0:d83f1c8ca282 85 #define MX25R6435F_DUMMY_CYCLES_4READ 4
bcostm 0:d83f1c8ca282 86
bcostm 0:d83f1c8ca282 87 #define MX25R6435F_ALT_BYTES_PE_MODE 0xA5
bcostm 0:d83f1c8ca282 88 #define MX25R6435F_ALT_BYTES_NO_PE_MODE 0xAA
bcostm 0:d83f1c8ca282 89
bcostm 0:d83f1c8ca282 90 #define MX25R6435F_CHIP_ERASE_MAX_TIME 240000
bcostm 0:d83f1c8ca282 91 #define MX25R6435F_BLOCK_ERASE_MAX_TIME 3500
bcostm 0:d83f1c8ca282 92 #define MX25R6435F_SUBBLOCK_ERASE_MAX_TIME 3000
bcostm 0:d83f1c8ca282 93 #define MX25R6435F_SECTOR_ERASE_MAX_TIME 240
bcostm 0:d83f1c8ca282 94
bcostm 0:d83f1c8ca282 95 /**
bcostm 0:d83f1c8ca282 96 * @brief MX25R6435F Commands
bcostm 0:d83f1c8ca282 97 */
bcostm 0:d83f1c8ca282 98 /* Read Operations */
bcostm 0:d83f1c8ca282 99 #define READ_CMD 0x03
bcostm 0:d83f1c8ca282 100 #define FAST_READ_CMD 0x0B
bcostm 0:d83f1c8ca282 101 #define DUAL_OUT_READ_CMD 0x3B
bcostm 0:d83f1c8ca282 102 #define DUAL_INOUT_READ_CMD 0xBB
bcostm 0:d83f1c8ca282 103 #define QUAD_OUT_READ_CMD 0x6B
bcostm 0:d83f1c8ca282 104 #define QUAD_INOUT_READ_CMD 0xEB
bcostm 0:d83f1c8ca282 105
bcostm 0:d83f1c8ca282 106 /* Program Operations */
bcostm 0:d83f1c8ca282 107 #define PAGE_PROG_CMD 0x02
bcostm 0:d83f1c8ca282 108 #define QUAD_PAGE_PROG_CMD 0x38
bcostm 0:d83f1c8ca282 109
bcostm 0:d83f1c8ca282 110 /* Erase Operations */
bcostm 0:d83f1c8ca282 111 #define SECTOR_ERASE_CMD 0x20
bcostm 0:d83f1c8ca282 112 #define SUBBLOCK_ERASE_CMD 0x52
bcostm 0:d83f1c8ca282 113 #define BLOCK_ERASE_CMD 0xD8
bcostm 0:d83f1c8ca282 114 #define CHIP_ERASE_CMD 0x60
bcostm 0:d83f1c8ca282 115 #define CHIP_ERASE_CMD_2 0xC7
bcostm 0:d83f1c8ca282 116
bcostm 0:d83f1c8ca282 117 #define PROG_ERASE_RESUME_CMD 0x7A
bcostm 0:d83f1c8ca282 118 #define PROG_ERASE_RESUME_CMD_2 0x30
bcostm 0:d83f1c8ca282 119 #define PROG_ERASE_SUSPEND_CMD 0x75
bcostm 0:d83f1c8ca282 120 #define PROG_ERASE_SUSPEND_CMD_2 0xB0
bcostm 0:d83f1c8ca282 121
bcostm 0:d83f1c8ca282 122 /* Identification Operations */
bcostm 0:d83f1c8ca282 123 #define READ_ID_CMD 0x9F
bcostm 0:d83f1c8ca282 124 #define READ_ELECTRONIC_ID_CMD 0xAB
bcostm 0:d83f1c8ca282 125 #define READ_ELEC_MANUFACTURER_DEVICE_ID_CMD 0x90
bcostm 0:d83f1c8ca282 126 #define READ_SERIAL_FLASH_DISCO_PARAM_CMD 0x5A
bcostm 0:d83f1c8ca282 127
bcostm 0:d83f1c8ca282 128 /* Write Operations */
bcostm 0:d83f1c8ca282 129 #define WRITE_ENABLE_CMD 0x06
bcostm 0:d83f1c8ca282 130 #define WRITE_DISABLE_CMD 0x04
bcostm 0:d83f1c8ca282 131
bcostm 0:d83f1c8ca282 132 /* Register Operations */
bcostm 0:d83f1c8ca282 133 #define READ_STATUS_REG_CMD 0x05
bcostm 0:d83f1c8ca282 134 #define READ_CFG_REG_CMD 0x15
bcostm 0:d83f1c8ca282 135 #define WRITE_STATUS_CFG_REG_CMD 0x01
bcostm 0:d83f1c8ca282 136
bcostm 0:d83f1c8ca282 137 #define READ_SEC_REG_CMD 0x2B
bcostm 0:d83f1c8ca282 138 #define WRITE_SEC_REG_CMD 0x2F
bcostm 0:d83f1c8ca282 139
bcostm 0:d83f1c8ca282 140 /* Power Down Operations */
bcostm 0:d83f1c8ca282 141 #define DEEP_POWER_DOWN_CMD 0xB9
bcostm 0:d83f1c8ca282 142
bcostm 0:d83f1c8ca282 143 /* Burst Operations */
bcostm 0:d83f1c8ca282 144 #define SET_BURST_LENGTH_CMD 0xC0
bcostm 0:d83f1c8ca282 145
bcostm 0:d83f1c8ca282 146 /* One-Time Programmable Operations */
bcostm 0:d83f1c8ca282 147 #define ENTER_SECURED_OTP_CMD 0xB1
bcostm 0:d83f1c8ca282 148 #define EXIT_SECURED_OTP_CMD 0xC1
bcostm 0:d83f1c8ca282 149
bcostm 0:d83f1c8ca282 150 /* No Operation */
bcostm 0:d83f1c8ca282 151 #define NO_OPERATION_CMD 0x00
bcostm 0:d83f1c8ca282 152
bcostm 0:d83f1c8ca282 153 /* Reset Operations */
bcostm 0:d83f1c8ca282 154 #define RESET_ENABLE_CMD 0x66
bcostm 0:d83f1c8ca282 155 #define RESET_MEMORY_CMD 0x99
bcostm 0:d83f1c8ca282 156 #define RELEASE_READ_ENHANCED_CMD 0xFF
bcostm 0:d83f1c8ca282 157
bcostm 0:d83f1c8ca282 158 /**
bcostm 0:d83f1c8ca282 159 * @brief MX25R6435F Registers
bcostm 0:d83f1c8ca282 160 */
bcostm 0:d83f1c8ca282 161 /* Status Register */
bcostm 0:d83f1c8ca282 162 #define MX25R6435F_SR_WIP ((uint8_t)0x01) /*!< Write in progress */
bcostm 0:d83f1c8ca282 163 #define MX25R6435F_SR_WEL ((uint8_t)0x02) /*!< Write enable latch */
bcostm 0:d83f1c8ca282 164 #define MX25R6435F_SR_BP ((uint8_t)0x3C) /*!< Block protect */
bcostm 0:d83f1c8ca282 165 #define MX25R6435F_SR_QE ((uint8_t)0x40) /*!< Quad enable */
bcostm 0:d83f1c8ca282 166 #define MX25R6435F_SR_SRWD ((uint8_t)0x80) /*!< Status register write disable */
bcostm 0:d83f1c8ca282 167
bcostm 0:d83f1c8ca282 168 /* Configuration Register 1 */
bcostm 0:d83f1c8ca282 169 #define MX25R6435F_CR1_TB ((uint8_t)0x08) /*!< Top / bottom */
bcostm 0:d83f1c8ca282 170
bcostm 0:d83f1c8ca282 171 /* Configuration Register 2 */
bcostm 0:d83f1c8ca282 172 #define MX25R6435F_CR2_LH_SWITCH ((uint8_t)0x02) /*!< Low power / high performance switch */
bcostm 0:d83f1c8ca282 173
bcostm 0:d83f1c8ca282 174 /* Security Register */
bcostm 0:d83f1c8ca282 175 #define MX25R6435F_SECR_SOI ((uint8_t)0x01) /*!< Secured OTP indicator */
bcostm 0:d83f1c8ca282 176 #define MX25R6435F_SECR_LDSO ((uint8_t)0x02) /*!< Lock-down secured OTP */
bcostm 0:d83f1c8ca282 177 #define MX25R6435F_SECR_PSB ((uint8_t)0x04) /*!< Program suspend bit */
bcostm 0:d83f1c8ca282 178 #define MX25R6435F_SECR_ESB ((uint8_t)0x08) /*!< Erase suspend bit */
bcostm 0:d83f1c8ca282 179 #define MX25R6435F_SECR_P_FAIL ((uint8_t)0x20) /*!< Program fail flag */
bcostm 0:d83f1c8ca282 180 #define MX25R6435F_SECR_E_FAIL ((uint8_t)0x40) /*!< Erase fail flag */
bcostm 0:d83f1c8ca282 181
bcostm 0:d83f1c8ca282 182 /**
bcostm 0:d83f1c8ca282 183 * @}
bcostm 0:d83f1c8ca282 184 */
bcostm 0:d83f1c8ca282 185
bcostm 0:d83f1c8ca282 186 /** @defgroup MX25R6435F_Exported_Functions
bcostm 0:d83f1c8ca282 187 * @{
bcostm 0:d83f1c8ca282 188 */
bcostm 0:d83f1c8ca282 189 /**
bcostm 0:d83f1c8ca282 190 * @}
bcostm 0:d83f1c8ca282 191 */
bcostm 0:d83f1c8ca282 192
bcostm 0:d83f1c8ca282 193 /**
bcostm 0:d83f1c8ca282 194 * @}
bcostm 0:d83f1c8ca282 195 */
bcostm 0:d83f1c8ca282 196
bcostm 0:d83f1c8ca282 197 /**
bcostm 0:d83f1c8ca282 198 * @}
bcostm 0:d83f1c8ca282 199 */
bcostm 0:d83f1c8ca282 200
bcostm 0:d83f1c8ca282 201 /**
bcostm 0:d83f1c8ca282 202 * @}
bcostm 0:d83f1c8ca282 203 */
bcostm 0:d83f1c8ca282 204
bcostm 0:d83f1c8ca282 205 #ifdef __cplusplus
bcostm 0:d83f1c8ca282 206 }
bcostm 0:d83f1c8ca282 207 #endif
bcostm 0:d83f1c8ca282 208
bcostm 0:d83f1c8ca282 209 #endif /* __MX25R6435F_H */
bcostm 0:d83f1c8ca282 210
bcostm 0:d83f1c8ca282 211 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/