The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Thu Nov 08 11:45:42 2018 +0000
Revision:
171:3a7713b1edbc
Parent:
TARGET_DISCO_F303VC/TARGET_STM/TARGET_STM32F3/device/stm32f3xx_ll_fmc.h@168:b9e159c1930a
mbed library. Release version 164

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 163:e59c8e839560 1 /**
AnnaBridge 163:e59c8e839560 2 ******************************************************************************
AnnaBridge 163:e59c8e839560 3 * @file stm32f3xx_ll_fmc.h
AnnaBridge 163:e59c8e839560 4 * @author MCD Application Team
AnnaBridge 163:e59c8e839560 5 * @brief Header file of FMC HAL module.
AnnaBridge 163:e59c8e839560 6 ******************************************************************************
AnnaBridge 163:e59c8e839560 7 * @attention
AnnaBridge 163:e59c8e839560 8 *
AnnaBridge 163:e59c8e839560 9 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
AnnaBridge 163:e59c8e839560 10 *
AnnaBridge 163:e59c8e839560 11 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 163:e59c8e839560 12 * are permitted provided that the following conditions are met:
AnnaBridge 163:e59c8e839560 13 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 163:e59c8e839560 14 * this list of conditions and the following disclaimer.
AnnaBridge 163:e59c8e839560 15 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 163:e59c8e839560 16 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 163:e59c8e839560 17 * and/or other materials provided with the distribution.
AnnaBridge 163:e59c8e839560 18 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 163:e59c8e839560 19 * may be used to endorse or promote products derived from this software
AnnaBridge 163:e59c8e839560 20 * without specific prior written permission.
AnnaBridge 163:e59c8e839560 21 *
AnnaBridge 163:e59c8e839560 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 163:e59c8e839560 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 163:e59c8e839560 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 163:e59c8e839560 25 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 163:e59c8e839560 26 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 163:e59c8e839560 27 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 163:e59c8e839560 28 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 163:e59c8e839560 29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 163:e59c8e839560 30 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 163:e59c8e839560 31 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 163:e59c8e839560 32 *
AnnaBridge 163:e59c8e839560 33 ******************************************************************************
AnnaBridge 163:e59c8e839560 34 */
AnnaBridge 163:e59c8e839560 35
AnnaBridge 163:e59c8e839560 36 /* Define to prevent recursive inclusion -------------------------------------*/
AnnaBridge 163:e59c8e839560 37 #ifndef __STM32F3xx_LL_FMC_H
AnnaBridge 163:e59c8e839560 38 #define __STM32F3xx_LL_FMC_H
AnnaBridge 163:e59c8e839560 39
AnnaBridge 163:e59c8e839560 40 #ifdef __cplusplus
AnnaBridge 163:e59c8e839560 41 extern "C" {
AnnaBridge 163:e59c8e839560 42 #endif
AnnaBridge 163:e59c8e839560 43
AnnaBridge 163:e59c8e839560 44 /* Includes ------------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 45 #include "stm32f3xx_hal_def.h"
AnnaBridge 163:e59c8e839560 46
AnnaBridge 163:e59c8e839560 47 /** @addtogroup STM32F3xx_HAL_Driver
AnnaBridge 163:e59c8e839560 48 * @{
AnnaBridge 163:e59c8e839560 49 */
AnnaBridge 163:e59c8e839560 50
AnnaBridge 163:e59c8e839560 51 #if defined(FMC_BANK1)
AnnaBridge 163:e59c8e839560 52
AnnaBridge 163:e59c8e839560 53 /** @addtogroup FMC_LL
AnnaBridge 163:e59c8e839560 54 * @{
AnnaBridge 163:e59c8e839560 55 */
AnnaBridge 163:e59c8e839560 56
AnnaBridge 163:e59c8e839560 57 /** @addtogroup FMC_LL_Private_Macros
AnnaBridge 163:e59c8e839560 58 * @{
AnnaBridge 163:e59c8e839560 59 */
AnnaBridge 163:e59c8e839560 60
AnnaBridge 163:e59c8e839560 61 #define IS_FMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FMC_NORSRAM_BANK1) || \
AnnaBridge 163:e59c8e839560 62 ((__BANK__) == FMC_NORSRAM_BANK2) || \
AnnaBridge 163:e59c8e839560 63 ((__BANK__) == FMC_NORSRAM_BANK3) || \
AnnaBridge 163:e59c8e839560 64 ((__BANK__) == FMC_NORSRAM_BANK4))
AnnaBridge 163:e59c8e839560 65
AnnaBridge 163:e59c8e839560 66 #define IS_FMC_MUX(__MUX__) (((__MUX__) == FMC_DATA_ADDRESS_MUX_DISABLE) || \
AnnaBridge 163:e59c8e839560 67 ((__MUX__) == FMC_DATA_ADDRESS_MUX_ENABLE))
AnnaBridge 163:e59c8e839560 68
AnnaBridge 163:e59c8e839560 69 #define IS_FMC_MEMORY(__MEMORY__) (((__MEMORY__) == FMC_MEMORY_TYPE_SRAM) || \
AnnaBridge 163:e59c8e839560 70 ((__MEMORY__) == FMC_MEMORY_TYPE_PSRAM)|| \
AnnaBridge 163:e59c8e839560 71 ((__MEMORY__) == FMC_MEMORY_TYPE_NOR))
AnnaBridge 163:e59c8e839560 72
AnnaBridge 163:e59c8e839560 73 #define IS_FMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_8) || \
AnnaBridge 163:e59c8e839560 74 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_16) || \
AnnaBridge 163:e59c8e839560 75 ((__WIDTH__) == FMC_NORSRAM_MEM_BUS_WIDTH_32))
AnnaBridge 163:e59c8e839560 76
AnnaBridge 163:e59c8e839560 77 #define IS_FMC_WRITE_BURST(__BURST__) (((__BURST__) == FMC_WRITE_BURST_DISABLE) || \
AnnaBridge 163:e59c8e839560 78 ((__BURST__) == FMC_WRITE_BURST_ENABLE))
AnnaBridge 163:e59c8e839560 79
AnnaBridge 163:e59c8e839560 80 #define IS_FMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
AnnaBridge 163:e59c8e839560 81 ((__CCLOCK__) == FMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
AnnaBridge 163:e59c8e839560 82
AnnaBridge 163:e59c8e839560 83 #define IS_FMC_ACCESS_MODE(__MODE__) (((__MODE__) == FMC_ACCESS_MODE_A) || \
AnnaBridge 163:e59c8e839560 84 ((__MODE__) == FMC_ACCESS_MODE_B) || \
AnnaBridge 163:e59c8e839560 85 ((__MODE__) == FMC_ACCESS_MODE_C) || \
AnnaBridge 163:e59c8e839560 86 ((__MODE__) == FMC_ACCESS_MODE_D))
AnnaBridge 163:e59c8e839560 87
AnnaBridge 163:e59c8e839560 88 #define IS_FMC_NAND_BANK(__BANK__) (((__BANK__) == FMC_NAND_BANK2) || \
AnnaBridge 163:e59c8e839560 89 ((__BANK__) == FMC_NAND_BANK3))
AnnaBridge 163:e59c8e839560 90
AnnaBridge 163:e59c8e839560 91 #define IS_FMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FMC_NAND_PCC_WAIT_FEATURE_DISABLE) || \
AnnaBridge 163:e59c8e839560 92 ((__FEATURE__) == FMC_NAND_PCC_WAIT_FEATURE_ENABLE))
AnnaBridge 163:e59c8e839560 93
AnnaBridge 163:e59c8e839560 94 #define IS_FMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FMC_NAND_PCC_MEM_BUS_WIDTH_8) || \
AnnaBridge 163:e59c8e839560 95 ((__WIDTH__) == FMC_NAND_PCC_MEM_BUS_WIDTH_16))
AnnaBridge 163:e59c8e839560 96
AnnaBridge 163:e59c8e839560 97 #define IS_FMC_ECC_STATE(__STATE__) (((__STATE__) == FMC_NAND_ECC_DISABLE) || \
AnnaBridge 163:e59c8e839560 98 ((__STATE__) == FMC_NAND_ECC_ENABLE))
AnnaBridge 163:e59c8e839560 99
AnnaBridge 163:e59c8e839560 100 #define IS_FMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_256BYTE) || \
AnnaBridge 163:e59c8e839560 101 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_512BYTE) || \
AnnaBridge 163:e59c8e839560 102 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
AnnaBridge 163:e59c8e839560 103 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
AnnaBridge 163:e59c8e839560 104 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
AnnaBridge 163:e59c8e839560 105 ((__SIZE__) == FMC_NAND_ECC_PAGE_SIZE_8192BYTE))
AnnaBridge 163:e59c8e839560 106
AnnaBridge 163:e59c8e839560 107 /** @defgroup FMC_TCLR_Setup_Time FMC_TCLR_Setup_Time
AnnaBridge 163:e59c8e839560 108 * @{
AnnaBridge 163:e59c8e839560 109 */
AnnaBridge 163:e59c8e839560 110 #define IS_FMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 111 /**
AnnaBridge 163:e59c8e839560 112 * @}
AnnaBridge 163:e59c8e839560 113 */
AnnaBridge 163:e59c8e839560 114
AnnaBridge 163:e59c8e839560 115 /** @defgroup FMC_TAR_Setup_Time FMC_TAR_Setup_Time
AnnaBridge 163:e59c8e839560 116 * @{
AnnaBridge 163:e59c8e839560 117 */
AnnaBridge 163:e59c8e839560 118 #define IS_FMC_TAR_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 119 /**
AnnaBridge 163:e59c8e839560 120 * @}
AnnaBridge 163:e59c8e839560 121 */
AnnaBridge 163:e59c8e839560 122
AnnaBridge 163:e59c8e839560 123 /** @defgroup FMC_Setup_Time FMC_Setup_Time
AnnaBridge 163:e59c8e839560 124 * @{
AnnaBridge 163:e59c8e839560 125 */
AnnaBridge 163:e59c8e839560 126 #define IS_FMC_SETUP_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 127 /**
AnnaBridge 163:e59c8e839560 128 * @}
AnnaBridge 163:e59c8e839560 129 */
AnnaBridge 163:e59c8e839560 130
AnnaBridge 163:e59c8e839560 131 /** @defgroup FMC_Wait_Setup_Time FMC_Wait_Setup_Time
AnnaBridge 163:e59c8e839560 132 * @{
AnnaBridge 163:e59c8e839560 133 */
AnnaBridge 163:e59c8e839560 134 #define IS_FMC_WAIT_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 135 /**
AnnaBridge 163:e59c8e839560 136 * @}
AnnaBridge 163:e59c8e839560 137 */
AnnaBridge 163:e59c8e839560 138
AnnaBridge 163:e59c8e839560 139 /** @defgroup FMC_Hold_Setup_Time FMC_Hold_Setup_Time
AnnaBridge 163:e59c8e839560 140 * @{
AnnaBridge 163:e59c8e839560 141 */
AnnaBridge 163:e59c8e839560 142 #define IS_FMC_HOLD_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 143 /**
AnnaBridge 163:e59c8e839560 144 * @}
AnnaBridge 163:e59c8e839560 145 */
AnnaBridge 163:e59c8e839560 146
AnnaBridge 163:e59c8e839560 147 /** @defgroup FMC_HiZ_Setup_Time FMC_HiZ_Setup_Time
AnnaBridge 163:e59c8e839560 148 * @{
AnnaBridge 163:e59c8e839560 149 */
AnnaBridge 163:e59c8e839560 150 #define IS_FMC_HIZ_TIME(__TIME__) ((__TIME__) <= 255)
AnnaBridge 163:e59c8e839560 151 /**
AnnaBridge 163:e59c8e839560 152 * @}
AnnaBridge 163:e59c8e839560 153 */
AnnaBridge 163:e59c8e839560 154
AnnaBridge 163:e59c8e839560 155 /** @defgroup FMC_NORSRAM_Device_Instance FMC NOR/SRAM Device Instance
AnnaBridge 163:e59c8e839560 156 * @{
AnnaBridge 163:e59c8e839560 157 */
AnnaBridge 163:e59c8e839560 158
AnnaBridge 163:e59c8e839560 159 #define IS_FMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_DEVICE)
AnnaBridge 163:e59c8e839560 160
AnnaBridge 163:e59c8e839560 161 /**
AnnaBridge 163:e59c8e839560 162 * @}
AnnaBridge 163:e59c8e839560 163 */
AnnaBridge 163:e59c8e839560 164
AnnaBridge 163:e59c8e839560 165 /** @defgroup FMC_NORSRAM_EXTENDED_Device_Instance FMC NOR/SRAM EXTENDED Device Instance
AnnaBridge 163:e59c8e839560 166 * @{
AnnaBridge 163:e59c8e839560 167 */
AnnaBridge 163:e59c8e839560 168
AnnaBridge 163:e59c8e839560 169 #define IS_FMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NORSRAM_EXTENDED_DEVICE)
AnnaBridge 163:e59c8e839560 170
AnnaBridge 163:e59c8e839560 171 /**
AnnaBridge 163:e59c8e839560 172 * @}
AnnaBridge 163:e59c8e839560 173 */
AnnaBridge 163:e59c8e839560 174
AnnaBridge 163:e59c8e839560 175 /** @defgroup FMC_NAND_Device_Instance FMC NAND Device Instance
AnnaBridge 163:e59c8e839560 176 * @{
AnnaBridge 163:e59c8e839560 177 */
AnnaBridge 163:e59c8e839560 178 #define IS_FMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_NAND_DEVICE)
AnnaBridge 163:e59c8e839560 179 /**
AnnaBridge 163:e59c8e839560 180 * @}
AnnaBridge 163:e59c8e839560 181 */
AnnaBridge 163:e59c8e839560 182
AnnaBridge 163:e59c8e839560 183 /** @defgroup FMC_PCCARD_Device_Instance FMC PCCARD Device Instance
AnnaBridge 163:e59c8e839560 184 * @{
AnnaBridge 163:e59c8e839560 185 */
AnnaBridge 163:e59c8e839560 186 #define IS_FMC_PCCARD_DEVICE(__INSTANCE__) ((__INSTANCE__) == FMC_PCCARD_DEVICE)
AnnaBridge 163:e59c8e839560 187
AnnaBridge 163:e59c8e839560 188 /**
AnnaBridge 163:e59c8e839560 189 * @}
AnnaBridge 163:e59c8e839560 190 */
AnnaBridge 163:e59c8e839560 191 #define IS_FMC_BURSTMODE(__STATE__) (((__STATE__) == FMC_BURST_ACCESS_MODE_DISABLE) || \
AnnaBridge 163:e59c8e839560 192 ((__STATE__) == FMC_BURST_ACCESS_MODE_ENABLE))
AnnaBridge 163:e59c8e839560 193
AnnaBridge 163:e59c8e839560 194 #define IS_FMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_LOW) || \
AnnaBridge 163:e59c8e839560 195 ((__POLARITY__) == FMC_WAIT_SIGNAL_POLARITY_HIGH))
AnnaBridge 163:e59c8e839560 196
AnnaBridge 163:e59c8e839560 197 #define IS_FMC_WRAP_MODE(__MODE__) (((__MODE__) == FMC_WRAP_MODE_DISABLE) || \
AnnaBridge 163:e59c8e839560 198 ((__MODE__) == FMC_WRAP_MODE_ENABLE))
AnnaBridge 163:e59c8e839560 199
AnnaBridge 163:e59c8e839560 200 #define IS_FMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FMC_WAIT_TIMING_BEFORE_WS) || \
AnnaBridge 163:e59c8e839560 201 ((__ACTIVE__) == FMC_WAIT_TIMING_DURING_WS))
AnnaBridge 163:e59c8e839560 202
AnnaBridge 163:e59c8e839560 203 #define IS_FMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FMC_WRITE_OPERATION_DISABLE) || \
AnnaBridge 163:e59c8e839560 204 ((__OPERATION__) == FMC_WRITE_OPERATION_ENABLE))
AnnaBridge 163:e59c8e839560 205
AnnaBridge 163:e59c8e839560 206 #define IS_FMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FMC_WAIT_SIGNAL_DISABLE) || \
AnnaBridge 163:e59c8e839560 207 ((__SIGNAL__) == FMC_WAIT_SIGNAL_ENABLE))
AnnaBridge 163:e59c8e839560 208
AnnaBridge 163:e59c8e839560 209 #define IS_FMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FMC_EXTENDED_MODE_DISABLE) || \
AnnaBridge 163:e59c8e839560 210 ((__MODE__) == FMC_EXTENDED_MODE_ENABLE))
AnnaBridge 163:e59c8e839560 211
AnnaBridge 163:e59c8e839560 212 #define IS_FMC_ASYNWAIT(__STATE__) (((__STATE__) == FMC_ASYNCHRONOUS_WAIT_DISABLE) || \
AnnaBridge 163:e59c8e839560 213 ((__STATE__) == FMC_ASYNCHRONOUS_WAIT_ENABLE))
AnnaBridge 163:e59c8e839560 214
AnnaBridge 163:e59c8e839560 215 #define IS_FMC_CLK_DIV(__DIV__) (((__DIV__) > 1) && ((__DIV__) <= 16))
AnnaBridge 163:e59c8e839560 216
AnnaBridge 163:e59c8e839560 217 /** @defgroup FMC_Data_Latency FMC Data Latency
AnnaBridge 163:e59c8e839560 218 * @{
AnnaBridge 163:e59c8e839560 219 */
AnnaBridge 163:e59c8e839560 220 #define IS_FMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1) && ((__LATENCY__) <= 17))
AnnaBridge 163:e59c8e839560 221 /**
AnnaBridge 163:e59c8e839560 222 * @}
AnnaBridge 163:e59c8e839560 223 */
AnnaBridge 163:e59c8e839560 224
AnnaBridge 163:e59c8e839560 225 /** @defgroup FMC_Address_Setup_Time FMC Address Setup Time
AnnaBridge 163:e59c8e839560 226 * @{
AnnaBridge 163:e59c8e839560 227 */
AnnaBridge 163:e59c8e839560 228 #define IS_FMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15)
AnnaBridge 163:e59c8e839560 229 /**
AnnaBridge 163:e59c8e839560 230 * @}
AnnaBridge 163:e59c8e839560 231 */
AnnaBridge 163:e59c8e839560 232
AnnaBridge 163:e59c8e839560 233 /** @defgroup FMC_Address_Hold_Time FMC Address Hold Time
AnnaBridge 163:e59c8e839560 234 * @{
AnnaBridge 163:e59c8e839560 235 */
AnnaBridge 163:e59c8e839560 236 #define IS_FMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 15))
AnnaBridge 163:e59c8e839560 237 /**
AnnaBridge 163:e59c8e839560 238 * @}
AnnaBridge 163:e59c8e839560 239 */
AnnaBridge 163:e59c8e839560 240
AnnaBridge 163:e59c8e839560 241 /** @defgroup FMC_Data_Setup_Time FMC Data Setup Time
AnnaBridge 163:e59c8e839560 242 * @{
AnnaBridge 163:e59c8e839560 243 */
AnnaBridge 163:e59c8e839560 244 #define IS_FMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0) && ((__TIME__) <= 255))
AnnaBridge 163:e59c8e839560 245 /**
AnnaBridge 163:e59c8e839560 246 * @}
AnnaBridge 163:e59c8e839560 247 */
AnnaBridge 163:e59c8e839560 248
AnnaBridge 163:e59c8e839560 249 /** @defgroup FMC_Bus_Turn_around_Duration FMC Bus Turn around Duration
AnnaBridge 163:e59c8e839560 250 * @{
AnnaBridge 163:e59c8e839560 251 */
AnnaBridge 163:e59c8e839560 252 #define IS_FMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15)
AnnaBridge 163:e59c8e839560 253 /**
AnnaBridge 163:e59c8e839560 254 * @}
AnnaBridge 163:e59c8e839560 255 */
AnnaBridge 163:e59c8e839560 256
AnnaBridge 163:e59c8e839560 257 /**
AnnaBridge 163:e59c8e839560 258 * @}
AnnaBridge 163:e59c8e839560 259 */
AnnaBridge 163:e59c8e839560 260
AnnaBridge 163:e59c8e839560 261 /* Exported typedef ----------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 262
AnnaBridge 163:e59c8e839560 263 /** @defgroup FMC_NORSRAM_Exported_typedef FMC Low Layer Exported Types
AnnaBridge 163:e59c8e839560 264 * @{
AnnaBridge 163:e59c8e839560 265 */
AnnaBridge 163:e59c8e839560 266
AnnaBridge 163:e59c8e839560 267 #define FMC_NORSRAM_TypeDef FMC_Bank1_TypeDef
AnnaBridge 163:e59c8e839560 268 #define FMC_NORSRAM_EXTENDED_TypeDef FMC_Bank1E_TypeDef
AnnaBridge 163:e59c8e839560 269 #define FMC_NAND_TypeDef FMC_Bank2_3_TypeDef
AnnaBridge 163:e59c8e839560 270 #define FMC_PCCARD_TypeDef FMC_Bank4_TypeDef
AnnaBridge 163:e59c8e839560 271
AnnaBridge 163:e59c8e839560 272 #define FMC_NORSRAM_DEVICE FMC_Bank1
AnnaBridge 163:e59c8e839560 273 #define FMC_NORSRAM_EXTENDED_DEVICE FMC_Bank1E
AnnaBridge 163:e59c8e839560 274 #define FMC_NAND_DEVICE FMC_Bank2_3
AnnaBridge 163:e59c8e839560 275 #define FMC_PCCARD_DEVICE FMC_Bank4
AnnaBridge 163:e59c8e839560 276
AnnaBridge 163:e59c8e839560 277 /**
AnnaBridge 163:e59c8e839560 278 * @brief FMC_NORSRAM Configuration Structure definition
AnnaBridge 163:e59c8e839560 279 */
AnnaBridge 163:e59c8e839560 280 typedef struct
AnnaBridge 163:e59c8e839560 281 {
AnnaBridge 163:e59c8e839560 282 uint32_t NSBank; /*!< Specifies the NORSRAM memory device that will be used.
AnnaBridge 163:e59c8e839560 283 This parameter can be a value of @ref FMC_NORSRAM_Bank */
AnnaBridge 163:e59c8e839560 284
AnnaBridge 163:e59c8e839560 285 uint32_t DataAddressMux; /*!< Specifies whether the address and data values are
AnnaBridge 163:e59c8e839560 286 multiplexed on the data bus or not.
AnnaBridge 163:e59c8e839560 287 This parameter can be a value of @ref FMC_Data_Address_Bus_Multiplexing */
AnnaBridge 163:e59c8e839560 288
AnnaBridge 163:e59c8e839560 289 uint32_t MemoryType; /*!< Specifies the type of external memory attached to
AnnaBridge 163:e59c8e839560 290 the corresponding memory device.
AnnaBridge 163:e59c8e839560 291 This parameter can be a value of @ref FMC_Memory_Type */
AnnaBridge 163:e59c8e839560 292
AnnaBridge 163:e59c8e839560 293 uint32_t MemoryDataWidth; /*!< Specifies the external memory device width.
AnnaBridge 163:e59c8e839560 294 This parameter can be a value of @ref FMC_NORSRAM_Data_Width */
AnnaBridge 163:e59c8e839560 295
AnnaBridge 163:e59c8e839560 296 uint32_t BurstAccessMode; /*!< Enables or disables the burst access mode for Flash memory,
AnnaBridge 163:e59c8e839560 297 valid only with synchronous burst Flash memories.
AnnaBridge 163:e59c8e839560 298 This parameter can be a value of @ref FMC_Burst_Access_Mode */
AnnaBridge 163:e59c8e839560 299
AnnaBridge 163:e59c8e839560 300 uint32_t WaitSignalPolarity; /*!< Specifies the wait signal polarity, valid only when accessing
AnnaBridge 163:e59c8e839560 301 the Flash memory in burst mode.
AnnaBridge 163:e59c8e839560 302 This parameter can be a value of @ref FMC_Wait_Signal_Polarity */
AnnaBridge 163:e59c8e839560 303
AnnaBridge 163:e59c8e839560 304 uint32_t WrapMode; /*!< Enables or disables the Wrapped burst access mode for Flash
AnnaBridge 163:e59c8e839560 305 memory, valid only when accessing Flash memories in burst mode.
AnnaBridge 163:e59c8e839560 306 This parameter can be a value of @ref FMC_Wrap_Mode */
AnnaBridge 163:e59c8e839560 307
AnnaBridge 163:e59c8e839560 308 uint32_t WaitSignalActive; /*!< Specifies if the wait signal is asserted by the memory one
AnnaBridge 163:e59c8e839560 309 clock cycle before the wait state or during the wait state,
AnnaBridge 163:e59c8e839560 310 valid only when accessing memories in burst mode.
AnnaBridge 163:e59c8e839560 311 This parameter can be a value of @ref FMC_Wait_Timing */
AnnaBridge 163:e59c8e839560 312
AnnaBridge 163:e59c8e839560 313 uint32_t WriteOperation; /*!< Enables or disables the write operation in the selected device by the FMC.
AnnaBridge 163:e59c8e839560 314 This parameter can be a value of @ref FMC_Write_Operation */
AnnaBridge 163:e59c8e839560 315
AnnaBridge 163:e59c8e839560 316 uint32_t WaitSignal; /*!< Enables or disables the wait state insertion via wait
AnnaBridge 163:e59c8e839560 317 signal, valid for Flash memory access in burst mode.
AnnaBridge 163:e59c8e839560 318 This parameter can be a value of @ref FMC_Wait_Signal */
AnnaBridge 163:e59c8e839560 319
AnnaBridge 163:e59c8e839560 320 uint32_t ExtendedMode; /*!< Enables or disables the extended mode.
AnnaBridge 163:e59c8e839560 321 This parameter can be a value of @ref FMC_Extended_Mode */
AnnaBridge 163:e59c8e839560 322
AnnaBridge 163:e59c8e839560 323 uint32_t AsynchronousWait; /*!< Enables or disables wait signal during asynchronous transfers,
AnnaBridge 163:e59c8e839560 324 valid only with asynchronous Flash memories.
AnnaBridge 163:e59c8e839560 325 This parameter can be a value of @ref FMC_AsynchronousWait */
AnnaBridge 163:e59c8e839560 326
AnnaBridge 163:e59c8e839560 327 uint32_t WriteBurst; /*!< Enables or disables the write burst operation.
AnnaBridge 163:e59c8e839560 328 This parameter can be a value of @ref FMC_Write_Burst */
AnnaBridge 163:e59c8e839560 329
AnnaBridge 163:e59c8e839560 330 uint32_t ContinuousClock; /*!< Enables or disables the FMC clock output to external memory devices.
AnnaBridge 163:e59c8e839560 331 This parameter is only enabled through the FMC_BCR1 register, and don't care
AnnaBridge 163:e59c8e839560 332 through FMC_BCR2..4 registers.
AnnaBridge 163:e59c8e839560 333 This parameter can be a value of @ref FMC_Continous_Clock */
AnnaBridge 163:e59c8e839560 334
AnnaBridge 163:e59c8e839560 335 }FMC_NORSRAM_InitTypeDef;
AnnaBridge 163:e59c8e839560 336
AnnaBridge 163:e59c8e839560 337 /**
AnnaBridge 163:e59c8e839560 338 * @brief FMC_NORSRAM Timing parameters structure definition
AnnaBridge 163:e59c8e839560 339 */
AnnaBridge 163:e59c8e839560 340 typedef struct
AnnaBridge 163:e59c8e839560 341 {
AnnaBridge 163:e59c8e839560 342 uint32_t AddressSetupTime; /*!< Defines the number of HCLK cycles to configure
AnnaBridge 163:e59c8e839560 343 the duration of the address setup time.
AnnaBridge 163:e59c8e839560 344 This parameter can be a value between Min_Data = 0 and Max_Data = 15.
AnnaBridge 163:e59c8e839560 345 @note This parameter is not used with synchronous NOR Flash memories. */
AnnaBridge 163:e59c8e839560 346
AnnaBridge 163:e59c8e839560 347 uint32_t AddressHoldTime; /*!< Defines the number of HCLK cycles to configure
AnnaBridge 163:e59c8e839560 348 the duration of the address hold time.
AnnaBridge 163:e59c8e839560 349 This parameter can be a value between Min_Data = 1 and Max_Data = 15.
AnnaBridge 163:e59c8e839560 350 @note This parameter is not used with synchronous NOR Flash memories. */
AnnaBridge 163:e59c8e839560 351
AnnaBridge 163:e59c8e839560 352 uint32_t DataSetupTime; /*!< Defines the number of HCLK cycles to configure
AnnaBridge 163:e59c8e839560 353 the duration of the data setup time.
AnnaBridge 163:e59c8e839560 354 This parameter can be a value between Min_Data = 1 and Max_Data = 255.
AnnaBridge 163:e59c8e839560 355 @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed
AnnaBridge 163:e59c8e839560 356 NOR Flash memories. */
AnnaBridge 163:e59c8e839560 357
AnnaBridge 163:e59c8e839560 358 uint32_t BusTurnAroundDuration; /*!< Defines the number of HCLK cycles to configure
AnnaBridge 163:e59c8e839560 359 the duration of the bus turnaround.
AnnaBridge 163:e59c8e839560 360 This parameter can be a value between Min_Data = 0 and Max_Data = 15.
AnnaBridge 163:e59c8e839560 361 @note This parameter is only used for multiplexed NOR Flash memories. */
AnnaBridge 163:e59c8e839560 362
AnnaBridge 163:e59c8e839560 363 uint32_t CLKDivision; /*!< Defines the period of CLK clock output signal, expressed in number of
AnnaBridge 163:e59c8e839560 364 HCLK cycles. This parameter can be a value between Min_Data = 2 and Max_Data = 16.
AnnaBridge 163:e59c8e839560 365 @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM
AnnaBridge 163:e59c8e839560 366 accesses. */
AnnaBridge 163:e59c8e839560 367
AnnaBridge 163:e59c8e839560 368 uint32_t DataLatency; /*!< Defines the number of memory clock cycles to issue
AnnaBridge 163:e59c8e839560 369 to the memory before getting the first data.
AnnaBridge 163:e59c8e839560 370 The parameter value depends on the memory type as shown below:
AnnaBridge 163:e59c8e839560 371 - It must be set to 0 in case of a CRAM
AnnaBridge 163:e59c8e839560 372 - It is don't care in asynchronous NOR, SRAM or ROM accesses
AnnaBridge 163:e59c8e839560 373 - It may assume a value between Min_Data = 2 and Max_Data = 17 in NOR Flash memories
AnnaBridge 163:e59c8e839560 374 with synchronous burst mode enable */
AnnaBridge 163:e59c8e839560 375
AnnaBridge 163:e59c8e839560 376 uint32_t AccessMode; /*!< Specifies the asynchronous access mode.
AnnaBridge 163:e59c8e839560 377 This parameter can be a value of @ref FMC_Access_Mode */
AnnaBridge 163:e59c8e839560 378
AnnaBridge 163:e59c8e839560 379 }FMC_NORSRAM_TimingTypeDef;
AnnaBridge 163:e59c8e839560 380
AnnaBridge 163:e59c8e839560 381 /**
AnnaBridge 163:e59c8e839560 382 * @brief FMC_NAND Configuration Structure definition
AnnaBridge 163:e59c8e839560 383 */
AnnaBridge 163:e59c8e839560 384 typedef struct
AnnaBridge 163:e59c8e839560 385 {
AnnaBridge 163:e59c8e839560 386 uint32_t NandBank; /*!< Specifies the NAND memory device that will be used.
AnnaBridge 163:e59c8e839560 387 This parameter can be a value of @ref FMC_NAND_Bank */
AnnaBridge 163:e59c8e839560 388
AnnaBridge 163:e59c8e839560 389 uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the NAND Memory device.
AnnaBridge 163:e59c8e839560 390 This parameter can be any value of @ref FMC_Wait_feature */
AnnaBridge 163:e59c8e839560 391
AnnaBridge 163:e59c8e839560 392 uint32_t MemoryDataWidth; /*!< Specifies the external memory device width.
AnnaBridge 163:e59c8e839560 393 This parameter can be any value of @ref FMC_NAND_Data_Width */
AnnaBridge 163:e59c8e839560 394
AnnaBridge 163:e59c8e839560 395 uint32_t EccComputation; /*!< Enables or disables the ECC computation.
AnnaBridge 163:e59c8e839560 396 This parameter can be any value of @ref FMC_ECC */
AnnaBridge 163:e59c8e839560 397
AnnaBridge 163:e59c8e839560 398 uint32_t ECCPageSize; /*!< Defines the page size for the extended ECC.
AnnaBridge 163:e59c8e839560 399 This parameter can be any value of @ref FMC_ECC_Page_Size */
AnnaBridge 163:e59c8e839560 400
AnnaBridge 163:e59c8e839560 401 uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the
AnnaBridge 163:e59c8e839560 402 delay between CLE low and RE low.
AnnaBridge 163:e59c8e839560 403 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 404
AnnaBridge 163:e59c8e839560 405 uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the
AnnaBridge 163:e59c8e839560 406 delay between ALE low and RE low.
AnnaBridge 163:e59c8e839560 407 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 408
AnnaBridge 163:e59c8e839560 409 }FMC_NAND_InitTypeDef;
AnnaBridge 163:e59c8e839560 410
AnnaBridge 163:e59c8e839560 411 /**
AnnaBridge 163:e59c8e839560 412 * @brief FMC_NAND_PCC Timing parameters structure definition
AnnaBridge 163:e59c8e839560 413 */
AnnaBridge 163:e59c8e839560 414 typedef struct
AnnaBridge 163:e59c8e839560 415 {
AnnaBridge 163:e59c8e839560 416 uint32_t SetupTime; /*!< Defines the number of HCLK cycles to setup address before
AnnaBridge 163:e59c8e839560 417 the command assertion for NAND-Flash read or write access
AnnaBridge 163:e59c8e839560 418 to common/Attribute or I/O memory space (depending on
AnnaBridge 163:e59c8e839560 419 the memory space timing to be configured).
AnnaBridge 163:e59c8e839560 420 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 421
AnnaBridge 163:e59c8e839560 422 uint32_t WaitSetupTime; /*!< Defines the minimum number of HCLK cycles to assert the
AnnaBridge 163:e59c8e839560 423 command for NAND-Flash read or write access to
AnnaBridge 163:e59c8e839560 424 common/Attribute or I/O memory space (depending on the
AnnaBridge 163:e59c8e839560 425 memory space timing to be configured).
AnnaBridge 163:e59c8e839560 426 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 427
AnnaBridge 163:e59c8e839560 428 uint32_t HoldSetupTime; /*!< Defines the number of HCLK clock cycles to hold address
AnnaBridge 163:e59c8e839560 429 (and data for write access) after the command de-assertion
AnnaBridge 163:e59c8e839560 430 for NAND-Flash read or write access to common/Attribute
AnnaBridge 163:e59c8e839560 431 or I/O memory space (depending on the memory space timing
AnnaBridge 163:e59c8e839560 432 to be configured).
AnnaBridge 163:e59c8e839560 433 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 434
AnnaBridge 163:e59c8e839560 435 uint32_t HiZSetupTime; /*!< Defines the number of HCLK clock cycles during which the
AnnaBridge 163:e59c8e839560 436 data bus is kept in HiZ after the start of a NAND-Flash
AnnaBridge 163:e59c8e839560 437 write access to common/Attribute or I/O memory space (depending
AnnaBridge 163:e59c8e839560 438 on the memory space timing to be configured).
AnnaBridge 163:e59c8e839560 439 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 440
AnnaBridge 163:e59c8e839560 441 }FMC_NAND_PCC_TimingTypeDef;
AnnaBridge 163:e59c8e839560 442
AnnaBridge 163:e59c8e839560 443 /**
AnnaBridge 163:e59c8e839560 444 * @brief FMC_NAND Configuration Structure definition
AnnaBridge 163:e59c8e839560 445 */
AnnaBridge 163:e59c8e839560 446 typedef struct
AnnaBridge 163:e59c8e839560 447 {
AnnaBridge 163:e59c8e839560 448 uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the PCCARD Memory device.
AnnaBridge 163:e59c8e839560 449 This parameter can be any value of @ref FMC_Wait_feature */
AnnaBridge 163:e59c8e839560 450
AnnaBridge 163:e59c8e839560 451 uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the
AnnaBridge 163:e59c8e839560 452 delay between CLE low and RE low.
AnnaBridge 163:e59c8e839560 453 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 454
AnnaBridge 163:e59c8e839560 455 uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the
AnnaBridge 163:e59c8e839560 456 delay between ALE low and RE low.
AnnaBridge 163:e59c8e839560 457 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
AnnaBridge 163:e59c8e839560 458
AnnaBridge 163:e59c8e839560 459 }FMC_PCCARD_InitTypeDef;
AnnaBridge 163:e59c8e839560 460
AnnaBridge 163:e59c8e839560 461 /**
AnnaBridge 163:e59c8e839560 462 * @}
AnnaBridge 163:e59c8e839560 463 */
AnnaBridge 163:e59c8e839560 464
AnnaBridge 163:e59c8e839560 465 /* Exported constants --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 466
AnnaBridge 163:e59c8e839560 467 /** @defgroup FMC_Exported_Constants FMC Low Layer Exported Constants
AnnaBridge 163:e59c8e839560 468 * @{
AnnaBridge 163:e59c8e839560 469 */
AnnaBridge 163:e59c8e839560 470
AnnaBridge 163:e59c8e839560 471 /** @defgroup FMC_NORSRAM_Exported_constants FMC NOR/SRAM Exported constants
AnnaBridge 163:e59c8e839560 472 * @{
AnnaBridge 163:e59c8e839560 473 */
AnnaBridge 163:e59c8e839560 474
AnnaBridge 163:e59c8e839560 475 /** @defgroup FMC_NORSRAM_Bank FMC NOR/SRAM Bank
AnnaBridge 163:e59c8e839560 476 * @{
AnnaBridge 163:e59c8e839560 477 */
AnnaBridge 163:e59c8e839560 478 #define FMC_NORSRAM_BANK1 ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 479 #define FMC_NORSRAM_BANK2 ((uint32_t)0x00000002)
AnnaBridge 163:e59c8e839560 480 #define FMC_NORSRAM_BANK3 ((uint32_t)0x00000004)
AnnaBridge 163:e59c8e839560 481 #define FMC_NORSRAM_BANK4 ((uint32_t)0x00000006)
AnnaBridge 163:e59c8e839560 482
AnnaBridge 163:e59c8e839560 483 /**
AnnaBridge 163:e59c8e839560 484 * @}
AnnaBridge 163:e59c8e839560 485 */
AnnaBridge 163:e59c8e839560 486
AnnaBridge 163:e59c8e839560 487 /** @defgroup FMC_Data_Address_Bus_Multiplexing FMC Data Address Bus Multiplexing
AnnaBridge 163:e59c8e839560 488 * @{
AnnaBridge 163:e59c8e839560 489 */
AnnaBridge 163:e59c8e839560 490
AnnaBridge 163:e59c8e839560 491 #define FMC_DATA_ADDRESS_MUX_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 492 #define FMC_DATA_ADDRESS_MUX_ENABLE ((uint32_t)FMC_BCRx_MUXEN)
AnnaBridge 163:e59c8e839560 493
AnnaBridge 163:e59c8e839560 494 /**
AnnaBridge 163:e59c8e839560 495 * @}
AnnaBridge 163:e59c8e839560 496 */
AnnaBridge 163:e59c8e839560 497
AnnaBridge 163:e59c8e839560 498 /** @defgroup FMC_Memory_Type FMC Memory Type
AnnaBridge 163:e59c8e839560 499 * @{
AnnaBridge 163:e59c8e839560 500 */
AnnaBridge 163:e59c8e839560 501
AnnaBridge 163:e59c8e839560 502 #define FMC_MEMORY_TYPE_SRAM ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 503 #define FMC_MEMORY_TYPE_PSRAM ((uint32_t)FMC_BCRx_MTYP_0)
AnnaBridge 163:e59c8e839560 504 #define FMC_MEMORY_TYPE_NOR ((uint32_t)FMC_BCRx_MTYP_1)
AnnaBridge 163:e59c8e839560 505
AnnaBridge 163:e59c8e839560 506 /**
AnnaBridge 163:e59c8e839560 507 * @}
AnnaBridge 163:e59c8e839560 508 */
AnnaBridge 163:e59c8e839560 509
AnnaBridge 163:e59c8e839560 510 /** @defgroup FMC_NORSRAM_Data_Width FMC NOR/SRAM Data Width
AnnaBridge 163:e59c8e839560 511 * @{
AnnaBridge 163:e59c8e839560 512 */
AnnaBridge 163:e59c8e839560 513
AnnaBridge 163:e59c8e839560 514 #define FMC_NORSRAM_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 515 #define FMC_NORSRAM_MEM_BUS_WIDTH_16 ((uint32_t)FMC_BCRx_MWID_0)
AnnaBridge 163:e59c8e839560 516 #define FMC_NORSRAM_MEM_BUS_WIDTH_32 ((uint32_t)FMC_BCRx_MWID_1)
AnnaBridge 163:e59c8e839560 517
AnnaBridge 163:e59c8e839560 518 /**
AnnaBridge 163:e59c8e839560 519 * @}
AnnaBridge 163:e59c8e839560 520 */
AnnaBridge 163:e59c8e839560 521
AnnaBridge 163:e59c8e839560 522 /** @defgroup FMC_NORSRAM_Flash_Access FMC NOR/SRAM Flash Access
AnnaBridge 163:e59c8e839560 523 * @{
AnnaBridge 163:e59c8e839560 524 */
AnnaBridge 163:e59c8e839560 525
AnnaBridge 163:e59c8e839560 526 #define FMC_NORSRAM_FLASH_ACCESS_ENABLE ((uint32_t)FMC_BCRx_FACCEN)
AnnaBridge 163:e59c8e839560 527 #define FMC_NORSRAM_FLASH_ACCESS_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 528 /**
AnnaBridge 163:e59c8e839560 529 * @}
AnnaBridge 163:e59c8e839560 530 */
AnnaBridge 163:e59c8e839560 531
AnnaBridge 163:e59c8e839560 532 /** @defgroup FMC_Burst_Access_Mode FMC Burst Access Mode
AnnaBridge 163:e59c8e839560 533 * @{
AnnaBridge 163:e59c8e839560 534 */
AnnaBridge 163:e59c8e839560 535
AnnaBridge 163:e59c8e839560 536 #define FMC_BURST_ACCESS_MODE_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 537 #define FMC_BURST_ACCESS_MODE_ENABLE ((uint32_t)FMC_BCRx_BURSTEN)
AnnaBridge 163:e59c8e839560 538
AnnaBridge 163:e59c8e839560 539 /**
AnnaBridge 163:e59c8e839560 540 * @}
AnnaBridge 163:e59c8e839560 541 */
AnnaBridge 163:e59c8e839560 542
AnnaBridge 163:e59c8e839560 543
AnnaBridge 163:e59c8e839560 544 /** @defgroup FMC_Wait_Signal_Polarity FMC Wait Signal Polarity
AnnaBridge 163:e59c8e839560 545 * @{
AnnaBridge 163:e59c8e839560 546 */
AnnaBridge 163:e59c8e839560 547
AnnaBridge 163:e59c8e839560 548 #define FMC_WAIT_SIGNAL_POLARITY_LOW ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 549 #define FMC_WAIT_SIGNAL_POLARITY_HIGH ((uint32_t)FMC_BCRx_WAITPOL)
AnnaBridge 163:e59c8e839560 550
AnnaBridge 163:e59c8e839560 551 /**
AnnaBridge 163:e59c8e839560 552 * @}
AnnaBridge 163:e59c8e839560 553 */
AnnaBridge 163:e59c8e839560 554
AnnaBridge 163:e59c8e839560 555 /** @defgroup FMC_Wrap_Mode FMC Wrap Mode
AnnaBridge 163:e59c8e839560 556 * @{
AnnaBridge 163:e59c8e839560 557 */
AnnaBridge 163:e59c8e839560 558
AnnaBridge 163:e59c8e839560 559 #define FMC_WRAP_MODE_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 560 #define FMC_WRAP_MODE_ENABLE ((uint32_t)FMC_BCRx_WRAPMOD)
AnnaBridge 163:e59c8e839560 561
AnnaBridge 163:e59c8e839560 562 /**
AnnaBridge 163:e59c8e839560 563 * @}
AnnaBridge 163:e59c8e839560 564 */
AnnaBridge 163:e59c8e839560 565
AnnaBridge 163:e59c8e839560 566 /** @defgroup FMC_Wait_Timing FMC Wait Timing
AnnaBridge 163:e59c8e839560 567 * @{
AnnaBridge 163:e59c8e839560 568 */
AnnaBridge 163:e59c8e839560 569
AnnaBridge 163:e59c8e839560 570 #define FMC_WAIT_TIMING_BEFORE_WS ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 571 #define FMC_WAIT_TIMING_DURING_WS ((uint32_t)FMC_BCRx_WAITCFG)
AnnaBridge 163:e59c8e839560 572
AnnaBridge 163:e59c8e839560 573 /**
AnnaBridge 163:e59c8e839560 574 * @}
AnnaBridge 163:e59c8e839560 575 */
AnnaBridge 163:e59c8e839560 576
AnnaBridge 163:e59c8e839560 577 /** @defgroup FMC_Write_Operation FMC Write Operation
AnnaBridge 163:e59c8e839560 578 * @{
AnnaBridge 163:e59c8e839560 579 */
AnnaBridge 163:e59c8e839560 580
AnnaBridge 163:e59c8e839560 581 #define FMC_WRITE_OPERATION_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 582 #define FMC_WRITE_OPERATION_ENABLE ((uint32_t)FMC_BCRx_WREN)
AnnaBridge 163:e59c8e839560 583
AnnaBridge 163:e59c8e839560 584 /**
AnnaBridge 163:e59c8e839560 585 * @}
AnnaBridge 163:e59c8e839560 586 */
AnnaBridge 163:e59c8e839560 587
AnnaBridge 163:e59c8e839560 588 /** @defgroup FMC_Wait_Signal FMC Wait Signal
AnnaBridge 163:e59c8e839560 589 * @{
AnnaBridge 163:e59c8e839560 590 */
AnnaBridge 163:e59c8e839560 591
AnnaBridge 163:e59c8e839560 592 #define FMC_WAIT_SIGNAL_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 593 #define FMC_WAIT_SIGNAL_ENABLE ((uint32_t)FMC_BCRx_WAITEN)
AnnaBridge 163:e59c8e839560 594
AnnaBridge 163:e59c8e839560 595 /**
AnnaBridge 163:e59c8e839560 596 * @}
AnnaBridge 163:e59c8e839560 597 */
AnnaBridge 163:e59c8e839560 598
AnnaBridge 163:e59c8e839560 599 /** @defgroup FMC_Extended_Mode FMC Extended Mode
AnnaBridge 163:e59c8e839560 600 * @{
AnnaBridge 163:e59c8e839560 601 */
AnnaBridge 163:e59c8e839560 602
AnnaBridge 163:e59c8e839560 603 #define FMC_EXTENDED_MODE_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 604 #define FMC_EXTENDED_MODE_ENABLE ((uint32_t)FMC_BCRx_EXTMOD)
AnnaBridge 163:e59c8e839560 605
AnnaBridge 163:e59c8e839560 606 /**
AnnaBridge 163:e59c8e839560 607 * @}
AnnaBridge 163:e59c8e839560 608 */
AnnaBridge 163:e59c8e839560 609
AnnaBridge 163:e59c8e839560 610 /** @defgroup FMC_AsynchronousWait FMC Asynchronous Wait
AnnaBridge 163:e59c8e839560 611 * @{
AnnaBridge 163:e59c8e839560 612 */
AnnaBridge 163:e59c8e839560 613
AnnaBridge 163:e59c8e839560 614 #define FMC_ASYNCHRONOUS_WAIT_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 615 #define FMC_ASYNCHRONOUS_WAIT_ENABLE ((uint32_t)FMC_BCRx_ASYNCWAIT)
AnnaBridge 163:e59c8e839560 616
AnnaBridge 163:e59c8e839560 617 /**
AnnaBridge 163:e59c8e839560 618 * @}
AnnaBridge 163:e59c8e839560 619 */
AnnaBridge 163:e59c8e839560 620
AnnaBridge 163:e59c8e839560 621 /** @defgroup FMC_Write_Burst FMC Write Burst
AnnaBridge 163:e59c8e839560 622 * @{
AnnaBridge 163:e59c8e839560 623 */
AnnaBridge 163:e59c8e839560 624
AnnaBridge 163:e59c8e839560 625 #define FMC_WRITE_BURST_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 626 #define FMC_WRITE_BURST_ENABLE ((uint32_t)FMC_BCRx_CBURSTRW)
AnnaBridge 163:e59c8e839560 627
AnnaBridge 163:e59c8e839560 628 /**
AnnaBridge 163:e59c8e839560 629 * @}
AnnaBridge 163:e59c8e839560 630 */
AnnaBridge 163:e59c8e839560 631
AnnaBridge 163:e59c8e839560 632 /** @defgroup FMC_Continous_Clock FMC Continous Clock
AnnaBridge 163:e59c8e839560 633 * @{
AnnaBridge 163:e59c8e839560 634 */
AnnaBridge 163:e59c8e839560 635 #define FMC_CONTINUOUS_CLOCK_SYNC_ONLY ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 636 #define FMC_CONTINUOUS_CLOCK_SYNC_ASYNC ((uint32_t)FMC_BCR1_CCLKEN)
AnnaBridge 163:e59c8e839560 637 /**
AnnaBridge 163:e59c8e839560 638 * @}
AnnaBridge 163:e59c8e839560 639 */
AnnaBridge 163:e59c8e839560 640
AnnaBridge 163:e59c8e839560 641 /** @defgroup FMC_Access_Mode FMC Access Mode
AnnaBridge 163:e59c8e839560 642 * @{
AnnaBridge 163:e59c8e839560 643 */
AnnaBridge 163:e59c8e839560 644
AnnaBridge 163:e59c8e839560 645 #define FMC_ACCESS_MODE_A ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 646 #define FMC_ACCESS_MODE_B ((uint32_t)FMC_BTRx_ACCMOD_0)
AnnaBridge 163:e59c8e839560 647 #define FMC_ACCESS_MODE_C ((uint32_t)FMC_BTRx_ACCMOD_1)
AnnaBridge 163:e59c8e839560 648 #define FMC_ACCESS_MODE_D ((uint32_t)(FMC_BTRx_ACCMOD_0 | FMC_BTRx_ACCMOD_1))
AnnaBridge 163:e59c8e839560 649
AnnaBridge 163:e59c8e839560 650 /**
AnnaBridge 163:e59c8e839560 651 * @}
AnnaBridge 163:e59c8e839560 652 */
AnnaBridge 163:e59c8e839560 653
AnnaBridge 163:e59c8e839560 654 /**
AnnaBridge 163:e59c8e839560 655 * @}
AnnaBridge 163:e59c8e839560 656 */
AnnaBridge 163:e59c8e839560 657
AnnaBridge 163:e59c8e839560 658 /** @defgroup FMC_NAND_Controller FMC NAND and PCCARD Controller
AnnaBridge 163:e59c8e839560 659 * @{
AnnaBridge 163:e59c8e839560 660 */
AnnaBridge 163:e59c8e839560 661
AnnaBridge 163:e59c8e839560 662 /** @defgroup FMC_NAND_Bank FMC NAND Bank
AnnaBridge 163:e59c8e839560 663 * @{
AnnaBridge 163:e59c8e839560 664 */
AnnaBridge 163:e59c8e839560 665 #define FMC_NAND_BANK2 ((uint32_t)0x00000010)
AnnaBridge 163:e59c8e839560 666 #define FMC_NAND_BANK3 ((uint32_t)0x00000100)
AnnaBridge 163:e59c8e839560 667
AnnaBridge 163:e59c8e839560 668 /**
AnnaBridge 163:e59c8e839560 669 * @}
AnnaBridge 163:e59c8e839560 670 */
AnnaBridge 163:e59c8e839560 671
AnnaBridge 163:e59c8e839560 672 /** @defgroup FMC_Wait_feature FMC Wait feature
AnnaBridge 163:e59c8e839560 673 * @{
AnnaBridge 163:e59c8e839560 674 */
AnnaBridge 163:e59c8e839560 675 #define FMC_NAND_PCC_WAIT_FEATURE_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 676 #define FMC_NAND_PCC_WAIT_FEATURE_ENABLE ((uint32_t)FMC_PCRx_PWAITEN)
AnnaBridge 163:e59c8e839560 677
AnnaBridge 163:e59c8e839560 678 /**
AnnaBridge 163:e59c8e839560 679 * @}
AnnaBridge 163:e59c8e839560 680 */
AnnaBridge 163:e59c8e839560 681
AnnaBridge 163:e59c8e839560 682 /** @defgroup FMC_PCR_Memory_Type FMC PCR Memory Type
AnnaBridge 163:e59c8e839560 683 * @{
AnnaBridge 163:e59c8e839560 684 */
AnnaBridge 163:e59c8e839560 685 #define FMC_PCR_MEMORY_TYPE_PCCARD ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 686 #define FMC_PCR_MEMORY_TYPE_NAND ((uint32_t)FMC_PCRx_PTYP)
AnnaBridge 163:e59c8e839560 687 /**
AnnaBridge 163:e59c8e839560 688 * @}
AnnaBridge 163:e59c8e839560 689 */
AnnaBridge 163:e59c8e839560 690
AnnaBridge 163:e59c8e839560 691 /** @defgroup FMC_NAND_Data_Width FMC NAND Data Width
AnnaBridge 163:e59c8e839560 692 * @{
AnnaBridge 163:e59c8e839560 693 */
AnnaBridge 163:e59c8e839560 694 #define FMC_NAND_PCC_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 695 #define FMC_NAND_PCC_MEM_BUS_WIDTH_16 ((uint32_t)FMC_PCRx_PWID_0)
AnnaBridge 163:e59c8e839560 696
AnnaBridge 163:e59c8e839560 697 /**
AnnaBridge 163:e59c8e839560 698 * @}
AnnaBridge 163:e59c8e839560 699 */
AnnaBridge 163:e59c8e839560 700
AnnaBridge 163:e59c8e839560 701 /** @defgroup FMC_ECC FMC NAND ECC
AnnaBridge 163:e59c8e839560 702 * @{
AnnaBridge 163:e59c8e839560 703 */
AnnaBridge 163:e59c8e839560 704 #define FMC_NAND_ECC_DISABLE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 705 #define FMC_NAND_ECC_ENABLE ((uint32_t)FMC_PCRx_ECCEN)
AnnaBridge 163:e59c8e839560 706
AnnaBridge 163:e59c8e839560 707 /**
AnnaBridge 163:e59c8e839560 708 * @}
AnnaBridge 163:e59c8e839560 709 */
AnnaBridge 163:e59c8e839560 710
AnnaBridge 163:e59c8e839560 711 /** @defgroup FMC_ECC_Page_Size FMC ECC Page Size
AnnaBridge 163:e59c8e839560 712 * @{
AnnaBridge 163:e59c8e839560 713 */
AnnaBridge 163:e59c8e839560 714 #define FMC_NAND_ECC_PAGE_SIZE_256BYTE ((uint32_t)0x00000000)
AnnaBridge 163:e59c8e839560 715 #define FMC_NAND_ECC_PAGE_SIZE_512BYTE ((uint32_t)FMC_PCRx_ECCPS_0)
AnnaBridge 163:e59c8e839560 716 #define FMC_NAND_ECC_PAGE_SIZE_1024BYTE ((uint32_t)FMC_PCRx_ECCPS_1)
AnnaBridge 163:e59c8e839560 717 #define FMC_NAND_ECC_PAGE_SIZE_2048BYTE ((uint32_t)FMC_PCRx_ECCPS_0|FMC_PCRx_ECCPS_1)
AnnaBridge 163:e59c8e839560 718 #define FMC_NAND_ECC_PAGE_SIZE_4096BYTE ((uint32_t)FMC_PCRx_ECCPS_2)
AnnaBridge 163:e59c8e839560 719 #define FMC_NAND_ECC_PAGE_SIZE_8192BYTE ((uint32_t)FMC_PCRx_ECCPS_0|FMC_PCRx_ECCPS_2)
AnnaBridge 163:e59c8e839560 720
AnnaBridge 163:e59c8e839560 721 /**
AnnaBridge 163:e59c8e839560 722 * @}
AnnaBridge 163:e59c8e839560 723 */
AnnaBridge 163:e59c8e839560 724
AnnaBridge 163:e59c8e839560 725 /** @defgroup FMC_Interrupt_definition FMC Interrupt definition
AnnaBridge 163:e59c8e839560 726 * @brief FMC Interrupt definition
AnnaBridge 163:e59c8e839560 727 * @{
AnnaBridge 163:e59c8e839560 728 */
AnnaBridge 163:e59c8e839560 729 #define FMC_IT_RISING_EDGE ((uint32_t)FMC_SRx_IREN)
AnnaBridge 163:e59c8e839560 730 #define FMC_IT_LEVEL ((uint32_t)FMC_SRx_ILEN)
AnnaBridge 163:e59c8e839560 731 #define FMC_IT_FALLING_EDGE ((uint32_t)FMC_SRx_IFEN)
AnnaBridge 163:e59c8e839560 732
AnnaBridge 163:e59c8e839560 733 /**
AnnaBridge 163:e59c8e839560 734 * @}
AnnaBridge 163:e59c8e839560 735 */
AnnaBridge 163:e59c8e839560 736
AnnaBridge 163:e59c8e839560 737 /** @defgroup FMC_Flag_definition FMC Flag definition
AnnaBridge 163:e59c8e839560 738 * @brief FMC Flag definition
AnnaBridge 163:e59c8e839560 739 * @{
AnnaBridge 163:e59c8e839560 740 */
AnnaBridge 163:e59c8e839560 741 #define FMC_FLAG_RISING_EDGE ((uint32_t)FMC_SRx_IRS)
AnnaBridge 163:e59c8e839560 742 #define FMC_FLAG_LEVEL ((uint32_t)FMC_SRx_ILS)
AnnaBridge 163:e59c8e839560 743 #define FMC_FLAG_FALLING_EDGE ((uint32_t)FMC_SRx_IFS)
AnnaBridge 163:e59c8e839560 744 #define FMC_FLAG_FEMPT ((uint32_t)FMC_SRx_FEMPT)
AnnaBridge 163:e59c8e839560 745
AnnaBridge 163:e59c8e839560 746 /**
AnnaBridge 163:e59c8e839560 747 * @}
AnnaBridge 163:e59c8e839560 748 */
AnnaBridge 163:e59c8e839560 749
AnnaBridge 163:e59c8e839560 750 /**
AnnaBridge 163:e59c8e839560 751 * @}
AnnaBridge 163:e59c8e839560 752 */
AnnaBridge 163:e59c8e839560 753
AnnaBridge 163:e59c8e839560 754 /**
AnnaBridge 163:e59c8e839560 755 * @}
AnnaBridge 163:e59c8e839560 756 */
AnnaBridge 163:e59c8e839560 757
AnnaBridge 163:e59c8e839560 758 /* Exported macro ------------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 759
AnnaBridge 163:e59c8e839560 760 /** @defgroup FMC_Exported_Macros FMC Low Layer Exported Macros
AnnaBridge 163:e59c8e839560 761 * @{
AnnaBridge 163:e59c8e839560 762 */
AnnaBridge 163:e59c8e839560 763
AnnaBridge 163:e59c8e839560 764 /** @defgroup FMC_NOR_Macros FMC NOR/SRAM Exported Macros
AnnaBridge 163:e59c8e839560 765 * @brief macros to handle NOR device enable/disable and read/write operations
AnnaBridge 163:e59c8e839560 766 * @{
AnnaBridge 163:e59c8e839560 767 */
AnnaBridge 163:e59c8e839560 768
AnnaBridge 163:e59c8e839560 769 /**
AnnaBridge 163:e59c8e839560 770 * @brief Enable the NORSRAM device access.
AnnaBridge 163:e59c8e839560 771 * @param __INSTANCE__ FMC_NORSRAM Instance
AnnaBridge 163:e59c8e839560 772 * @param __BANK__ FMC_NORSRAM Bank
AnnaBridge 163:e59c8e839560 773 * @retval none
AnnaBridge 163:e59c8e839560 774 */
AnnaBridge 163:e59c8e839560 775 #define __FMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) SET_BIT((__INSTANCE__)->BTCR[(__BANK__)], FMC_BCRx_MBKEN)
AnnaBridge 163:e59c8e839560 776
AnnaBridge 163:e59c8e839560 777 /**
AnnaBridge 163:e59c8e839560 778 * @brief Disable the NORSRAM device access.
AnnaBridge 163:e59c8e839560 779 * @param __INSTANCE__ FMC_NORSRAM Instance
AnnaBridge 163:e59c8e839560 780 * @param __BANK__ FMC_NORSRAM Bank
AnnaBridge 163:e59c8e839560 781 * @retval none
AnnaBridge 163:e59c8e839560 782 */
AnnaBridge 163:e59c8e839560 783 #define __FMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) CLEAR_BIT((__INSTANCE__)->BTCR[(__BANK__)], FMC_BCRx_MBKEN)
AnnaBridge 163:e59c8e839560 784
AnnaBridge 163:e59c8e839560 785 /**
AnnaBridge 163:e59c8e839560 786 * @}
AnnaBridge 163:e59c8e839560 787 */
AnnaBridge 163:e59c8e839560 788
AnnaBridge 163:e59c8e839560 789 /** @defgroup FMC_NAND_Macros FMC NAND Macros
AnnaBridge 163:e59c8e839560 790 * @brief macros to handle NAND device enable/disable
AnnaBridge 163:e59c8e839560 791 * @{
AnnaBridge 163:e59c8e839560 792 */
AnnaBridge 163:e59c8e839560 793
AnnaBridge 163:e59c8e839560 794 /**
AnnaBridge 163:e59c8e839560 795 * @brief Enable the NAND device access.
AnnaBridge 163:e59c8e839560 796 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 797 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 798 * @retval None
AnnaBridge 163:e59c8e839560 799 */
AnnaBridge 163:e59c8e839560 800 #define __FMC_NAND_ENABLE(__INSTANCE__, __BANK__) (((__BANK__) == FMC_NAND_BANK2)? SET_BIT((__INSTANCE__)->PCR2, FMC_PCRx_PBKEN): \
AnnaBridge 163:e59c8e839560 801 SET_BIT((__INSTANCE__)->PCR3, FMC_PCRx_PBKEN))
AnnaBridge 163:e59c8e839560 802
AnnaBridge 163:e59c8e839560 803 /**
AnnaBridge 163:e59c8e839560 804 * @brief Disable the NAND device access.
AnnaBridge 163:e59c8e839560 805 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 806 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 807 * @retval None
AnnaBridge 163:e59c8e839560 808 */
AnnaBridge 163:e59c8e839560 809 #define __FMC_NAND_DISABLE(__INSTANCE__, __BANK__) (((__BANK__) == FMC_NAND_BANK2)? CLEAR_BIT((__INSTANCE__)->PCR2, FMC_PCRx_PBKEN): \
AnnaBridge 163:e59c8e839560 810 CLEAR_BIT((__INSTANCE__)->PCR3, FMC_PCRx_PBKEN))
AnnaBridge 163:e59c8e839560 811
AnnaBridge 163:e59c8e839560 812 /**
AnnaBridge 163:e59c8e839560 813 * @}
AnnaBridge 163:e59c8e839560 814 */
AnnaBridge 163:e59c8e839560 815
AnnaBridge 163:e59c8e839560 816 /** @defgroup FMC_PCCARD_Macros FMC PCCARD Macros
AnnaBridge 163:e59c8e839560 817 * @brief macros to handle PCCARD read/write operations
AnnaBridge 163:e59c8e839560 818 * @{
AnnaBridge 163:e59c8e839560 819 */
AnnaBridge 163:e59c8e839560 820
AnnaBridge 163:e59c8e839560 821 /**
AnnaBridge 163:e59c8e839560 822 * @brief Enable the PCCARD device access.
AnnaBridge 163:e59c8e839560 823 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 824 * @retval None
AnnaBridge 163:e59c8e839560 825 */
AnnaBridge 163:e59c8e839560 826 #define __FMC_PCCARD_ENABLE(__INSTANCE__) SET_BIT((__INSTANCE__)->PCR4, FMC_PCRx_PBKEN)
AnnaBridge 163:e59c8e839560 827
AnnaBridge 163:e59c8e839560 828 /**
AnnaBridge 163:e59c8e839560 829 * @brief Disable the PCCARD device access.
AnnaBridge 163:e59c8e839560 830 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 831 * @retval None
AnnaBridge 163:e59c8e839560 832 */
AnnaBridge 163:e59c8e839560 833 #define __FMC_PCCARD_DISABLE(__INSTANCE__) CLEAR_BIT((__INSTANCE__)->PCR4, FMC_PCRx_PBKEN)
AnnaBridge 163:e59c8e839560 834 /**
AnnaBridge 163:e59c8e839560 835 * @}
AnnaBridge 163:e59c8e839560 836 */
AnnaBridge 163:e59c8e839560 837
AnnaBridge 163:e59c8e839560 838 /** @defgroup FMC_Interrupt FMC Interrupt
AnnaBridge 163:e59c8e839560 839 * @brief macros to handle FMC interrupts
AnnaBridge 163:e59c8e839560 840 * @{
AnnaBridge 163:e59c8e839560 841 */
AnnaBridge 163:e59c8e839560 842
AnnaBridge 163:e59c8e839560 843 /**
AnnaBridge 163:e59c8e839560 844 * @brief Enable the NAND device interrupt.
AnnaBridge 163:e59c8e839560 845 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 846 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 847 * @param __INTERRUPT__ FMC_NAND interrupt
AnnaBridge 163:e59c8e839560 848 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 849 * @arg FMC_IT_RISING_EDGE Interrupt rising edge.
AnnaBridge 163:e59c8e839560 850 * @arg FMC_IT_LEVEL Interrupt level.
AnnaBridge 163:e59c8e839560 851 * @arg FMC_IT_FALLING_EDGE Interrupt falling edge.
AnnaBridge 163:e59c8e839560 852 * @retval None
AnnaBridge 163:e59c8e839560 853 */
AnnaBridge 163:e59c8e839560 854 #define __FMC_NAND_ENABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FMC_NAND_BANK2)? SET_BIT((__INSTANCE__)->SR2, (__INTERRUPT__)): \
AnnaBridge 163:e59c8e839560 855 SET_BIT((__INSTANCE__)->SR3, (__INTERRUPT__)))
AnnaBridge 163:e59c8e839560 856
AnnaBridge 163:e59c8e839560 857 /**
AnnaBridge 163:e59c8e839560 858 * @brief Disable the NAND device interrupt.
AnnaBridge 163:e59c8e839560 859 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 860 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 861 * @param __INTERRUPT__ FMC_NAND interrupt
AnnaBridge 163:e59c8e839560 862 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 863 * @arg FMC_IT_RISING_EDGE Interrupt rising edge.
AnnaBridge 163:e59c8e839560 864 * @arg FMC_IT_LEVEL Interrupt level.
AnnaBridge 163:e59c8e839560 865 * @arg FMC_IT_FALLING_EDGE Interrupt falling edge.
AnnaBridge 163:e59c8e839560 866 * @retval None
AnnaBridge 163:e59c8e839560 867 */
AnnaBridge 163:e59c8e839560 868 #define __FMC_NAND_DISABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FMC_NAND_BANK2)? CLEAR_BIT((__INSTANCE__)->SR2, (__INTERRUPT__)): \
AnnaBridge 163:e59c8e839560 869 CLEAR_BIT((__INSTANCE__)->SR3, (__INTERRUPT__)))
AnnaBridge 163:e59c8e839560 870
AnnaBridge 163:e59c8e839560 871 /**
AnnaBridge 163:e59c8e839560 872 * @brief Get flag status of the NAND device.
AnnaBridge 163:e59c8e839560 873 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 874 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 875 * @param __FLAG__ FMC_NAND flag
AnnaBridge 163:e59c8e839560 876 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 877 * @arg FMC_FLAG_RISING_EDGE Interrupt rising edge flag.
AnnaBridge 163:e59c8e839560 878 * @arg FMC_FLAG_LEVEL Interrupt level edge flag.
AnnaBridge 163:e59c8e839560 879 * @arg FMC_FLAG_FALLING_EDGE Interrupt falling edge flag.
AnnaBridge 163:e59c8e839560 880 * @arg FMC_FLAG_FEMPT FIFO empty flag.
AnnaBridge 163:e59c8e839560 881 * @retval The state of FLAG (SET or RESET).
AnnaBridge 163:e59c8e839560 882 */
AnnaBridge 163:e59c8e839560 883 #define __FMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FMC_NAND_BANK2)? (((__INSTANCE__)->SR2 &(__FLAG__)) == (__FLAG__)): \
AnnaBridge 163:e59c8e839560 884 (((__INSTANCE__)->SR3 &(__FLAG__)) == (__FLAG__)))
AnnaBridge 163:e59c8e839560 885
AnnaBridge 163:e59c8e839560 886 /**
AnnaBridge 163:e59c8e839560 887 * @brief Clear flag status of the NAND device.
AnnaBridge 163:e59c8e839560 888 * @param __INSTANCE__ FMC_NAND Instance
AnnaBridge 163:e59c8e839560 889 * @param __BANK__ FMC_NAND Bank
AnnaBridge 163:e59c8e839560 890 * @param __FLAG__ FMC_NAND flag
AnnaBridge 163:e59c8e839560 891 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 892 * @arg FMC_FLAG_RISING_EDGE Interrupt rising edge flag.
AnnaBridge 163:e59c8e839560 893 * @arg FMC_FLAG_LEVEL Interrupt level edge flag.
AnnaBridge 163:e59c8e839560 894 * @arg FMC_FLAG_FALLING_EDGE Interrupt falling edge flag.
AnnaBridge 163:e59c8e839560 895 * @arg FMC_FLAG_FEMPT FIFO empty flag.
AnnaBridge 163:e59c8e839560 896 * @retval None
AnnaBridge 163:e59c8e839560 897 */
AnnaBridge 163:e59c8e839560 898 #define __FMC_NAND_CLEAR_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FMC_NAND_BANK2)? CLEAR_BIT((__INSTANCE__)->SR2, (__FLAG__)): \
AnnaBridge 163:e59c8e839560 899 CLEAR_BIT((__INSTANCE__)->SR3, (__FLAG__)))
AnnaBridge 163:e59c8e839560 900
AnnaBridge 163:e59c8e839560 901 /**
AnnaBridge 163:e59c8e839560 902 * @brief Enable the PCCARD device interrupt.
AnnaBridge 163:e59c8e839560 903 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 904 * @param __INTERRUPT__ FMC_PCCARD interrupt
AnnaBridge 163:e59c8e839560 905 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 906 * @arg FMC_IT_RISING_EDGE Interrupt rising edge.
AnnaBridge 163:e59c8e839560 907 * @arg FMC_IT_LEVEL Interrupt level.
AnnaBridge 163:e59c8e839560 908 * @arg FMC_IT_FALLING_EDGE Interrupt falling edge.
AnnaBridge 163:e59c8e839560 909 * @retval None
AnnaBridge 163:e59c8e839560 910 */
AnnaBridge 163:e59c8e839560 911 #define __FMC_PCCARD_ENABLE_IT(__INSTANCE__, __INTERRUPT__) SET_BIT((__INSTANCE__)->SR4, (__INTERRUPT__))
AnnaBridge 163:e59c8e839560 912
AnnaBridge 163:e59c8e839560 913 /**
AnnaBridge 163:e59c8e839560 914 * @brief Disable the PCCARD device interrupt.
AnnaBridge 163:e59c8e839560 915 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 916 * @param __INTERRUPT__ FMC_PCCARD interrupt
AnnaBridge 163:e59c8e839560 917 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 918 * @arg FMC_IT_RISING_EDGE Interrupt rising edge.
AnnaBridge 163:e59c8e839560 919 * @arg FMC_IT_LEVEL Interrupt level.
AnnaBridge 163:e59c8e839560 920 * @arg FMC_IT_FALLING_EDGE Interrupt falling edge.
AnnaBridge 163:e59c8e839560 921 * @retval None
AnnaBridge 163:e59c8e839560 922 */
AnnaBridge 163:e59c8e839560 923 #define __FMC_PCCARD_DISABLE_IT(__INSTANCE__, __INTERRUPT__) CLEAR_BIT((__INSTANCE__)->SR4, (__INTERRUPT__))
AnnaBridge 163:e59c8e839560 924
AnnaBridge 163:e59c8e839560 925 /**
AnnaBridge 163:e59c8e839560 926 * @brief Get flag status of the PCCARD device.
AnnaBridge 163:e59c8e839560 927 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 928 * @param __FLAG__ FMC_PCCARD flag
AnnaBridge 163:e59c8e839560 929 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 930 * @arg FMC_FLAG_RISING_EDGE Interrupt rising edge flag.
AnnaBridge 163:e59c8e839560 931 * @arg FMC_FLAG_LEVEL Interrupt level edge flag.
AnnaBridge 163:e59c8e839560 932 * @arg FMC_FLAG_FALLING_EDGE Interrupt falling edge flag.
AnnaBridge 163:e59c8e839560 933 * @arg FMC_FLAG_FEMPT FIFO empty flag.
AnnaBridge 163:e59c8e839560 934 * @retval The state of FLAG (SET or RESET).
AnnaBridge 163:e59c8e839560 935 */
AnnaBridge 163:e59c8e839560 936 #define __FMC_PCCARD_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SR4 &(__FLAG__)) == (__FLAG__))
AnnaBridge 163:e59c8e839560 937
AnnaBridge 163:e59c8e839560 938 /**
AnnaBridge 163:e59c8e839560 939 * @brief Clear flag status of the PCCARD device.
AnnaBridge 163:e59c8e839560 940 * @param __INSTANCE__ FMC_PCCARD Instance
AnnaBridge 163:e59c8e839560 941 * @param __FLAG__ FMC_PCCARD flag
AnnaBridge 163:e59c8e839560 942 * This parameter can be any combination of the following values:
AnnaBridge 163:e59c8e839560 943 * @arg FMC_FLAG_RISING_EDGE Interrupt rising edge flag.
AnnaBridge 163:e59c8e839560 944 * @arg FMC_FLAG_LEVEL Interrupt level edge flag.
AnnaBridge 163:e59c8e839560 945 * @arg FMC_FLAG_FALLING_EDGE Interrupt falling edge flag.
AnnaBridge 163:e59c8e839560 946 * @arg FMC_FLAG_FEMPT FIFO empty flag.
AnnaBridge 163:e59c8e839560 947 * @retval None
AnnaBridge 163:e59c8e839560 948 */
AnnaBridge 163:e59c8e839560 949 #define __FMC_PCCARD_CLEAR_FLAG(__INSTANCE__, __FLAG__) CLEAR_BIT((__INSTANCE__)->SR4, (__FLAG__))
AnnaBridge 163:e59c8e839560 950
AnnaBridge 163:e59c8e839560 951 /**
AnnaBridge 163:e59c8e839560 952 * @}
AnnaBridge 163:e59c8e839560 953 */
AnnaBridge 163:e59c8e839560 954
AnnaBridge 163:e59c8e839560 955
AnnaBridge 163:e59c8e839560 956 /**
AnnaBridge 163:e59c8e839560 957 * @}
AnnaBridge 163:e59c8e839560 958 */
AnnaBridge 163:e59c8e839560 959
AnnaBridge 163:e59c8e839560 960 /* Exported functions --------------------------------------------------------*/
AnnaBridge 163:e59c8e839560 961
AnnaBridge 163:e59c8e839560 962 /** @addtogroup FMC_LL_Exported_Functions
AnnaBridge 163:e59c8e839560 963 * @{
AnnaBridge 163:e59c8e839560 964 */
AnnaBridge 163:e59c8e839560 965
AnnaBridge 163:e59c8e839560 966 /** @addtogroup FMC_NORSRAM
AnnaBridge 163:e59c8e839560 967 * @{
AnnaBridge 163:e59c8e839560 968 */
AnnaBridge 163:e59c8e839560 969
AnnaBridge 163:e59c8e839560 970 /** @addtogroup FMC_NORSRAM_Group1
AnnaBridge 163:e59c8e839560 971 * @{
AnnaBridge 163:e59c8e839560 972 */
AnnaBridge 163:e59c8e839560 973
AnnaBridge 163:e59c8e839560 974 /* FMC_NORSRAM Controller functions ******************************************/
AnnaBridge 163:e59c8e839560 975 /* Initialization/de-initialization functions */
AnnaBridge 163:e59c8e839560 976 HAL_StatusTypeDef FMC_NORSRAM_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_InitTypeDef *Init);
AnnaBridge 163:e59c8e839560 977 HAL_StatusTypeDef FMC_NORSRAM_Timing_Init(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
AnnaBridge 163:e59c8e839560 978 HAL_StatusTypeDef FMC_NORSRAM_Extended_Timing_Init(FMC_NORSRAM_EXTENDED_TypeDef *Device, FMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode);
AnnaBridge 163:e59c8e839560 979 HAL_StatusTypeDef FMC_NORSRAM_DeInit(FMC_NORSRAM_TypeDef *Device, FMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
AnnaBridge 163:e59c8e839560 980
AnnaBridge 163:e59c8e839560 981 /**
AnnaBridge 163:e59c8e839560 982 * @}
AnnaBridge 163:e59c8e839560 983 */
AnnaBridge 163:e59c8e839560 984
AnnaBridge 163:e59c8e839560 985 /** @addtogroup FMC_NORSRAM_Group2
AnnaBridge 163:e59c8e839560 986 * @{
AnnaBridge 163:e59c8e839560 987 */
AnnaBridge 163:e59c8e839560 988
AnnaBridge 163:e59c8e839560 989 /* FMC_NORSRAM Control functions */
AnnaBridge 163:e59c8e839560 990 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Enable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
AnnaBridge 163:e59c8e839560 991 HAL_StatusTypeDef FMC_NORSRAM_WriteOperation_Disable(FMC_NORSRAM_TypeDef *Device, uint32_t Bank);
AnnaBridge 163:e59c8e839560 992
AnnaBridge 163:e59c8e839560 993 /**
AnnaBridge 163:e59c8e839560 994 * @}
AnnaBridge 163:e59c8e839560 995 */
AnnaBridge 163:e59c8e839560 996
AnnaBridge 163:e59c8e839560 997 /**
AnnaBridge 163:e59c8e839560 998 * @}
AnnaBridge 163:e59c8e839560 999 */
AnnaBridge 163:e59c8e839560 1000
AnnaBridge 163:e59c8e839560 1001 /** @addtogroup FMC_NAND
AnnaBridge 163:e59c8e839560 1002 * @{
AnnaBridge 163:e59c8e839560 1003 */
AnnaBridge 163:e59c8e839560 1004
AnnaBridge 163:e59c8e839560 1005 /* FMC_NAND Controller functions **********************************************/
AnnaBridge 163:e59c8e839560 1006 /* Initialization/de-initialization functions */
AnnaBridge 163:e59c8e839560 1007 /** @addtogroup FMC_NAND_Exported_Functions_Group1
AnnaBridge 163:e59c8e839560 1008 * @{
AnnaBridge 163:e59c8e839560 1009 */
AnnaBridge 163:e59c8e839560 1010
AnnaBridge 163:e59c8e839560 1011 HAL_StatusTypeDef FMC_NAND_Init(FMC_NAND_TypeDef *Device, FMC_NAND_InitTypeDef *Init);
AnnaBridge 163:e59c8e839560 1012 HAL_StatusTypeDef FMC_NAND_CommonSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
AnnaBridge 163:e59c8e839560 1013 HAL_StatusTypeDef FMC_NAND_AttributeSpace_Timing_Init(FMC_NAND_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
AnnaBridge 163:e59c8e839560 1014 HAL_StatusTypeDef FMC_NAND_DeInit(FMC_NAND_TypeDef *Device, uint32_t Bank);
AnnaBridge 163:e59c8e839560 1015
AnnaBridge 163:e59c8e839560 1016 /**
AnnaBridge 163:e59c8e839560 1017 * @}
AnnaBridge 163:e59c8e839560 1018 */
AnnaBridge 163:e59c8e839560 1019
AnnaBridge 163:e59c8e839560 1020 /* FMC_NAND Control functions */
AnnaBridge 163:e59c8e839560 1021 /** @addtogroup FMC_NAND_Exported_Functions_Group2
AnnaBridge 163:e59c8e839560 1022 * @{
AnnaBridge 163:e59c8e839560 1023 */
AnnaBridge 163:e59c8e839560 1024
AnnaBridge 163:e59c8e839560 1025 HAL_StatusTypeDef FMC_NAND_ECC_Enable(FMC_NAND_TypeDef *Device, uint32_t Bank);
AnnaBridge 163:e59c8e839560 1026 HAL_StatusTypeDef FMC_NAND_ECC_Disable(FMC_NAND_TypeDef *Device, uint32_t Bank);
AnnaBridge 163:e59c8e839560 1027 HAL_StatusTypeDef FMC_NAND_GetECC(FMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout);
AnnaBridge 163:e59c8e839560 1028
AnnaBridge 163:e59c8e839560 1029 /**
AnnaBridge 163:e59c8e839560 1030 * @}
AnnaBridge 163:e59c8e839560 1031 */
AnnaBridge 163:e59c8e839560 1032
AnnaBridge 163:e59c8e839560 1033 /**
AnnaBridge 163:e59c8e839560 1034 * @}
AnnaBridge 163:e59c8e839560 1035 */
AnnaBridge 163:e59c8e839560 1036
AnnaBridge 163:e59c8e839560 1037 /** @addtogroup FMC_PCCARD
AnnaBridge 163:e59c8e839560 1038 * @{
AnnaBridge 163:e59c8e839560 1039 */
AnnaBridge 163:e59c8e839560 1040
AnnaBridge 163:e59c8e839560 1041 /* FMC_PCCARD Controller functions ********************************************/
AnnaBridge 163:e59c8e839560 1042 /* Initialization/de-initialization functions */
AnnaBridge 163:e59c8e839560 1043 /** @addtogroup FMC_PCCARD_Exported_Functions_Group1
AnnaBridge 163:e59c8e839560 1044 * @{
AnnaBridge 163:e59c8e839560 1045 */
AnnaBridge 163:e59c8e839560 1046
AnnaBridge 163:e59c8e839560 1047 HAL_StatusTypeDef FMC_PCCARD_Init(FMC_PCCARD_TypeDef *Device, FMC_PCCARD_InitTypeDef *Init);
AnnaBridge 163:e59c8e839560 1048 HAL_StatusTypeDef FMC_PCCARD_CommonSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing);
AnnaBridge 163:e59c8e839560 1049 HAL_StatusTypeDef FMC_PCCARD_AttributeSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing);
AnnaBridge 163:e59c8e839560 1050 HAL_StatusTypeDef FMC_PCCARD_IOSpace_Timing_Init(FMC_PCCARD_TypeDef *Device, FMC_NAND_PCC_TimingTypeDef *Timing);
AnnaBridge 163:e59c8e839560 1051 HAL_StatusTypeDef FMC_PCCARD_DeInit(FMC_PCCARD_TypeDef *Device);
AnnaBridge 163:e59c8e839560 1052
AnnaBridge 163:e59c8e839560 1053 /**
AnnaBridge 163:e59c8e839560 1054 * @}
AnnaBridge 163:e59c8e839560 1055 */
AnnaBridge 163:e59c8e839560 1056
AnnaBridge 163:e59c8e839560 1057 /**
AnnaBridge 163:e59c8e839560 1058 * @}
AnnaBridge 163:e59c8e839560 1059 */
AnnaBridge 163:e59c8e839560 1060
AnnaBridge 163:e59c8e839560 1061 /**
AnnaBridge 163:e59c8e839560 1062 * @}
AnnaBridge 163:e59c8e839560 1063 */
AnnaBridge 163:e59c8e839560 1064
AnnaBridge 163:e59c8e839560 1065 /**
AnnaBridge 163:e59c8e839560 1066 * @}
AnnaBridge 163:e59c8e839560 1067 */
AnnaBridge 163:e59c8e839560 1068
AnnaBridge 163:e59c8e839560 1069 #endif /* FMC_BANK1 */
AnnaBridge 163:e59c8e839560 1070
AnnaBridge 163:e59c8e839560 1071 /**
AnnaBridge 163:e59c8e839560 1072 * @}
AnnaBridge 163:e59c8e839560 1073 */
AnnaBridge 163:e59c8e839560 1074
AnnaBridge 163:e59c8e839560 1075 #ifdef __cplusplus
AnnaBridge 163:e59c8e839560 1076 }
AnnaBridge 163:e59c8e839560 1077 #endif
AnnaBridge 163:e59c8e839560 1078
AnnaBridge 163:e59c8e839560 1079 #endif /* __STM32F3xx_LL_FMC_H */
AnnaBridge 163:e59c8e839560 1080
AnnaBridge 163:e59c8e839560 1081 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
AnnaBridge 163:e59c8e839560 1082