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

Fork of mbed by mbed official

Committer:
Mikchel
Date:
Sun May 03 16:04:42 2015 +0000
Revision:
99:7f6c6de930c0
Parent:
93:e188a91d3eaa
12

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kojto 93:e188a91d3eaa 1 /**
Kojto 93:e188a91d3eaa 2 ******************************************************************************
Kojto 93:e188a91d3eaa 3 * @file stm32f4xx_ll_fsmc.h
Kojto 93:e188a91d3eaa 4 * @author MCD Application Team
Kojto 93:e188a91d3eaa 5 * @version V1.1.0
Kojto 93:e188a91d3eaa 6 * @date 19-June-2014
Kojto 93:e188a91d3eaa 7 * @brief Header file of FSMC HAL module.
Kojto 93:e188a91d3eaa 8 ******************************************************************************
Kojto 93:e188a91d3eaa 9 * @attention
Kojto 93:e188a91d3eaa 10 *
Kojto 93:e188a91d3eaa 11 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
Kojto 93:e188a91d3eaa 12 *
Kojto 93:e188a91d3eaa 13 * Redistribution and use in source and binary forms, with or without modification,
Kojto 93:e188a91d3eaa 14 * are permitted provided that the following conditions are met:
Kojto 93:e188a91d3eaa 15 * 1. Redistributions of source code must retain the above copyright notice,
Kojto 93:e188a91d3eaa 16 * this list of conditions and the following disclaimer.
Kojto 93:e188a91d3eaa 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
Kojto 93:e188a91d3eaa 18 * this list of conditions and the following disclaimer in the documentation
Kojto 93:e188a91d3eaa 19 * and/or other materials provided with the distribution.
Kojto 93:e188a91d3eaa 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
Kojto 93:e188a91d3eaa 21 * may be used to endorse or promote products derived from this software
Kojto 93:e188a91d3eaa 22 * without specific prior written permission.
Kojto 93:e188a91d3eaa 23 *
Kojto 93:e188a91d3eaa 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
Kojto 93:e188a91d3eaa 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
Kojto 93:e188a91d3eaa 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
Kojto 93:e188a91d3eaa 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
Kojto 93:e188a91d3eaa 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Kojto 93:e188a91d3eaa 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
Kojto 93:e188a91d3eaa 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
Kojto 93:e188a91d3eaa 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
Kojto 93:e188a91d3eaa 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Kojto 93:e188a91d3eaa 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Kojto 93:e188a91d3eaa 34 *
Kojto 93:e188a91d3eaa 35 ******************************************************************************
Kojto 93:e188a91d3eaa 36 */
Kojto 93:e188a91d3eaa 37
Kojto 93:e188a91d3eaa 38 /* Define to prevent recursive inclusion -------------------------------------*/
Kojto 93:e188a91d3eaa 39 #ifndef __STM32F4xx_LL_FSMC_H
Kojto 93:e188a91d3eaa 40 #define __STM32F4xx_LL_FSMC_H
Kojto 93:e188a91d3eaa 41
Kojto 93:e188a91d3eaa 42 #ifdef __cplusplus
Kojto 93:e188a91d3eaa 43 extern "C" {
Kojto 93:e188a91d3eaa 44 #endif
Kojto 93:e188a91d3eaa 45
Kojto 93:e188a91d3eaa 46 #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx)
Kojto 93:e188a91d3eaa 47
Kojto 93:e188a91d3eaa 48 /* Includes ------------------------------------------------------------------*/
Kojto 93:e188a91d3eaa 49 #include "stm32f4xx_hal_def.h"
Kojto 93:e188a91d3eaa 50
Kojto 93:e188a91d3eaa 51 /** @addtogroup STM32F4xx_HAL_Driver
Kojto 93:e188a91d3eaa 52 * @{
Kojto 93:e188a91d3eaa 53 */
Kojto 93:e188a91d3eaa 54
Kojto 93:e188a91d3eaa 55 /** @addtogroup FSMC
Kojto 93:e188a91d3eaa 56 * @{
Kojto 93:e188a91d3eaa 57 */
Kojto 93:e188a91d3eaa 58
Kojto 93:e188a91d3eaa 59 /* Exported typedef ----------------------------------------------------------*/
Kojto 93:e188a91d3eaa 60 #define FSMC_NORSRAM_TypeDef FSMC_Bank1_TypeDef
Kojto 93:e188a91d3eaa 61 #define FSMC_NORSRAM_EXTENDED_TypeDef FSMC_Bank1E_TypeDef
Kojto 93:e188a91d3eaa 62 #define FSMC_NAND_TypeDef FSMC_Bank2_3_TypeDef
Kojto 93:e188a91d3eaa 63 #define FSMC_PCCARD_TypeDef FSMC_Bank4_TypeDef
Kojto 93:e188a91d3eaa 64
Kojto 93:e188a91d3eaa 65 #define FSMC_NORSRAM_DEVICE FSMC_Bank1
Kojto 93:e188a91d3eaa 66 #define FSMC_NORSRAM_EXTENDED_DEVICE FSMC_Bank1E
Kojto 93:e188a91d3eaa 67 #define FSMC_NAND_DEVICE FSMC_Bank2_3
Kojto 93:e188a91d3eaa 68 #define FSMC_PCCARD_DEVICE FSMC_Bank4
Kojto 93:e188a91d3eaa 69
Kojto 93:e188a91d3eaa 70 /**
Kojto 93:e188a91d3eaa 71 * @brief FSMC_NORSRAM Configuration Structure definition
Kojto 93:e188a91d3eaa 72 */
Kojto 93:e188a91d3eaa 73 typedef struct
Kojto 93:e188a91d3eaa 74 {
Kojto 93:e188a91d3eaa 75 uint32_t NSBank; /*!< Specifies the NORSRAM memory device that will be used.
Kojto 93:e188a91d3eaa 76 This parameter can be a value of @ref FSMC_NORSRAM_Bank */
Kojto 93:e188a91d3eaa 77
Kojto 93:e188a91d3eaa 78 uint32_t DataAddressMux; /*!< Specifies whether the address and data values are
Kojto 93:e188a91d3eaa 79 multiplexed on the data bus or not.
Kojto 93:e188a91d3eaa 80 This parameter can be a value of @ref FSMC_Data_Address_Bus_Multiplexing */
Kojto 93:e188a91d3eaa 81
Kojto 93:e188a91d3eaa 82 uint32_t MemoryType; /*!< Specifies the type of external memory attached to
Kojto 93:e188a91d3eaa 83 the corresponding memory device.
Kojto 93:e188a91d3eaa 84 This parameter can be a value of @ref FSMC_Memory_Type */
Kojto 93:e188a91d3eaa 85
Kojto 93:e188a91d3eaa 86 uint32_t MemoryDataWidth; /*!< Specifies the external memory device width.
Kojto 93:e188a91d3eaa 87 This parameter can be a value of @ref FSMC_NORSRAM_Data_Width */
Kojto 93:e188a91d3eaa 88
Kojto 93:e188a91d3eaa 89 uint32_t BurstAccessMode; /*!< Enables or disables the burst access mode for Flash memory,
Kojto 93:e188a91d3eaa 90 valid only with synchronous burst Flash memories.
Kojto 93:e188a91d3eaa 91 This parameter can be a value of @ref FSMC_Burst_Access_Mode */
Kojto 93:e188a91d3eaa 92
Kojto 93:e188a91d3eaa 93 uint32_t WaitSignalPolarity; /*!< Specifies the wait signal polarity, valid only when accessing
Kojto 93:e188a91d3eaa 94 the Flash memory in burst mode.
Kojto 93:e188a91d3eaa 95 This parameter can be a value of @ref FSMC_Wait_Signal_Polarity */
Kojto 93:e188a91d3eaa 96
Kojto 93:e188a91d3eaa 97 uint32_t WrapMode; /*!< Enables or disables the Wrapped burst access mode for Flash
Kojto 93:e188a91d3eaa 98 memory, valid only when accessing Flash memories in burst mode.
Kojto 93:e188a91d3eaa 99 This parameter can be a value of @ref FSMC_Wrap_Mode */
Kojto 93:e188a91d3eaa 100
Kojto 93:e188a91d3eaa 101 uint32_t WaitSignalActive; /*!< Specifies if the wait signal is asserted by the memory one
Kojto 93:e188a91d3eaa 102 clock cycle before the wait state or during the wait state,
Kojto 93:e188a91d3eaa 103 valid only when accessing memories in burst mode.
Kojto 93:e188a91d3eaa 104 This parameter can be a value of @ref FSMC_Wait_Timing */
Kojto 93:e188a91d3eaa 105
Kojto 93:e188a91d3eaa 106 uint32_t WriteOperation; /*!< Enables or disables the write operation in the selected device by the FSMC.
Kojto 93:e188a91d3eaa 107 This parameter can be a value of @ref FSMC_Write_Operation */
Kojto 93:e188a91d3eaa 108
Kojto 93:e188a91d3eaa 109 uint32_t WaitSignal; /*!< Enables or disables the wait state insertion via wait
Kojto 93:e188a91d3eaa 110 signal, valid for Flash memory access in burst mode.
Kojto 93:e188a91d3eaa 111 This parameter can be a value of @ref FSMC_Wait_Signal */
Kojto 93:e188a91d3eaa 112
Kojto 93:e188a91d3eaa 113 uint32_t ExtendedMode; /*!< Enables or disables the extended mode.
Kojto 93:e188a91d3eaa 114 This parameter can be a value of @ref FSMC_Extended_Mode */
Kojto 93:e188a91d3eaa 115
Kojto 93:e188a91d3eaa 116 uint32_t AsynchronousWait; /*!< Enables or disables wait signal during asynchronous transfers,
Kojto 93:e188a91d3eaa 117 valid only with asynchronous Flash memories.
Kojto 93:e188a91d3eaa 118 This parameter can be a value of @ref FSMC_AsynchronousWait */
Kojto 93:e188a91d3eaa 119
Kojto 93:e188a91d3eaa 120 uint32_t WriteBurst; /*!< Enables or disables the write burst operation.
Kojto 93:e188a91d3eaa 121 This parameter can be a value of @ref FSMC_Write_Burst */
Kojto 93:e188a91d3eaa 122
Kojto 93:e188a91d3eaa 123 }FSMC_NORSRAM_InitTypeDef;
Kojto 93:e188a91d3eaa 124
Kojto 93:e188a91d3eaa 125 /**
Kojto 93:e188a91d3eaa 126 * @brief FSMC_NORSRAM Timing parameters structure definition
Kojto 93:e188a91d3eaa 127 */
Kojto 93:e188a91d3eaa 128 typedef struct
Kojto 93:e188a91d3eaa 129 {
Kojto 93:e188a91d3eaa 130 uint32_t AddressSetupTime; /*!< Defines the number of HCLK cycles to configure
Kojto 93:e188a91d3eaa 131 the duration of the address setup time.
Kojto 93:e188a91d3eaa 132 This parameter can be a value between Min_Data = 0 and Max_Data = 15.
Kojto 93:e188a91d3eaa 133 @note This parameter is not used with synchronous NOR Flash memories. */
Kojto 93:e188a91d3eaa 134
Kojto 93:e188a91d3eaa 135 uint32_t AddressHoldTime; /*!< Defines the number of HCLK cycles to configure
Kojto 93:e188a91d3eaa 136 the duration of the address hold time.
Kojto 93:e188a91d3eaa 137 This parameter can be a value between Min_Data = 1 and Max_Data = 15.
Kojto 93:e188a91d3eaa 138 @note This parameter is not used with synchronous NOR Flash memories. */
Kojto 93:e188a91d3eaa 139
Kojto 93:e188a91d3eaa 140 uint32_t DataSetupTime; /*!< Defines the number of HCLK cycles to configure
Kojto 93:e188a91d3eaa 141 the duration of the data setup time.
Kojto 93:e188a91d3eaa 142 This parameter can be a value between Min_Data = 1 and Max_Data = 255.
Kojto 93:e188a91d3eaa 143 @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed
Kojto 93:e188a91d3eaa 144 NOR Flash memories. */
Kojto 93:e188a91d3eaa 145
Kojto 93:e188a91d3eaa 146 uint32_t BusTurnAroundDuration; /*!< Defines the number of HCLK cycles to configure
Kojto 93:e188a91d3eaa 147 the duration of the bus turnaround.
Kojto 93:e188a91d3eaa 148 This parameter can be a value between Min_Data = 0 and Max_Data = 15.
Kojto 93:e188a91d3eaa 149 @note This parameter is only used for multiplexed NOR Flash memories. */
Kojto 93:e188a91d3eaa 150
Kojto 93:e188a91d3eaa 151 uint32_t CLKDivision; /*!< Defines the period of CLK clock output signal, expressed in number of
Kojto 93:e188a91d3eaa 152 HCLK cycles. This parameter can be a value between Min_Data = 2 and Max_Data = 16.
Kojto 93:e188a91d3eaa 153 @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM
Kojto 93:e188a91d3eaa 154 accesses. */
Kojto 93:e188a91d3eaa 155
Kojto 93:e188a91d3eaa 156 uint32_t DataLatency; /*!< Defines the number of memory clock cycles to issue
Kojto 93:e188a91d3eaa 157 to the memory before getting the first data.
Kojto 93:e188a91d3eaa 158 The parameter value depends on the memory type as shown below:
Kojto 93:e188a91d3eaa 159 - It must be set to 0 in case of a CRAM
Kojto 93:e188a91d3eaa 160 - It is don't care in asynchronous NOR, SRAM or ROM accesses
Kojto 93:e188a91d3eaa 161 - It may assume a value between Min_Data = 2 and Max_Data = 17 in NOR Flash memories
Kojto 93:e188a91d3eaa 162 with synchronous burst mode enable */
Kojto 93:e188a91d3eaa 163
Kojto 93:e188a91d3eaa 164 uint32_t AccessMode; /*!< Specifies the asynchronous access mode.
Kojto 93:e188a91d3eaa 165 This parameter can be a value of @ref FSMC_Access_Mode */
Kojto 93:e188a91d3eaa 166
Kojto 93:e188a91d3eaa 167 }FSMC_NORSRAM_TimingTypeDef;
Kojto 93:e188a91d3eaa 168
Kojto 93:e188a91d3eaa 169 /**
Kojto 93:e188a91d3eaa 170 * @brief FSMC_NAND Configuration Structure definition
Kojto 93:e188a91d3eaa 171 */
Kojto 93:e188a91d3eaa 172 typedef struct
Kojto 93:e188a91d3eaa 173 {
Kojto 93:e188a91d3eaa 174 uint32_t NandBank; /*!< Specifies the NAND memory device that will be used.
Kojto 93:e188a91d3eaa 175 This parameter can be a value of @ref FSMC_NAND_Bank */
Kojto 93:e188a91d3eaa 176
Kojto 93:e188a91d3eaa 177 uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the NAND Memory device.
Kojto 93:e188a91d3eaa 178 This parameter can be any value of @ref FSMC_Wait_feature */
Kojto 93:e188a91d3eaa 179
Kojto 93:e188a91d3eaa 180 uint32_t MemoryDataWidth; /*!< Specifies the external memory device width.
Kojto 93:e188a91d3eaa 181 This parameter can be any value of @ref FSMC_NAND_Data_Width */
Kojto 93:e188a91d3eaa 182
Kojto 93:e188a91d3eaa 183 uint32_t EccComputation; /*!< Enables or disables the ECC computation.
Kojto 93:e188a91d3eaa 184 This parameter can be any value of @ref FSMC_ECC */
Kojto 93:e188a91d3eaa 185
Kojto 93:e188a91d3eaa 186 uint32_t ECCPageSize; /*!< Defines the page size for the extended ECC.
Kojto 93:e188a91d3eaa 187 This parameter can be any value of @ref FSMC_ECC_Page_Size */
Kojto 93:e188a91d3eaa 188
Kojto 93:e188a91d3eaa 189 uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the
Kojto 93:e188a91d3eaa 190 delay between CLE low and RE low.
Kojto 93:e188a91d3eaa 191 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 192
Kojto 93:e188a91d3eaa 193 uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the
Kojto 93:e188a91d3eaa 194 delay between ALE low and RE low.
Kojto 93:e188a91d3eaa 195 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 196
Kojto 93:e188a91d3eaa 197 }FSMC_NAND_InitTypeDef;
Kojto 93:e188a91d3eaa 198
Kojto 93:e188a91d3eaa 199 /**
Kojto 93:e188a91d3eaa 200 * @brief FSMC_NAND_PCCARD Timing parameters structure definition
Kojto 93:e188a91d3eaa 201 */
Kojto 93:e188a91d3eaa 202 typedef struct
Kojto 93:e188a91d3eaa 203 {
Kojto 93:e188a91d3eaa 204 uint32_t SetupTime; /*!< Defines the number of HCLK cycles to setup address before
Kojto 93:e188a91d3eaa 205 the command assertion for NAND-Flash read or write access
Kojto 93:e188a91d3eaa 206 to common/Attribute or I/O memory space (depending on
Kojto 93:e188a91d3eaa 207 the memory space timing to be configured).
Kojto 93:e188a91d3eaa 208 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 209
Kojto 93:e188a91d3eaa 210 uint32_t WaitSetupTime; /*!< Defines the minimum number of HCLK cycles to assert the
Kojto 93:e188a91d3eaa 211 command for NAND-Flash read or write access to
Kojto 93:e188a91d3eaa 212 common/Attribute or I/O memory space (depending on the
Kojto 93:e188a91d3eaa 213 memory space timing to be configured).
Kojto 93:e188a91d3eaa 214 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 215
Kojto 93:e188a91d3eaa 216 uint32_t HoldSetupTime; /*!< Defines the number of HCLK clock cycles to hold address
Kojto 93:e188a91d3eaa 217 (and data for write access) after the command de-assertion
Kojto 93:e188a91d3eaa 218 for NAND-Flash read or write access to common/Attribute
Kojto 93:e188a91d3eaa 219 or I/O memory space (depending on the memory space timing
Kojto 93:e188a91d3eaa 220 to be configured).
Kojto 93:e188a91d3eaa 221 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 222
Kojto 93:e188a91d3eaa 223 uint32_t HiZSetupTime; /*!< Defines the number of HCLK clock cycles during which the
Kojto 93:e188a91d3eaa 224 data bus is kept in HiZ after the start of a NAND-Flash
Kojto 93:e188a91d3eaa 225 write access to common/Attribute or I/O memory space (depending
Kojto 93:e188a91d3eaa 226 on the memory space timing to be configured).
Kojto 93:e188a91d3eaa 227 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 228
Kojto 93:e188a91d3eaa 229 }FSMC_NAND_PCC_TimingTypeDef;
Kojto 93:e188a91d3eaa 230
Kojto 93:e188a91d3eaa 231 /**
Kojto 93:e188a91d3eaa 232 * @brief FSMC_NAND Configuration Structure definition
Kojto 93:e188a91d3eaa 233 */
Kojto 93:e188a91d3eaa 234 typedef struct
Kojto 93:e188a91d3eaa 235 {
Kojto 93:e188a91d3eaa 236 uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the PCCARD Memory device.
Kojto 93:e188a91d3eaa 237 This parameter can be any value of @ref FSMC_Wait_feature */
Kojto 93:e188a91d3eaa 238
Kojto 93:e188a91d3eaa 239 uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the
Kojto 93:e188a91d3eaa 240 delay between CLE low and RE low.
Kojto 93:e188a91d3eaa 241 This parameter can be a value between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 242
Kojto 93:e188a91d3eaa 243 uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the
Kojto 93:e188a91d3eaa 244 delay between ALE low and RE low.
Kojto 93:e188a91d3eaa 245 This parameter can be a number between Min_Data = 0 and Max_Data = 255 */
Kojto 93:e188a91d3eaa 246
Kojto 93:e188a91d3eaa 247 }FSMC_PCCARD_InitTypeDef;
Kojto 93:e188a91d3eaa 248
Kojto 93:e188a91d3eaa 249 /* Exported constants --------------------------------------------------------*/
Kojto 93:e188a91d3eaa 250
Kojto 93:e188a91d3eaa 251 /** @defgroup FSMC_NOR_SRAM_Controller
Kojto 93:e188a91d3eaa 252 * @{
Kojto 93:e188a91d3eaa 253 */
Kojto 93:e188a91d3eaa 254
Kojto 93:e188a91d3eaa 255 /** @defgroup FSMC_NORSRAM_Bank
Kojto 93:e188a91d3eaa 256 * @{
Kojto 93:e188a91d3eaa 257 */
Kojto 93:e188a91d3eaa 258 #define FSMC_NORSRAM_BANK1 ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 259 #define FSMC_NORSRAM_BANK2 ((uint32_t)0x00000002)
Kojto 93:e188a91d3eaa 260 #define FSMC_NORSRAM_BANK3 ((uint32_t)0x00000004)
Kojto 93:e188a91d3eaa 261 #define FSMC_NORSRAM_BANK4 ((uint32_t)0x00000006)
Kojto 93:e188a91d3eaa 262
Kojto 93:e188a91d3eaa 263 #define IS_FSMC_NORSRAM_BANK(BANK) (((BANK) == FSMC_NORSRAM_BANK1) || \
Kojto 93:e188a91d3eaa 264 ((BANK) == FSMC_NORSRAM_BANK2) || \
Kojto 93:e188a91d3eaa 265 ((BANK) == FSMC_NORSRAM_BANK3) || \
Kojto 93:e188a91d3eaa 266 ((BANK) == FSMC_NORSRAM_BANK4))
Kojto 93:e188a91d3eaa 267 /**
Kojto 93:e188a91d3eaa 268 * @}
Kojto 93:e188a91d3eaa 269 */
Kojto 93:e188a91d3eaa 270
Kojto 93:e188a91d3eaa 271 /** @defgroup FSMC_Data_Address_Bus_Multiplexing
Kojto 93:e188a91d3eaa 272 * @{
Kojto 93:e188a91d3eaa 273 */
Kojto 93:e188a91d3eaa 274
Kojto 93:e188a91d3eaa 275 #define FSMC_DATA_ADDRESS_MUX_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 276 #define FSMC_DATA_ADDRESS_MUX_ENABLE ((uint32_t)0x00000002)
Kojto 93:e188a91d3eaa 277
Kojto 93:e188a91d3eaa 278 #define IS_FSMC_MUX(MUX) (((MUX) == FSMC_DATA_ADDRESS_MUX_DISABLE) || \
Kojto 93:e188a91d3eaa 279 ((MUX) == FSMC_DATA_ADDRESS_MUX_ENABLE))
Kojto 93:e188a91d3eaa 280 /**
Kojto 93:e188a91d3eaa 281 * @}
Kojto 93:e188a91d3eaa 282 */
Kojto 93:e188a91d3eaa 283
Kojto 93:e188a91d3eaa 284 /** @defgroup FSMC_Memory_Type
Kojto 93:e188a91d3eaa 285 * @{
Kojto 93:e188a91d3eaa 286 */
Kojto 93:e188a91d3eaa 287
Kojto 93:e188a91d3eaa 288 #define FSMC_MEMORY_TYPE_SRAM ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 289 #define FSMC_MEMORY_TYPE_PSRAM ((uint32_t)0x00000004)
Kojto 93:e188a91d3eaa 290 #define FSMC_MEMORY_TYPE_NOR ((uint32_t)0x00000008)
Kojto 93:e188a91d3eaa 291
Kojto 93:e188a91d3eaa 292
Kojto 93:e188a91d3eaa 293 #define IS_FSMC_MEMORY(MEMORY) (((MEMORY) == FSMC_MEMORY_TYPE_SRAM) || \
Kojto 93:e188a91d3eaa 294 ((MEMORY) == FSMC_MEMORY_TYPE_PSRAM)|| \
Kojto 93:e188a91d3eaa 295 ((MEMORY) == FSMC_MEMORY_TYPE_NOR))
Kojto 93:e188a91d3eaa 296 /**
Kojto 93:e188a91d3eaa 297 * @}
Kojto 93:e188a91d3eaa 298 */
Kojto 93:e188a91d3eaa 299
Kojto 93:e188a91d3eaa 300 /** @defgroup FSMC_NORSRAM_Data_Width
Kojto 93:e188a91d3eaa 301 * @{
Kojto 93:e188a91d3eaa 302 */
Kojto 93:e188a91d3eaa 303
Kojto 93:e188a91d3eaa 304 #define FSMC_NORSRAM_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 305 #define FSMC_NORSRAM_MEM_BUS_WIDTH_16 ((uint32_t)0x00000010)
Kojto 93:e188a91d3eaa 306 #define FSMC_NORSRAM_MEM_BUS_WIDTH_32 ((uint32_t)0x00000020)
Kojto 93:e188a91d3eaa 307
Kojto 93:e188a91d3eaa 308 #define IS_FSMC_NORSRAM_MEMORY_WIDTH(WIDTH) (((WIDTH) == FSMC_NORSRAM_MEM_BUS_WIDTH_8) || \
Kojto 93:e188a91d3eaa 309 ((WIDTH) == FSMC_NORSRAM_MEM_BUS_WIDTH_16) || \
Kojto 93:e188a91d3eaa 310 ((WIDTH) == FSMC_NORSRAM_MEM_BUS_WIDTH_32))
Kojto 93:e188a91d3eaa 311 /**
Kojto 93:e188a91d3eaa 312 * @}
Kojto 93:e188a91d3eaa 313 */
Kojto 93:e188a91d3eaa 314
Kojto 93:e188a91d3eaa 315 /** @defgroup FSMC_NORSRAM_Flash_Access
Kojto 93:e188a91d3eaa 316 * @{
Kojto 93:e188a91d3eaa 317 */
Kojto 93:e188a91d3eaa 318 #define FSMC_NORSRAM_FLASH_ACCESS_ENABLE ((uint32_t)0x00000040)
Kojto 93:e188a91d3eaa 319 #define FSMC_NORSRAM_FLASH_ACCESS_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 320 /**
Kojto 93:e188a91d3eaa 321 * @}
Kojto 93:e188a91d3eaa 322 */
Kojto 93:e188a91d3eaa 323
Kojto 93:e188a91d3eaa 324 /** @defgroup FSMC_Burst_Access_Mode
Kojto 93:e188a91d3eaa 325 * @{
Kojto 93:e188a91d3eaa 326 */
Kojto 93:e188a91d3eaa 327
Kojto 93:e188a91d3eaa 328 #define FSMC_BURST_ACCESS_MODE_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 329 #define FSMC_BURST_ACCESS_MODE_ENABLE ((uint32_t)0x00000100)
Kojto 93:e188a91d3eaa 330
Kojto 93:e188a91d3eaa 331 #define IS_FSMC_BURSTMODE(STATE) (((STATE) == FSMC_BURST_ACCESS_MODE_DISABLE) || \
Kojto 93:e188a91d3eaa 332 ((STATE) == FSMC_BURST_ACCESS_MODE_ENABLE))
Kojto 93:e188a91d3eaa 333 /**
Kojto 93:e188a91d3eaa 334 * @}
Kojto 93:e188a91d3eaa 335 */
Kojto 93:e188a91d3eaa 336
Kojto 93:e188a91d3eaa 337
Kojto 93:e188a91d3eaa 338 /** @defgroup FSMC_Wait_Signal_Polarity
Kojto 93:e188a91d3eaa 339 * @{
Kojto 93:e188a91d3eaa 340 */
Kojto 93:e188a91d3eaa 341 #define FSMC_WAIT_SIGNAL_POLARITY_LOW ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 342 #define FSMC_WAIT_SIGNAL_POLARITY_HIGH ((uint32_t)0x00000200)
Kojto 93:e188a91d3eaa 343
Kojto 93:e188a91d3eaa 344 #define IS_FSMC_WAIT_POLARITY(POLARITY) (((POLARITY) == FSMC_WAIT_SIGNAL_POLARITY_LOW) || \
Kojto 93:e188a91d3eaa 345 ((POLARITY) == FSMC_WAIT_SIGNAL_POLARITY_HIGH))
Kojto 93:e188a91d3eaa 346 /**
Kojto 93:e188a91d3eaa 347 * @}
Kojto 93:e188a91d3eaa 348 */
Kojto 93:e188a91d3eaa 349
Kojto 93:e188a91d3eaa 350 /** @defgroup FSMC_Wrap_Mode
Kojto 93:e188a91d3eaa 351 * @{
Kojto 93:e188a91d3eaa 352 */
Kojto 93:e188a91d3eaa 353 #define FSMC_WRAP_MODE_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 354 #define FSMC_WRAP_MODE_ENABLE ((uint32_t)0x00000400)
Kojto 93:e188a91d3eaa 355
Kojto 93:e188a91d3eaa 356 #define IS_FSMC_WRAP_MODE(MODE) (((MODE) == FSMC_WRAP_MODE_DISABLE) || \
Kojto 93:e188a91d3eaa 357 ((MODE) == FSMC_WRAP_MODE_ENABLE))
Kojto 93:e188a91d3eaa 358 /**
Kojto 93:e188a91d3eaa 359 * @}
Kojto 93:e188a91d3eaa 360 */
Kojto 93:e188a91d3eaa 361
Kojto 93:e188a91d3eaa 362 /** @defgroup FSMC_Wait_Timing
Kojto 93:e188a91d3eaa 363 * @{
Kojto 93:e188a91d3eaa 364 */
Kojto 93:e188a91d3eaa 365 #define FSMC_WAIT_TIMING_BEFORE_WS ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 366 #define FSMC_WAIT_TIMING_DURING_WS ((uint32_t)0x00000800)
Kojto 93:e188a91d3eaa 367
Kojto 93:e188a91d3eaa 368 #define IS_FSMC_WAIT_SIGNAL_ACTIVE(ACTIVE) (((ACTIVE) == FSMC_WAIT_TIMING_BEFORE_WS) || \
Kojto 93:e188a91d3eaa 369 ((ACTIVE) == FSMC_WAIT_TIMING_DURING_WS))
Kojto 93:e188a91d3eaa 370 /**
Kojto 93:e188a91d3eaa 371 * @}
Kojto 93:e188a91d3eaa 372 */
Kojto 93:e188a91d3eaa 373
Kojto 93:e188a91d3eaa 374 /** @defgroup FSMC_Write_Operation
Kojto 93:e188a91d3eaa 375 * @{
Kojto 93:e188a91d3eaa 376 */
Kojto 93:e188a91d3eaa 377 #define FSMC_WRITE_OPERATION_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 378 #define FSMC_WRITE_OPERATION_ENABLE ((uint32_t)0x00001000)
Kojto 93:e188a91d3eaa 379
Kojto 93:e188a91d3eaa 380 #define IS_FSMC_WRITE_OPERATION(OPERATION) (((OPERATION) == FSMC_WRITE_OPERATION_DISABLE) || \
Kojto 93:e188a91d3eaa 381 ((OPERATION) == FSMC_WRITE_OPERATION_ENABLE))
Kojto 93:e188a91d3eaa 382 /**
Kojto 93:e188a91d3eaa 383 * @}
Kojto 93:e188a91d3eaa 384 */
Kojto 93:e188a91d3eaa 385
Kojto 93:e188a91d3eaa 386 /** @defgroup FSMC_Wait_Signal
Kojto 93:e188a91d3eaa 387 * @{
Kojto 93:e188a91d3eaa 388 */
Kojto 93:e188a91d3eaa 389 #define FSMC_WAIT_SIGNAL_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 390 #define FSMC_WAIT_SIGNAL_ENABLE ((uint32_t)0x00002000)
Kojto 93:e188a91d3eaa 391
Kojto 93:e188a91d3eaa 392 #define IS_FSMC_WAITE_SIGNAL(SIGNAL) (((SIGNAL) == FSMC_WAIT_SIGNAL_DISABLE) || \
Kojto 93:e188a91d3eaa 393 ((SIGNAL) == FSMC_WAIT_SIGNAL_ENABLE))
Kojto 93:e188a91d3eaa 394
Kojto 93:e188a91d3eaa 395 /**
Kojto 93:e188a91d3eaa 396 * @}
Kojto 93:e188a91d3eaa 397 */
Kojto 93:e188a91d3eaa 398
Kojto 93:e188a91d3eaa 399 /** @defgroup FSMC_Extended_Mode
Kojto 93:e188a91d3eaa 400 * @{
Kojto 93:e188a91d3eaa 401 */
Kojto 93:e188a91d3eaa 402 #define FSMC_EXTENDED_MODE_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 403 #define FSMC_EXTENDED_MODE_ENABLE ((uint32_t)0x00004000)
Kojto 93:e188a91d3eaa 404
Kojto 93:e188a91d3eaa 405 #define IS_FSMC_EXTENDED_MODE(MODE) (((MODE) == FSMC_EXTENDED_MODE_DISABLE) || \
Kojto 93:e188a91d3eaa 406 ((MODE) == FSMC_EXTENDED_MODE_ENABLE))
Kojto 93:e188a91d3eaa 407 /**
Kojto 93:e188a91d3eaa 408 * @}
Kojto 93:e188a91d3eaa 409 */
Kojto 93:e188a91d3eaa 410
Kojto 93:e188a91d3eaa 411 /** @defgroup FSMC_AsynchronousWait
Kojto 93:e188a91d3eaa 412 * @{
Kojto 93:e188a91d3eaa 413 */
Kojto 93:e188a91d3eaa 414 #define FSMC_ASYNCHRONOUS_WAIT_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 415 #define FSMC_ASYNCHRONOUS_WAIT_ENABLE ((uint32_t)0x00008000)
Kojto 93:e188a91d3eaa 416
Kojto 93:e188a91d3eaa 417 #define IS_FSMC_ASYNWAIT(STATE) (((STATE) == FSMC_ASYNCHRONOUS_WAIT_DISABLE) || \
Kojto 93:e188a91d3eaa 418 ((STATE) == FSMC_ASYNCHRONOUS_WAIT_ENABLE))
Kojto 93:e188a91d3eaa 419
Kojto 93:e188a91d3eaa 420 /**
Kojto 93:e188a91d3eaa 421 * @}
Kojto 93:e188a91d3eaa 422 */
Kojto 93:e188a91d3eaa 423
Kojto 93:e188a91d3eaa 424 /** @defgroup FSMC_Write_Burst
Kojto 93:e188a91d3eaa 425 * @{
Kojto 93:e188a91d3eaa 426 */
Kojto 93:e188a91d3eaa 427
Kojto 93:e188a91d3eaa 428 #define FSMC_WRITE_BURST_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 429 #define FSMC_WRITE_BURST_ENABLE ((uint32_t)0x00080000)
Kojto 93:e188a91d3eaa 430
Kojto 93:e188a91d3eaa 431 #define IS_FSMC_WRITE_BURST(BURST) (((BURST) == FSMC_WRITE_BURST_DISABLE) || \
Kojto 93:e188a91d3eaa 432 ((BURST) == FSMC_WRITE_BURST_ENABLE))
Kojto 93:e188a91d3eaa 433
Kojto 93:e188a91d3eaa 434 /**
Kojto 93:e188a91d3eaa 435 * @}
Kojto 93:e188a91d3eaa 436 */
Kojto 93:e188a91d3eaa 437
Kojto 93:e188a91d3eaa 438 /** @defgroup FSMC_Continous_Clock
Kojto 93:e188a91d3eaa 439 * @{
Kojto 93:e188a91d3eaa 440 */
Kojto 93:e188a91d3eaa 441
Kojto 93:e188a91d3eaa 442 #define FSMC_CONTINUOUS_CLOCK_SYNC_ONLY ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 443 #define FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC ((uint32_t)0x00100000)
Kojto 93:e188a91d3eaa 444
Kojto 93:e188a91d3eaa 445 #define IS_FSMC_CONTINOUS_CLOCK(CCLOCK) (((CCLOCK) == FSMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \
Kojto 93:e188a91d3eaa 446 ((CCLOCK) == FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC))
Kojto 93:e188a91d3eaa 447
Kojto 93:e188a91d3eaa 448 /**
Kojto 93:e188a91d3eaa 449 * @}
Kojto 93:e188a91d3eaa 450 */
Kojto 93:e188a91d3eaa 451
Kojto 93:e188a91d3eaa 452 /** @defgroup FSMC_Address_Setup_Time
Kojto 93:e188a91d3eaa 453 * @{
Kojto 93:e188a91d3eaa 454 */
Kojto 93:e188a91d3eaa 455 #define IS_FSMC_ADDRESS_SETUP_TIME(TIME) ((TIME) <= 15)
Kojto 93:e188a91d3eaa 456 /**
Kojto 93:e188a91d3eaa 457 * @}
Kojto 93:e188a91d3eaa 458 */
Kojto 93:e188a91d3eaa 459
Kojto 93:e188a91d3eaa 460 /** @defgroup FSMC_Address_Hold_Time
Kojto 93:e188a91d3eaa 461 * @{
Kojto 93:e188a91d3eaa 462 */
Kojto 93:e188a91d3eaa 463 #define IS_FSMC_ADDRESS_HOLD_TIME(TIME) (((TIME) > 0) && ((TIME) <= 15))
Kojto 93:e188a91d3eaa 464 /**
Kojto 93:e188a91d3eaa 465 * @}
Kojto 93:e188a91d3eaa 466 */
Kojto 93:e188a91d3eaa 467
Kojto 93:e188a91d3eaa 468 /** @defgroup FSMC_Data_Setup_Time
Kojto 93:e188a91d3eaa 469 * @{
Kojto 93:e188a91d3eaa 470 */
Kojto 93:e188a91d3eaa 471 #define IS_FSMC_DATASETUP_TIME(TIME) (((TIME) > 0) && ((TIME) <= 255))
Kojto 93:e188a91d3eaa 472 /**
Kojto 93:e188a91d3eaa 473 * @}
Kojto 93:e188a91d3eaa 474 */
Kojto 93:e188a91d3eaa 475
Kojto 93:e188a91d3eaa 476 /** @defgroup FSMC_Bus_Turn_around_Duration
Kojto 93:e188a91d3eaa 477 * @{
Kojto 93:e188a91d3eaa 478 */
Kojto 93:e188a91d3eaa 479 #define IS_FSMC_TURNAROUND_TIME(TIME) ((TIME) <= 15)
Kojto 93:e188a91d3eaa 480 /**
Kojto 93:e188a91d3eaa 481 * @}
Kojto 93:e188a91d3eaa 482 */
Kojto 93:e188a91d3eaa 483
Kojto 93:e188a91d3eaa 484 /** @defgroup FSMC_CLK_Division
Kojto 93:e188a91d3eaa 485 * @{
Kojto 93:e188a91d3eaa 486 */
Kojto 93:e188a91d3eaa 487 #define IS_FSMC_CLK_DIV(DIV) (((DIV) > 1) && ((DIV) <= 16))
Kojto 93:e188a91d3eaa 488 /**
Kojto 93:e188a91d3eaa 489 * @}
Kojto 93:e188a91d3eaa 490 */
Kojto 93:e188a91d3eaa 491
Kojto 93:e188a91d3eaa 492 /** @defgroup FSMC_Data_Latency
Kojto 93:e188a91d3eaa 493 * @{
Kojto 93:e188a91d3eaa 494 */
Kojto 93:e188a91d3eaa 495 #define IS_FSMC_DATA_LATENCY(LATENCY) (((LATENCY) > 1) && ((LATENCY) <= 17))
Kojto 93:e188a91d3eaa 496 /**
Kojto 93:e188a91d3eaa 497 * @}
Kojto 93:e188a91d3eaa 498 */
Kojto 93:e188a91d3eaa 499
Kojto 93:e188a91d3eaa 500 /** @defgroup FSMC_Access_Mode
Kojto 93:e188a91d3eaa 501 * @{
Kojto 93:e188a91d3eaa 502 */
Kojto 93:e188a91d3eaa 503 #define FSMC_ACCESS_MODE_A ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 504 #define FSMC_ACCESS_MODE_B ((uint32_t)0x10000000)
Kojto 93:e188a91d3eaa 505 #define FSMC_ACCESS_MODE_C ((uint32_t)0x20000000)
Kojto 93:e188a91d3eaa 506 #define FSMC_ACCESS_MODE_D ((uint32_t)0x30000000)
Kojto 93:e188a91d3eaa 507
Kojto 93:e188a91d3eaa 508 #define IS_FSMC_ACCESS_MODE(MODE) (((MODE) == FSMC_ACCESS_MODE_A) || \
Kojto 93:e188a91d3eaa 509 ((MODE) == FSMC_ACCESS_MODE_B) || \
Kojto 93:e188a91d3eaa 510 ((MODE) == FSMC_ACCESS_MODE_C) || \
Kojto 93:e188a91d3eaa 511 ((MODE) == FSMC_ACCESS_MODE_D))
Kojto 93:e188a91d3eaa 512 /**
Kojto 93:e188a91d3eaa 513 * @}
Kojto 93:e188a91d3eaa 514 */
Kojto 93:e188a91d3eaa 515
Kojto 93:e188a91d3eaa 516 /**
Kojto 93:e188a91d3eaa 517 * @}
Kojto 93:e188a91d3eaa 518 */
Kojto 93:e188a91d3eaa 519
Kojto 93:e188a91d3eaa 520 /** @defgroup FSMC_NAND_Controller
Kojto 93:e188a91d3eaa 521 * @{
Kojto 93:e188a91d3eaa 522 */
Kojto 93:e188a91d3eaa 523
Kojto 93:e188a91d3eaa 524 /** @defgroup FSMC_NAND_Bank
Kojto 93:e188a91d3eaa 525 * @{
Kojto 93:e188a91d3eaa 526 */
Kojto 93:e188a91d3eaa 527 #define FSMC_NAND_BANK2 ((uint32_t)0x00000010)
Kojto 93:e188a91d3eaa 528 #define FSMC_NAND_BANK3 ((uint32_t)0x00000100)
Kojto 93:e188a91d3eaa 529
Kojto 93:e188a91d3eaa 530 #define IS_FSMC_NAND_BANK(BANK) (((BANK) == FSMC_NAND_BANK2) || \
Kojto 93:e188a91d3eaa 531 ((BANK) == FSMC_NAND_BANK3))
Kojto 93:e188a91d3eaa 532
Kojto 93:e188a91d3eaa 533 /**
Kojto 93:e188a91d3eaa 534 * @}
Kojto 93:e188a91d3eaa 535 */
Kojto 93:e188a91d3eaa 536
Kojto 93:e188a91d3eaa 537 /** @defgroup FSMC_Wait_feature
Kojto 93:e188a91d3eaa 538 * @{
Kojto 93:e188a91d3eaa 539 */
Kojto 93:e188a91d3eaa 540 #define FSMC_NAND_PCC_WAIT_FEATURE_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 541 #define FSMC_NAND_PCC_WAIT_FEATURE_ENABLE ((uint32_t)0x00000002)
Kojto 93:e188a91d3eaa 542
Kojto 93:e188a91d3eaa 543 #define IS_FSMC_WAIT_FEATURE(FEATURE) (((FEATURE) == FSMC_NAND_PCC_WAIT_FEATURE_DISABLE) || \
Kojto 93:e188a91d3eaa 544 ((FEATURE) == FSMC_NAND_PCC_WAIT_FEATURE_ENABLE))
Kojto 93:e188a91d3eaa 545 /**
Kojto 93:e188a91d3eaa 546 * @}
Kojto 93:e188a91d3eaa 547 */
Kojto 93:e188a91d3eaa 548
Kojto 93:e188a91d3eaa 549 /** @defgroup FSMC_PCR_Memory_Type
Kojto 93:e188a91d3eaa 550 * @{
Kojto 93:e188a91d3eaa 551 */
Kojto 93:e188a91d3eaa 552 #define FSMC_PCR_MEMORY_TYPE_PCCARD ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 553 #define FSMC_PCR_MEMORY_TYPE_NAND ((uint32_t)0x00000008)
Kojto 93:e188a91d3eaa 554 /**
Kojto 93:e188a91d3eaa 555 * @}
Kojto 93:e188a91d3eaa 556 */
Kojto 93:e188a91d3eaa 557
Kojto 93:e188a91d3eaa 558 /** @defgroup FSMC_NAND_Data_Width
Kojto 93:e188a91d3eaa 559 * @{
Kojto 93:e188a91d3eaa 560 */
Kojto 93:e188a91d3eaa 561 #define FSMC_NAND_PCC_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 562 #define FSMC_NAND_PCC_MEM_BUS_WIDTH_16 ((uint32_t)0x00000010)
Kojto 93:e188a91d3eaa 563
Kojto 93:e188a91d3eaa 564 #define IS_FSMC_NAND_MEMORY_WIDTH(WIDTH) (((WIDTH) == FSMC_NAND_PCC_MEM_BUS_WIDTH_8) || \
Kojto 93:e188a91d3eaa 565 ((WIDTH) == FSMC_NAND_PCC_MEM_BUS_WIDTH_16))
Kojto 93:e188a91d3eaa 566 /**
Kojto 93:e188a91d3eaa 567 * @}
Kojto 93:e188a91d3eaa 568 */
Kojto 93:e188a91d3eaa 569
Kojto 93:e188a91d3eaa 570 /** @defgroup FSMC_ECC
Kojto 93:e188a91d3eaa 571 * @{
Kojto 93:e188a91d3eaa 572 */
Kojto 93:e188a91d3eaa 573 #define FSMC_NAND_ECC_DISABLE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 574 #define FSMC_NAND_ECC_ENABLE ((uint32_t)0x00000040)
Kojto 93:e188a91d3eaa 575
Kojto 93:e188a91d3eaa 576 #define IS_FSMC_ECC_STATE(STATE) (((STATE) == FSMC_NAND_ECC_DISABLE) || \
Kojto 93:e188a91d3eaa 577 ((STATE) == FSMC_NAND_ECC_ENABLE))
Kojto 93:e188a91d3eaa 578 /**
Kojto 93:e188a91d3eaa 579 * @}
Kojto 93:e188a91d3eaa 580 */
Kojto 93:e188a91d3eaa 581
Kojto 93:e188a91d3eaa 582 /** @defgroup FSMC_ECC_Page_Size
Kojto 93:e188a91d3eaa 583 * @{
Kojto 93:e188a91d3eaa 584 */
Kojto 93:e188a91d3eaa 585 #define FSMC_NAND_ECC_PAGE_SIZE_256BYTE ((uint32_t)0x00000000)
Kojto 93:e188a91d3eaa 586 #define FSMC_NAND_ECC_PAGE_SIZE_512BYTE ((uint32_t)0x00020000)
Kojto 93:e188a91d3eaa 587 #define FSMC_NAND_ECC_PAGE_SIZE_1024BYTE ((uint32_t)0x00040000)
Kojto 93:e188a91d3eaa 588 #define FSMC_NAND_ECC_PAGE_SIZE_2048BYTE ((uint32_t)0x00060000)
Kojto 93:e188a91d3eaa 589 #define FSMC_NAND_ECC_PAGE_SIZE_4096BYTE ((uint32_t)0x00080000)
Kojto 93:e188a91d3eaa 590 #define FSMC_NAND_ECC_PAGE_SIZE_8192BYTE ((uint32_t)0x000A0000)
Kojto 93:e188a91d3eaa 591
Kojto 93:e188a91d3eaa 592 #define IS_FSMC_ECCPAGE_SIZE(SIZE) (((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_256BYTE) || \
Kojto 93:e188a91d3eaa 593 ((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_512BYTE) || \
Kojto 93:e188a91d3eaa 594 ((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \
Kojto 93:e188a91d3eaa 595 ((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \
Kojto 93:e188a91d3eaa 596 ((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \
Kojto 93:e188a91d3eaa 597 ((SIZE) == FSMC_NAND_ECC_PAGE_SIZE_8192BYTE))
Kojto 93:e188a91d3eaa 598 /**
Kojto 93:e188a91d3eaa 599 * @}
Kojto 93:e188a91d3eaa 600 */
Kojto 93:e188a91d3eaa 601
Kojto 93:e188a91d3eaa 602 /** @defgroup FSMC_TCLR_Setup_Time
Kojto 93:e188a91d3eaa 603 * @{
Kojto 93:e188a91d3eaa 604 */
Kojto 93:e188a91d3eaa 605 #define IS_FSMC_TCLR_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 606 /**
Kojto 93:e188a91d3eaa 607 * @}
Kojto 93:e188a91d3eaa 608 */
Kojto 93:e188a91d3eaa 609
Kojto 93:e188a91d3eaa 610 /** @defgroup FSMC_TAR_Setup_Time
Kojto 93:e188a91d3eaa 611 * @{
Kojto 93:e188a91d3eaa 612 */
Kojto 93:e188a91d3eaa 613 #define IS_FSMC_TAR_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 614 /**
Kojto 93:e188a91d3eaa 615 * @}
Kojto 93:e188a91d3eaa 616 */
Kojto 93:e188a91d3eaa 617
Kojto 93:e188a91d3eaa 618 /** @defgroup FSMC_Setup_Time
Kojto 93:e188a91d3eaa 619 * @{
Kojto 93:e188a91d3eaa 620 */
Kojto 93:e188a91d3eaa 621 #define IS_FSMC_SETUP_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 622 /**
Kojto 93:e188a91d3eaa 623 * @}
Kojto 93:e188a91d3eaa 624 */
Kojto 93:e188a91d3eaa 625
Kojto 93:e188a91d3eaa 626 /** @defgroup FSMC_Wait_Setup_Time
Kojto 93:e188a91d3eaa 627 * @{
Kojto 93:e188a91d3eaa 628 */
Kojto 93:e188a91d3eaa 629 #define IS_FSMC_WAIT_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 630 /**
Kojto 93:e188a91d3eaa 631 * @}
Kojto 93:e188a91d3eaa 632 */
Kojto 93:e188a91d3eaa 633
Kojto 93:e188a91d3eaa 634 /** @defgroup FSMC_Hold_Setup_Time
Kojto 93:e188a91d3eaa 635 * @{
Kojto 93:e188a91d3eaa 636 */
Kojto 93:e188a91d3eaa 637 #define IS_FSMC_HOLD_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 638 /**
Kojto 93:e188a91d3eaa 639 * @}
Kojto 93:e188a91d3eaa 640 */
Kojto 93:e188a91d3eaa 641
Kojto 93:e188a91d3eaa 642 /** @defgroup FSMC_HiZ_Setup_Time
Kojto 93:e188a91d3eaa 643 * @{
Kojto 93:e188a91d3eaa 644 */
Kojto 93:e188a91d3eaa 645 #define IS_FSMC_HIZ_TIME(TIME) ((TIME) <= 255)
Kojto 93:e188a91d3eaa 646 /**
Kojto 93:e188a91d3eaa 647 * @}
Kojto 93:e188a91d3eaa 648 */
Kojto 93:e188a91d3eaa 649
Kojto 93:e188a91d3eaa 650 /**
Kojto 93:e188a91d3eaa 651 * @}
Kojto 93:e188a91d3eaa 652 */
Kojto 93:e188a91d3eaa 653
Kojto 93:e188a91d3eaa 654
Kojto 93:e188a91d3eaa 655 /** @defgroup FSMC_NORSRAM_Device_Instance
Kojto 93:e188a91d3eaa 656 * @{
Kojto 93:e188a91d3eaa 657 */
Kojto 93:e188a91d3eaa 658 #define IS_FSMC_NORSRAM_DEVICE(INSTANCE) ((INSTANCE) == FSMC_NORSRAM_DEVICE)
Kojto 93:e188a91d3eaa 659
Kojto 93:e188a91d3eaa 660 /**
Kojto 93:e188a91d3eaa 661 * @}
Kojto 93:e188a91d3eaa 662 */
Kojto 93:e188a91d3eaa 663
Kojto 93:e188a91d3eaa 664 /** @defgroup FSMC_NORSRAM_EXTENDED_Device_Instance
Kojto 93:e188a91d3eaa 665 * @{
Kojto 93:e188a91d3eaa 666 */
Kojto 93:e188a91d3eaa 667 #define IS_FSMC_NORSRAM_EXTENDED_DEVICE(INSTANCE) ((INSTANCE) == FSMC_NORSRAM_EXTENDED_DEVICE)
Kojto 93:e188a91d3eaa 668
Kojto 93:e188a91d3eaa 669 /**
Kojto 93:e188a91d3eaa 670 * @}
Kojto 93:e188a91d3eaa 671 */
Kojto 93:e188a91d3eaa 672
Kojto 93:e188a91d3eaa 673 /** @defgroup FSMC_NAND_Device_Instance
Kojto 93:e188a91d3eaa 674 * @{
Kojto 93:e188a91d3eaa 675 */
Kojto 93:e188a91d3eaa 676 #define IS_FSMC_NAND_DEVICE(INSTANCE) ((INSTANCE) == FSMC_NAND_DEVICE)
Kojto 93:e188a91d3eaa 677
Kojto 93:e188a91d3eaa 678 /**
Kojto 93:e188a91d3eaa 679 * @}
Kojto 93:e188a91d3eaa 680 */
Kojto 93:e188a91d3eaa 681
Kojto 93:e188a91d3eaa 682 /** @defgroup FSMC_PCCARD_Device_Instance
Kojto 93:e188a91d3eaa 683 * @{
Kojto 93:e188a91d3eaa 684 */
Kojto 93:e188a91d3eaa 685 #define IS_FSMC_PCCARD_DEVICE(INSTANCE) ((INSTANCE) == FSMC_PCCARD_DEVICE)
Kojto 93:e188a91d3eaa 686
Kojto 93:e188a91d3eaa 687 /**
Kojto 93:e188a91d3eaa 688 * @}
Kojto 93:e188a91d3eaa 689 */
Kojto 93:e188a91d3eaa 690
Kojto 93:e188a91d3eaa 691 /** @defgroup FSMC_Interrupt_definition
Kojto 93:e188a91d3eaa 692 * @brief FSMC Interrupt definition
Kojto 93:e188a91d3eaa 693 * @{
Kojto 93:e188a91d3eaa 694 */
Kojto 93:e188a91d3eaa 695 #define FSMC_IT_RISING_EDGE ((uint32_t)0x00000008)
Kojto 93:e188a91d3eaa 696 #define FSMC_IT_LEVEL ((uint32_t)0x00000010)
Kojto 93:e188a91d3eaa 697 #define FSMC_IT_FALLING_EDGE ((uint32_t)0x00000020)
Kojto 93:e188a91d3eaa 698 #define FSMC_IT_REFRESH_ERROR ((uint32_t)0x00004000)
Kojto 93:e188a91d3eaa 699
Kojto 93:e188a91d3eaa 700 #define IS_FSMC_IT(IT) ((((IT) & (uint32_t)0xFFFFBFC7) == 0x00000000) && ((IT) != 0x00000000))
Kojto 93:e188a91d3eaa 701 #define IS_FSMC_GET_IT(IT) (((IT) == FSMC_IT_RISING_EDGE) || \
Kojto 93:e188a91d3eaa 702 ((IT) == FSMC_IT_LEVEL) || \
Kojto 93:e188a91d3eaa 703 ((IT) == FSMC_IT_FALLING_EDGE) || \
Kojto 93:e188a91d3eaa 704 ((IT) == FSMC_IT_REFRESH_ERROR))
Kojto 93:e188a91d3eaa 705 /**
Kojto 93:e188a91d3eaa 706 * @}
Kojto 93:e188a91d3eaa 707 */
Kojto 93:e188a91d3eaa 708
Kojto 93:e188a91d3eaa 709 /** @defgroup FSMC_Flag_definition
Kojto 93:e188a91d3eaa 710 * @brief FSMC Flag definition
Kojto 93:e188a91d3eaa 711 * @{
Kojto 93:e188a91d3eaa 712 */
Kojto 93:e188a91d3eaa 713 #define FSMC_FLAG_RISING_EDGE ((uint32_t)0x00000001)
Kojto 93:e188a91d3eaa 714 #define FSMC_FLAG_LEVEL ((uint32_t)0x00000002)
Kojto 93:e188a91d3eaa 715 #define FSMC_FLAG_FALLING_EDGE ((uint32_t)0x00000004)
Kojto 93:e188a91d3eaa 716 #define FSMC_FLAG_FEMPT ((uint32_t)0x00000040)
Kojto 93:e188a91d3eaa 717
Kojto 93:e188a91d3eaa 718 #define IS_FSMC_GET_FLAG(FLAG) (((FLAG) == FSMC_FLAG_RISING_EDGE) || \
Kojto 93:e188a91d3eaa 719 ((FLAG) == FSMC_FLAG_LEVEL) || \
Kojto 93:e188a91d3eaa 720 ((FLAG) == FSMC_FLAG_FALLING_EDGE) || \
Kojto 93:e188a91d3eaa 721 ((FLAG) == FSMC_FLAG_FEMPT))
Kojto 93:e188a91d3eaa 722
Kojto 93:e188a91d3eaa 723 #define IS_FSMC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint32_t)0xFFFFFFF8) == 0x00000000) && ((FLAG) != 0x00000000))
Kojto 93:e188a91d3eaa 724
Kojto 93:e188a91d3eaa 725
Kojto 93:e188a91d3eaa 726 /**
Kojto 93:e188a91d3eaa 727 * @}
Kojto 93:e188a91d3eaa 728 */
Kojto 93:e188a91d3eaa 729
Kojto 93:e188a91d3eaa 730
Kojto 93:e188a91d3eaa 731 /* Exported macro ------------------------------------------------------------*/
Kojto 93:e188a91d3eaa 732
Kojto 93:e188a91d3eaa 733
Kojto 93:e188a91d3eaa 734 /** @defgroup FSMC_NOR_Macros
Kojto 93:e188a91d3eaa 735 * @brief macros to handle NOR device enable/disable and read/write operations
Kojto 93:e188a91d3eaa 736 * @{
Kojto 93:e188a91d3eaa 737 */
Kojto 93:e188a91d3eaa 738
Kojto 93:e188a91d3eaa 739 /**
Kojto 93:e188a91d3eaa 740 * @brief Enable the NORSRAM device access.
Kojto 93:e188a91d3eaa 741 * @param __INSTANCE__: FSMC_NORSRAM Instance
Kojto 93:e188a91d3eaa 742 * @param __BANK__: FSMC_NORSRAM Bank
Kojto 93:e188a91d3eaa 743 * @retval none
Kojto 93:e188a91d3eaa 744 */
Kojto 93:e188a91d3eaa 745 #define __FSMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] |= FSMC_BCR1_MBKEN)
Kojto 93:e188a91d3eaa 746
Kojto 93:e188a91d3eaa 747 /**
Kojto 93:e188a91d3eaa 748 * @brief Disable the NORSRAM device access.
Kojto 93:e188a91d3eaa 749 * @param __INSTANCE__: FSMC_NORSRAM Instance
Kojto 93:e188a91d3eaa 750 * @param __BANK__: FSMC_NORSRAM Bank
Kojto 93:e188a91d3eaa 751 * @retval none
Kojto 93:e188a91d3eaa 752 */
Kojto 93:e188a91d3eaa 753 #define __FSMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] &= ~FSMC_BCR1_MBKEN)
Kojto 93:e188a91d3eaa 754
Kojto 93:e188a91d3eaa 755 /**
Kojto 93:e188a91d3eaa 756 * @}
Kojto 93:e188a91d3eaa 757 */
Kojto 93:e188a91d3eaa 758
Kojto 93:e188a91d3eaa 759
Kojto 93:e188a91d3eaa 760 /** @defgroup FSMC_NAND_Macros
Kojto 93:e188a91d3eaa 761 * @brief macros to handle NAND device enable/disable
Kojto 93:e188a91d3eaa 762 * @{
Kojto 93:e188a91d3eaa 763 */
Kojto 93:e188a91d3eaa 764
Kojto 93:e188a91d3eaa 765 /**
Kojto 93:e188a91d3eaa 766 * @brief Enable the NAND device access.
Kojto 93:e188a91d3eaa 767 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 768 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 769 * @retval none
Kojto 93:e188a91d3eaa 770 */
Kojto 93:e188a91d3eaa 771 #define __FSMC_NAND_ENABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->PCR2 |= FSMC_PCR2_PBKEN): \
Kojto 93:e188a91d3eaa 772 ((__INSTANCE__)->PCR3 |= FSMC_PCR3_PBKEN))
Kojto 93:e188a91d3eaa 773
Kojto 93:e188a91d3eaa 774
Kojto 93:e188a91d3eaa 775 /**
Kojto 93:e188a91d3eaa 776 * @brief Disable the NAND device access.
Kojto 93:e188a91d3eaa 777 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 778 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 779 * @retval none
Kojto 93:e188a91d3eaa 780 */
Kojto 93:e188a91d3eaa 781 #define __FSMC_NAND_DISABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->PCR2 &= ~FSMC_PCR2_PBKEN): \
Kojto 93:e188a91d3eaa 782 ((__INSTANCE__)->PCR3 &= ~FSMC_PCR3_PBKEN))
Kojto 93:e188a91d3eaa 783
Kojto 93:e188a91d3eaa 784
Kojto 93:e188a91d3eaa 785 /**
Kojto 93:e188a91d3eaa 786 * @}
Kojto 93:e188a91d3eaa 787 */
Kojto 93:e188a91d3eaa 788
Kojto 93:e188a91d3eaa 789 /** @defgroup FSMC_PCCARD_Macros
Kojto 93:e188a91d3eaa 790 * @brief macros to handle SRAM read/write operations
Kojto 93:e188a91d3eaa 791 * @{
Kojto 93:e188a91d3eaa 792 */
Kojto 93:e188a91d3eaa 793
Kojto 93:e188a91d3eaa 794 /**
Kojto 93:e188a91d3eaa 795 * @brief Enable the PCCARD device access.
Kojto 93:e188a91d3eaa 796 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 797 * @retval none
Kojto 93:e188a91d3eaa 798 */
Kojto 93:e188a91d3eaa 799 #define __FSMC_PCCARD_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 |= FSMC_PCR4_PBKEN)
Kojto 93:e188a91d3eaa 800
Kojto 93:e188a91d3eaa 801 /**
Kojto 93:e188a91d3eaa 802 * @brief Disable the PCCARD device access.
Kojto 93:e188a91d3eaa 803 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 804 * @retval none
Kojto 93:e188a91d3eaa 805 */
Kojto 93:e188a91d3eaa 806 #define __FSMC_PCCARD_DISABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 &= ~FSMC_PCR4_PBKEN)
Kojto 93:e188a91d3eaa 807
Kojto 93:e188a91d3eaa 808 /**
Kojto 93:e188a91d3eaa 809 * @}
Kojto 93:e188a91d3eaa 810 */
Kojto 93:e188a91d3eaa 811
Kojto 93:e188a91d3eaa 812 /** @defgroup FSMC_Interrupt
Kojto 93:e188a91d3eaa 813 * @brief macros to handle FSMC interrupts
Kojto 93:e188a91d3eaa 814 * @{
Kojto 93:e188a91d3eaa 815 */
Kojto 93:e188a91d3eaa 816
Kojto 93:e188a91d3eaa 817 /**
Kojto 93:e188a91d3eaa 818 * @brief Enable the NAND device interrupt.
Kojto 93:e188a91d3eaa 819 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 820 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 821 * @param __INTERRUPT__: FSMC_NAND interrupt
Kojto 93:e188a91d3eaa 822 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 823 * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge.
Kojto 93:e188a91d3eaa 824 * @arg FSMC_IT_LEVEL: Interrupt level.
Kojto 93:e188a91d3eaa 825 * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge.
Kojto 93:e188a91d3eaa 826 * @retval None
Kojto 93:e188a91d3eaa 827 */
Kojto 93:e188a91d3eaa 828 #define __FSMC_NAND_ENABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 |= (__INTERRUPT__)): \
Kojto 93:e188a91d3eaa 829 ((__INSTANCE__)->SR3 |= (__INTERRUPT__)))
Kojto 93:e188a91d3eaa 830
Kojto 93:e188a91d3eaa 831 /**
Kojto 93:e188a91d3eaa 832 * @brief Disable the NAND device interrupt.
Kojto 93:e188a91d3eaa 833 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 834 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 835 * @param __INTERRUPT__: FSMC_NAND interrupt
Kojto 93:e188a91d3eaa 836 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 837 * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge.
Kojto 93:e188a91d3eaa 838 * @arg FSMC_IT_LEVEL: Interrupt level.
Kojto 93:e188a91d3eaa 839 * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge.
Kojto 93:e188a91d3eaa 840 * @retval None
Kojto 93:e188a91d3eaa 841 */
Kojto 93:e188a91d3eaa 842 #define __FSMC_NAND_DISABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 &= ~(__INTERRUPT__)): \
Kojto 93:e188a91d3eaa 843 ((__INSTANCE__)->SR3 &= ~(__INTERRUPT__)))
Kojto 93:e188a91d3eaa 844
Kojto 93:e188a91d3eaa 845 /**
Kojto 93:e188a91d3eaa 846 * @brief Get flag status of the NAND device.
Kojto 93:e188a91d3eaa 847 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 848 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 849 * @param __FLAG__: FSMC_NAND flag
Kojto 93:e188a91d3eaa 850 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 851 * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
Kojto 93:e188a91d3eaa 852 * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag.
Kojto 93:e188a91d3eaa 853 * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
Kojto 93:e188a91d3eaa 854 * @arg FSMC_FLAG_FEMPT: FIFO empty flag.
Kojto 93:e188a91d3eaa 855 * @retval The state of FLAG (SET or RESET).
Kojto 93:e188a91d3eaa 856 */
Kojto 93:e188a91d3eaa 857 #define __FSMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2)? (((__INSTANCE__)->SR2 &(__FLAG__)) == (__FLAG__)): \
Kojto 93:e188a91d3eaa 858 (((__INSTANCE__)->SR3 &(__FLAG__)) == (__FLAG__)))
Kojto 93:e188a91d3eaa 859 /**
Kojto 93:e188a91d3eaa 860 * @brief Clear flag status of the NAND device.
Kojto 93:e188a91d3eaa 861 * @param __INSTANCE__: FSMC_NAND Instance
Kojto 93:e188a91d3eaa 862 * @param __BANK__: FSMC_NAND Bank
Kojto 93:e188a91d3eaa 863 * @param __FLAG__: FSMC_NAND flag
Kojto 93:e188a91d3eaa 864 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 865 * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
Kojto 93:e188a91d3eaa 866 * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag.
Kojto 93:e188a91d3eaa 867 * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
Kojto 93:e188a91d3eaa 868 * @arg FSMC_FLAG_FEMPT: FIFO empty flag.
Kojto 93:e188a91d3eaa 869 * @retval None
Kojto 93:e188a91d3eaa 870 */
Kojto 93:e188a91d3eaa 871 #define __FSMC_NAND_CLEAR_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 &= ~(__FLAG__)): \
Kojto 93:e188a91d3eaa 872 ((__INSTANCE__)->SR3 &= ~(__FLAG__)))
Kojto 93:e188a91d3eaa 873 /**
Kojto 93:e188a91d3eaa 874 * @brief Enable the PCCARD device interrupt.
Kojto 93:e188a91d3eaa 875 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 876 * @param __INTERRUPT__: FSMC_PCCARD interrupt
Kojto 93:e188a91d3eaa 877 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 878 * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge.
Kojto 93:e188a91d3eaa 879 * @arg FSMC_IT_LEVEL: Interrupt level.
Kojto 93:e188a91d3eaa 880 * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge.
Kojto 93:e188a91d3eaa 881 * @retval None
Kojto 93:e188a91d3eaa 882 */
Kojto 93:e188a91d3eaa 883 #define __FSMC_PCCARD_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 |= (__INTERRUPT__))
Kojto 93:e188a91d3eaa 884
Kojto 93:e188a91d3eaa 885 /**
Kojto 93:e188a91d3eaa 886 * @brief Disable the PCCARD device interrupt.
Kojto 93:e188a91d3eaa 887 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 888 * @param __INTERRUPT__: FSMC_PCCARD interrupt
Kojto 93:e188a91d3eaa 889 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 890 * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge.
Kojto 93:e188a91d3eaa 891 * @arg FSMC_IT_LEVEL: Interrupt level.
Kojto 93:e188a91d3eaa 892 * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge.
Kojto 93:e188a91d3eaa 893 * @retval None
Kojto 93:e188a91d3eaa 894 */
Kojto 93:e188a91d3eaa 895 #define __FSMC_PCCARD_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 &= ~(__INTERRUPT__))
Kojto 93:e188a91d3eaa 896
Kojto 93:e188a91d3eaa 897 /**
Kojto 93:e188a91d3eaa 898 * @brief Get flag status of the PCCARD device.
Kojto 93:e188a91d3eaa 899 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 900 * @param __FLAG__: FSMC_PCCARD flag
Kojto 93:e188a91d3eaa 901 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 902 * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
Kojto 93:e188a91d3eaa 903 * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag.
Kojto 93:e188a91d3eaa 904 * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
Kojto 93:e188a91d3eaa 905 * @arg FSMC_FLAG_FEMPT: FIFO empty flag.
Kojto 93:e188a91d3eaa 906 * @retval The state of FLAG (SET or RESET).
Kojto 93:e188a91d3eaa 907 */
Kojto 93:e188a91d3eaa 908 #define __FSMC_PCCARD_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SR4 &(__FLAG__)) == (__FLAG__))
Kojto 93:e188a91d3eaa 909
Kojto 93:e188a91d3eaa 910 /**
Kojto 93:e188a91d3eaa 911 * @brief Clear flag status of the PCCARD device.
Kojto 93:e188a91d3eaa 912 * @param __INSTANCE__: FSMC_PCCARD Instance
Kojto 93:e188a91d3eaa 913 * @param __FLAG__: FSMC_PCCARD flag
Kojto 93:e188a91d3eaa 914 * This parameter can be any combination of the following values:
Kojto 93:e188a91d3eaa 915 * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag.
Kojto 93:e188a91d3eaa 916 * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag.
Kojto 93:e188a91d3eaa 917 * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag.
Kojto 93:e188a91d3eaa 918 * @arg FSMC_FLAG_FEMPT: FIFO empty flag.
Kojto 93:e188a91d3eaa 919 * @retval None
Kojto 93:e188a91d3eaa 920 */
Kojto 93:e188a91d3eaa 921 #define __FSMC_PCCARD_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR4 &= ~(__FLAG__))
Kojto 93:e188a91d3eaa 922
Kojto 93:e188a91d3eaa 923 /**
Kojto 93:e188a91d3eaa 924 * @}
Kojto 93:e188a91d3eaa 925 */
Kojto 93:e188a91d3eaa 926
Kojto 93:e188a91d3eaa 927 /* Exported functions --------------------------------------------------------*/
Kojto 93:e188a91d3eaa 928
Kojto 93:e188a91d3eaa 929 /* FSMC_NORSRAM Controller functions ******************************************/
Kojto 93:e188a91d3eaa 930 /* Initialization/de-initialization functions */
Kojto 93:e188a91d3eaa 931 HAL_StatusTypeDef FSMC_NORSRAM_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_InitTypeDef *Init);
Kojto 93:e188a91d3eaa 932 HAL_StatusTypeDef FSMC_NORSRAM_Timing_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank);
Kojto 93:e188a91d3eaa 933 HAL_StatusTypeDef FSMC_NORSRAM_Extended_Timing_Init(FSMC_NORSRAM_EXTENDED_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode);
Kojto 93:e188a91d3eaa 934 HAL_StatusTypeDef FSMC_NORSRAM_DeInit(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank);
Kojto 93:e188a91d3eaa 935
Kojto 93:e188a91d3eaa 936 /* FSMC_NORSRAM Control functions */
Kojto 93:e188a91d3eaa 937 HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Enable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank);
Kojto 93:e188a91d3eaa 938 HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Disable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank);
Kojto 93:e188a91d3eaa 939
Kojto 93:e188a91d3eaa 940 /* FSMC_NAND Controller functions *********************************************/
Kojto 93:e188a91d3eaa 941 /* Initialization/de-initialization functions */
Kojto 93:e188a91d3eaa 942 HAL_StatusTypeDef FSMC_NAND_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_InitTypeDef *Init);
Kojto 93:e188a91d3eaa 943 HAL_StatusTypeDef FSMC_NAND_CommonSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
Kojto 93:e188a91d3eaa 944 HAL_StatusTypeDef FSMC_NAND_AttributeSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank);
Kojto 93:e188a91d3eaa 945 HAL_StatusTypeDef FSMC_NAND_DeInit(FSMC_NAND_TypeDef *Device, uint32_t Bank);
Kojto 93:e188a91d3eaa 946
Kojto 93:e188a91d3eaa 947 /* FSMC_NAND Control functions */
Kojto 93:e188a91d3eaa 948 HAL_StatusTypeDef FSMC_NAND_ECC_Enable(FSMC_NAND_TypeDef *Device, uint32_t Bank);
Kojto 93:e188a91d3eaa 949 HAL_StatusTypeDef FSMC_NAND_ECC_Disable(FSMC_NAND_TypeDef *Device, uint32_t Bank);
Kojto 93:e188a91d3eaa 950 HAL_StatusTypeDef FSMC_NAND_GetECC(FSMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout);
Kojto 93:e188a91d3eaa 951
Kojto 93:e188a91d3eaa 952 /* FSMC_PCCARD Controller functions *******************************************/
Kojto 93:e188a91d3eaa 953 /* Initialization/de-initialization functions */
Kojto 93:e188a91d3eaa 954 HAL_StatusTypeDef FSMC_PCCARD_Init(FSMC_PCCARD_TypeDef *Device, FSMC_PCCARD_InitTypeDef *Init);
Kojto 93:e188a91d3eaa 955 HAL_StatusTypeDef FSMC_PCCARD_CommonSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing);
Kojto 93:e188a91d3eaa 956 HAL_StatusTypeDef FSMC_PCCARD_AttributeSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing);
Kojto 93:e188a91d3eaa 957 HAL_StatusTypeDef FSMC_PCCARD_IOSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing);
Kojto 93:e188a91d3eaa 958 HAL_StatusTypeDef FSMC_PCCARD_DeInit(FSMC_PCCARD_TypeDef *Device);
Kojto 93:e188a91d3eaa 959
Kojto 93:e188a91d3eaa 960 /* FSMC APIs, macros and typedefs redefinition */
Kojto 93:e188a91d3eaa 961 #define FMC_NORSRAM_TypeDef FSMC_NORSRAM_TypeDef
Kojto 93:e188a91d3eaa 962 #define FMC_NORSRAM_EXTENDED_TypeDef FSMC_NORSRAM_EXTENDED_TypeDef
Kojto 93:e188a91d3eaa 963 #define FMC_NORSRAM_InitTypeDef FSMC_NORSRAM_InitTypeDef
Kojto 93:e188a91d3eaa 964 #define FMC_NORSRAM_TimingTypeDef FSMC_NORSRAM_TimingTypeDef
Kojto 93:e188a91d3eaa 965
Kojto 93:e188a91d3eaa 966 #define FMC_NORSRAM_Init FSMC_NORSRAM_Init
Kojto 93:e188a91d3eaa 967 #define FMC_NORSRAM_Timing_Init FSMC_NORSRAM_Timing_Init
Kojto 93:e188a91d3eaa 968 #define FMC_NORSRAM_Extended_Timing_Init FSMC_NORSRAM_Extended_Timing_Init
Kojto 93:e188a91d3eaa 969 #define FMC_NORSRAM_DeInit FSMC_NORSRAM_DeInit
Kojto 93:e188a91d3eaa 970 #define FMC_NORSRAM_WriteOperation_Enable FSMC_NORSRAM_WriteOperation_Enable
Kojto 93:e188a91d3eaa 971 #define FMC_NORSRAM_WriteOperation_Disable FSMC_NORSRAM_WriteOperation_Disable
Kojto 93:e188a91d3eaa 972
Kojto 93:e188a91d3eaa 973 #define __FMC_NORSRAM_ENABLE __FSMC_NORSRAM_ENABLE
Kojto 93:e188a91d3eaa 974 #define __FMC_NORSRAM_DISABLE __FSMC_NORSRAM_DISABLE
Kojto 93:e188a91d3eaa 975
Kojto 93:e188a91d3eaa 976 #define FMC_NAND_InitTypeDef FSMC_NAND_InitTypeDef
Kojto 93:e188a91d3eaa 977 #define FMC_PCCARD_InitTypeDef FSMC_PCCARD_InitTypeDef
Kojto 93:e188a91d3eaa 978 #define FMC_NAND_PCC_TimingTypeDef FSMC_NAND_PCC_TimingTypeDef
Kojto 93:e188a91d3eaa 979
Kojto 93:e188a91d3eaa 980 #define FMC_NAND_Init FSMC_NAND_Init
Kojto 93:e188a91d3eaa 981 #define FMC_NAND_CommonSpace_Timing_Init FSMC_NAND_CommonSpace_Timing_Init
Kojto 93:e188a91d3eaa 982 #define FMC_NAND_AttributeSpace_Timing_Init FSMC_NAND_AttributeSpace_Timing_Init
Kojto 93:e188a91d3eaa 983 #define FMC_NAND_DeInit FSMC_NAND_DeInit
Kojto 93:e188a91d3eaa 984 #define FMC_NAND_ECC_Enable FSMC_NAND_ECC_Enable
Kojto 93:e188a91d3eaa 985 #define FMC_NAND_ECC_Disable FSMC_NAND_ECC_Disable
Kojto 93:e188a91d3eaa 986 #define FMC_NAND_GetECC FSMC_NAND_GetECC
Kojto 93:e188a91d3eaa 987 #define FMC_PCCARD_Init FSMC_PCCARD_Init
Kojto 93:e188a91d3eaa 988 #define FMC_PCCARD_CommonSpace_Timing_Init FSMC_PCCARD_CommonSpace_Timing_Init
Kojto 93:e188a91d3eaa 989 #define FMC_PCCARD_AttributeSpace_Timing_Init FSMC_PCCARD_AttributeSpace_Timing_Init
Kojto 93:e188a91d3eaa 990 #define FMC_PCCARD_IOSpace_Timing_Init FSMC_PCCARD_IOSpace_Timing_Init
Kojto 93:e188a91d3eaa 991 #define FMC_PCCARD_DeInit FSMC_PCCARD_DeInit
Kojto 93:e188a91d3eaa 992
Kojto 93:e188a91d3eaa 993 #define __FMC_NAND_ENABLE __FSMC_NAND_ENABLE
Kojto 93:e188a91d3eaa 994 #define __FMC_NAND_DISABLE __FSMC_NAND_DISABLE
Kojto 93:e188a91d3eaa 995 #define __FMC_PCCARD_ENABLE __FSMC_PCCARD_ENABLE
Kojto 93:e188a91d3eaa 996 #define __FMC_PCCARD_DISABLE __FSMC_PCCARD_DISABLE
Kojto 93:e188a91d3eaa 997 #define __FMC_NAND_ENABLE_IT __FSMC_NAND_ENABLE_IT
Kojto 93:e188a91d3eaa 998 #define __FMC_NAND_DISABLE_IT __FSMC_NAND_DISABLE_IT
Kojto 93:e188a91d3eaa 999 #define __FMC_NAND_GET_FLAG __FSMC_NAND_GET_FLAG
Kojto 93:e188a91d3eaa 1000 #define __FMC_NAND_CLEAR_FLAG __FSMC_NAND_CLEAR_FLAG
Kojto 93:e188a91d3eaa 1001 #define __FMC_PCCARD_ENABLE_IT __FSMC_PCCARD_ENABLE_IT
Kojto 93:e188a91d3eaa 1002 #define __FMC_PCCARD_DISABLE_IT __FSMC_PCCARD_DISABLE_IT
Kojto 93:e188a91d3eaa 1003 #define __FMC_PCCARD_GET_FLAG __FSMC_PCCARD_GET_FLAG
Kojto 93:e188a91d3eaa 1004 #define __FMC_PCCARD_CLEAR_FLAG __FSMC_PCCARD_CLEAR_FLAG
Kojto 93:e188a91d3eaa 1005
Kojto 93:e188a91d3eaa 1006 #define FMC_NORSRAM_TypeDef FSMC_NORSRAM_TypeDef
Kojto 93:e188a91d3eaa 1007 #define FMC_NORSRAM_EXTENDED_TypeDef FSMC_NORSRAM_EXTENDED_TypeDef
Kojto 93:e188a91d3eaa 1008 #define FMC_NAND_TypeDef FSMC_NAND_TypeDef
Kojto 93:e188a91d3eaa 1009 #define FMC_PCCARD_TypeDef FSMC_PCCARD_TypeDef
Kojto 93:e188a91d3eaa 1010
Kojto 93:e188a91d3eaa 1011 #define FMC_NORSRAM_DEVICE FSMC_NORSRAM_DEVICE
Kojto 93:e188a91d3eaa 1012 #define FMC_NORSRAM_EXTENDED_DEVICE FSMC_NORSRAM_EXTENDED_DEVICE
Kojto 93:e188a91d3eaa 1013 #define FMC_NAND_DEVICE FSMC_NAND_DEVICE
Kojto 93:e188a91d3eaa 1014 #define FMC_PCCARD_DEVICE FSMC_PCCARD_DEVICE
Kojto 93:e188a91d3eaa 1015
Kojto 93:e188a91d3eaa 1016 #define FMC_NAND_BANK2 FSMC_NAND_BANK2
Kojto 93:e188a91d3eaa 1017
Kojto 93:e188a91d3eaa 1018 #define FMC_NORSRAM_BANK1 FSMC_NORSRAM_BANK1
Kojto 93:e188a91d3eaa 1019 #define FMC_NORSRAM_BANK2 FSMC_NORSRAM_BANK2
Kojto 93:e188a91d3eaa 1020 #define FMC_NORSRAM_BANK3 FSMC_NORSRAM_BANK3
Kojto 93:e188a91d3eaa 1021
Kojto 93:e188a91d3eaa 1022 #define FMC_IT_RISING_EDGE FSMC_IT_RISING_EDGE
Kojto 93:e188a91d3eaa 1023 #define FMC_IT_LEVEL FSMC_IT_LEVEL
Kojto 93:e188a91d3eaa 1024 #define FMC_IT_FALLING_EDGE FSMC_IT_FALLING_EDGE
Kojto 93:e188a91d3eaa 1025 #define FMC_IT_REFRESH_ERROR FSMC_IT_REFRESH_ERROR
Kojto 93:e188a91d3eaa 1026
Kojto 93:e188a91d3eaa 1027 #define FMC_FLAG_RISING_EDGE FSMC_FLAG_RISING_EDGE
Kojto 93:e188a91d3eaa 1028 #define FMC_FLAG_LEVEL FSMC_FLAG_LEVEL
Kojto 93:e188a91d3eaa 1029 #define FMC_FLAG_FALLING_EDGE FSMC_FLAG_FALLING_EDGE
Kojto 93:e188a91d3eaa 1030 #define FMC_FLAG_FEMPT FSMC_FLAG_FEMPT
Kojto 93:e188a91d3eaa 1031
Kojto 93:e188a91d3eaa 1032 #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
Kojto 93:e188a91d3eaa 1033
Kojto 93:e188a91d3eaa 1034 /**
Kojto 93:e188a91d3eaa 1035 * @}
Kojto 93:e188a91d3eaa 1036 */
Kojto 93:e188a91d3eaa 1037
Kojto 93:e188a91d3eaa 1038 /**
Kojto 93:e188a91d3eaa 1039 * @}
Kojto 93:e188a91d3eaa 1040 */
Kojto 93:e188a91d3eaa 1041
Kojto 93:e188a91d3eaa 1042 #ifdef __cplusplus
Kojto 93:e188a91d3eaa 1043 }
Kojto 93:e188a91d3eaa 1044 #endif
Kojto 93:e188a91d3eaa 1045
Kojto 93:e188a91d3eaa 1046 #endif /* __STM32F4xx_LL_FSMC_H */
Kojto 93:e188a91d3eaa 1047
Kojto 93:e188a91d3eaa 1048 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/