1 /** 2 ****************************************************************************** 3 * @file stm32n6xx_hal_ramcfg.h 4 * @author MCD Application Team 5 * @brief Header file of RAMCFG HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2023 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32N6xx_HAL_RAMCFG_H 21 #define STM32N6xx_HAL_RAMCFG_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32n6xx_hal_def.h" 29 30 /** @addtogroup STM32N6xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup RAMCFG 35 * @{ 36 */ 37 38 39 /* Exported types ------------------------------------------------------------*/ 40 41 /** @defgroup RAMCFG_Exported_Types RAMCFG Exported Types 42 * @brief RAMCFG Exported Types 43 * @{ 44 */ 45 46 /** 47 * @brief HAL RAMCFG State Enumeration Definition 48 */ 49 typedef enum 50 { 51 HAL_RAMCFG_STATE_RESET = 0x00U, /*!< RAMCFG not yet initialized or disabled */ 52 HAL_RAMCFG_STATE_READY = 0x01U, /*!< RAMCFG initialized and ready for use */ 53 HAL_RAMCFG_STATE_BUSY = 0x02U, /*!< RAMCFG process is ongoing */ 54 HAL_RAMCFG_STATE_ERROR = 0x03U, /*!< RAMCFG error state */ 55 } HAL_RAMCFG_StateTypeDef; 56 57 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 58 /** 59 * @brief HAL RAMCFG Callbacks IDs Enumeration Definition 60 */ 61 typedef enum 62 { 63 HAL_RAMCFG_MSPINIT_CB_ID = 0x00U, /*!< RAMCFG MSP Init Callback ID */ 64 HAL_RAMCFG_MSPDEINIT_CB_ID = 0x01U, /*!< RAMCFG MSP DeInit Callback ID */ 65 HAL_RAMCFG_SE_DETECT_CB_ID = 0x02U, /*!< RAMCFG Single Error Detect Callback ID */ 66 HAL_RAMCFG_DE_DETECT_CB_ID = 0x03U, /*!< RAMCFG Double Error Detect Callback ID */ 67 HAL_RAMCFG_ALL_CB_ID = 0x04U, /*!< RAMCFG All callback ID */ 68 } HAL_RAMCFG_CallbackIDTypeDef; 69 #endif /* USE_HAL_RAMCFG_REGISTER_CALLBACKS */ 70 71 /** 72 * @brief RAMCFG Handle Structure Definition 73 */ 74 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 75 typedef struct __RAMCFG_HandleTypeDef 76 #else 77 typedef struct 78 #endif /* (USE_HAL_RAMCFG_REGISTER_CALLBACKS) */ 79 { 80 RAMCFG_TypeDef *Instance; /*!< RAMCFG Register Base Address */ 81 __IO HAL_RAMCFG_StateTypeDef State; /*!< RAMCFG State */ 82 __IO uint32_t ErrorCode; /*!< RAMCFG Error Code */ 83 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 84 void (* MspInitCallback)(struct __RAMCFG_HandleTypeDef *hramcfg); /*!< RAMCFG MSP Init Callback */ 85 void (* MspDeInitCallback)(struct __RAMCFG_HandleTypeDef *hramcfg); /*!< RAMCFG MSP DeInit Callback */ 86 void (* DetectSingleErrorCallback)(struct __RAMCFG_HandleTypeDef *hramcfg);/*!< RAMCFG Single Error Detect Callback */ 87 void (* DetectDoubleErrorCallback)(struct __RAMCFG_HandleTypeDef *hramcfg);/*!< RAMCFG Double Error Detect Callback */ 88 #endif /* USE_HAL_RAMCFG_REGISTER_CALLBACKS */ 89 } RAMCFG_HandleTypeDef; 90 91 /** 92 * @} 93 */ 94 95 96 /* Exported constants --------------------------------------------------------*/ 97 98 /** @defgroup RAMCFG_Exported_Constants RAMCFG Exported Constants 99 * @brief RAMCFG Exported Constants 100 * @{ 101 */ 102 103 /** @defgroup RAMCFG_Error_Codes RAMCFG Error Codes 104 * @brief RAMCFG Error Codes 105 * @{ 106 */ 107 #define HAL_RAMCFG_ERROR_NONE 0x00000000U /*!< RAMCFG No Error */ 108 #define HAL_RAMCFG_ERROR_TIMEOUT 0x00000001U /*!< RAMCFG Timeout Error */ 109 #define HAL_RAMCFG_ERROR_BUSY 0x00000002U /*!< RAMCFG Busy Error */ 110 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 111 #define HAL_RAMCFG_ERROR_INVALID_CALLBACK 0x00000003U /*!< Invalid Callback error */ 112 #endif /* USE_HAL_RAMCFG_REGISTER_CALLBACKS */ 113 /** 114 * @} 115 */ 116 117 /** @defgroup RAMCFG_Interrupt RAMCFG Interrupts 118 * @brief RAMCFG Interrupts 119 * @{ 120 */ 121 #define RAMCFG_IT_SINGLEERR RAMCFG_IER_SEIE /*!< RAMCFG Single Error Interrupt */ 122 #define RAMCFG_IT_DOUBLEERR RAMCFG_IER_DEIE /*!< RAMCFG Double Error Interrupt */ 123 #define RAMCFG_IT_ALL \ 124 (RAMCFG_IER_SEIE | RAMCFG_IER_DEIE) /*!<RAMCFG All RAMCFG interrupt */ 125 /** 126 * @} 127 */ 128 129 /** @defgroup RAMCFG_FLAG RAMCFG Monitor Flags 130 * @brief RAMCFG Monitor Flags 131 * @{ 132 */ 133 #define RAMCFG_FLAG_SINGLEERR RAMCFG_ISR_SEDC /*!< RAMCFG Single Error Detected and Corrected Flag */ 134 #define RAMCFG_FLAG_DOUBLEERR RAMCFG_ISR_DED /*!< RAMCFG Double Error Detected Flag */ 135 #define RAMCFG_FLAG_SRAMBUSY RAMCFG_ISR_SRAMBUSY /*!< RAMCFG SRAM busy Flag */ 136 #define RAMCFG_FLAGS_ALL \ 137 (RAMCFG_ISR_SEDC | RAMCFG_ISR_DED | RAMCFG_ISR_SRAMBUSY) /*!< RAMCFG All Flags */ 138 /** 139 * @} 140 */ 141 142 /** @defgroup RAMCFG_Keys RAMCFG Keys 143 * @brief RAMCFG Keys 144 * @{ 145 */ 146 #define RAMCFG_ERASE_KEY1 (0xCAU) /*!< RAMCFG launch Erase Key 1 */ 147 #define RAMCFG_ERASE_KEY2 (0x53U) /*!< RAMCFG launch Erase Key 2 */ 148 149 #define RAMCFG_ECC_KEY1 (0xAEU) /*!< RAMCFG launch ECC Key 1 */ 150 #define RAMCFG_ECC_KEY2 (0x75U) /*!< RAMCFG launch ECC Key 2 */ 151 /** 152 * @} 153 */ 154 /** @defgroup RAMCFG_AXISRAM_PowerDown RAMCFG SRAM Power Down 155 * @{ 156 */ 157 #define RAMCFG_AXISRAM_POWERDOWN RAMCFG_CR_SRAMSD /*!< AXISRAM power down */ 158 /** 159 * @} 160 */ 161 /** 162 * @} 163 */ 164 165 166 /* Exported macro ------------------------------------------------------------*/ 167 168 /** @defgroup RAMCFG_Exported_Macros RAMCFG Exported Macros 169 * @brief RAMCFG Exported Macros 170 * @{ 171 */ 172 173 /** 174 * @brief Enable the specified RAMCFG interrupts. 175 * @param __HANDLE__ : Specifies RAMCFG handle. 176 * @param __INTERRUPT__: Specifies the RAMCFG interrupt sources to be enabled. 177 * This parameter can be one of the following values: 178 * @arg RAMCFG_IT_SINGLEERR : Single Error Interrupt Mask. 179 * @arg RAMCFG_IT_DOUBLEERR : Double Error Interrupt Mask. 180 * @arg RAMCFG_IT_NMIERR : Double Error Interrupt redirection to NMI Mask. 181 * @arg RAMCFG_IT_ALL : All Interrupt Mask. 182 * @retval None 183 */ 184 #define __HAL_RAMCFG_ENABLE_IT(__HANDLE__, __INTERRUPT__) \ 185 ((__HANDLE__)->Instance->IER |= (__INTERRUPT__)) 186 187 /** 188 * @brief Disable the specified RAMCFG interrupts. 189 * @note This macros is used only to disable RAMCFG_IT_SINGLEERR and RAMCFG_IT_DOUBLEERR 190 * interrupts. RAMCFG_IT_NMIERR interrupt can only be disabled by global peripheral reset or system reset. 191 * @param __HANDLE__ : Specifies RAMCFG handle. 192 * @param __INTERRUPT__: Specifies the RAMCFG interrupt sources to be disabled. 193 * This parameter can be one of the following values: 194 * @arg RAMCFG_IT_SINGLEERR : Single Error Interrupt Mask. 195 * @arg RAMCFG_IT_DOUBLEERR : Double Error Interrupt Mask. 196 * @retval None 197 */ 198 #define __HAL_RAMCFG_DISABLE_IT(__HANDLE__, __INTERRUPT__) \ 199 ((__HANDLE__)->Instance->IER &= ~(__INTERRUPT__)) 200 201 /** 202 * @brief Check whether the specified RAMCFG interrupt source is enabled or not. 203 * @param __HANDLE__ : Specifies the RAMCFG Handle. 204 * @param __INTERRUPT__ : Specifies the RAMCFG interrupt source to check. 205 * This parameter can be one of the following values: 206 * @arg RAMCFG_IT_SINGLEERR : Single Error Interrupt Mask. 207 * @arg RAMCFG_IT_DOUBLEERR : Double Error Interrupt Mask. 208 * @arg RAMCFG_IT_NMIERR : Double Error Interrupt Redirection to NMI Mask. 209 * @retval The new state of __INTERRUPT__ (SET or RESET). 210 */ 211 #define __HAL_RAMCFG_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) \ 212 ((((__HANDLE__)->Instance->IER & (__INTERRUPT__)) == (__INTERRUPT__)) ? 1U : 0U) 213 214 /** 215 * @brief Get the RAMCFG pending flags. 216 * @param __HANDLE__ : Specifies RAMCFG handle. 217 * @param __FLAG__ : Specifies the flag to be checked. 218 * This parameter can be one of the following values: 219 * @arg RAMCFG_FLAG_SINGLEERR : Single Error Detected and Corrected Flag. 220 * @arg RAMCFG_FLAG_DOUBLEERR : Double Error Detected Flag. 221 * @arg RAMCFG_FLAG_SRAMBUSY : SRAM Busy Flag. 222 * @retval The state of FLAG (SET or RESET). 223 */ 224 #define __HAL_RAMCFG_GET_FLAG(__HANDLE__, __FLAG__) \ 225 (READ_BIT((__HANDLE__)->Instance->ISR, (__FLAG__)) == (__FLAG__)) 226 227 /** 228 * @brief Clear the RAMCFG pending flags. 229 * @param __HANDLE__ : Specifies RAMCFG handle. 230 * @param __FLAG__ : Specifies the flag to be cleared. 231 * This parameter can be any combination of the following values: 232 * @arg RAMCFG_FLAG_SINGLEERR : Single Error Detected and Corrected Flag. 233 * @arg RAMCFG_FLAG_DOUBLEERR : Double Error Detected Flag. 234 * @retval None. 235 */ 236 #define __HAL_RAMCFG_CLEAR_FLAG(__HANDLE__, __FLAG__) \ 237 ((__HANDLE__)->Instance->ICR |= (__FLAG__)) 238 239 /** @brief Reset the RAMCFG handle state. 240 * @param __HANDLE__ : Specifies the RAMCFG Handle. 241 * @retval None. 242 */ 243 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 244 #define __HAL_RAMCFG_RESET_HANDLE_STATE(__HANDLE__) \ 245 do{\ 246 (__HANDLE__)->State = HAL_RAMCFG_STATE_RESET; \ 247 (__HANDLE__)->MspInitCallback = NULL; \ 248 (__HANDLE__)->MspDeInitCallback = NULL; \ 249 }while(0) 250 #else 251 #define __HAL_RAMCFG_RESET_HANDLE_STATE(__HANDLE__) \ 252 do{\ 253 (__HANDLE__)->State = HAL_RAMCFG_STATE_RESET; \ 254 }while(0) 255 #endif /* USE_HAL_RAMCFG_REGISTER_CALLBACKS */ 256 257 /** 258 * @} 259 */ 260 261 /* Exported functions --------------------------------------------------------*/ 262 263 /** @defgroup RAMCFG_Exported_Functions RAMCFG Exported Functions 264 * @brief RAMCFG Exported Functions 265 * @{ 266 */ 267 268 /** @defgroup RAMCFG_Exported_Functions_Group1 Initialization and De-Initialization Functions 269 * @brief Initialization and De-Initialization Functions 270 * @{ 271 */ 272 HAL_StatusTypeDef HAL_RAMCFG_Init(RAMCFG_HandleTypeDef *hramcfg); 273 HAL_StatusTypeDef HAL_RAMCFG_DeInit(RAMCFG_HandleTypeDef *hramcfg); 274 void HAL_RAMCFG_MspInit(RAMCFG_HandleTypeDef *hramcfg); 275 void HAL_RAMCFG_MspDeInit(RAMCFG_HandleTypeDef *hramcfg); 276 /** 277 * @} 278 */ 279 280 /** @defgroup RAMCFG_Exported_Functions_Group2 ECC Operation Functions 281 * @brief ECC Operation Functions 282 * @{ 283 */ 284 HAL_StatusTypeDef HAL_RAMCFG_StartECC(RAMCFG_HandleTypeDef *hramcfg); 285 HAL_StatusTypeDef HAL_RAMCFG_StopECC(RAMCFG_HandleTypeDef *hramcfg); 286 HAL_StatusTypeDef HAL_RAMCFG_EnableNotification(RAMCFG_HandleTypeDef *hramcfg, uint32_t Notifications); 287 HAL_StatusTypeDef HAL_RAMCFG_DisableNotification(RAMCFG_HandleTypeDef *hramcfg, uint32_t Notifications); 288 uint32_t HAL_RAMCFG_IsECCSingleErrorDetected(const RAMCFG_HandleTypeDef *hramcfg); 289 uint32_t HAL_RAMCFG_IsECCDoubleErrorDetected(const RAMCFG_HandleTypeDef *hramcfg); 290 uint32_t HAL_RAMCFG_GetSingleErrorAddress(const RAMCFG_HandleTypeDef *hramcfg); 291 uint32_t HAL_RAMCFG_GetDoubleErrorAddress(const RAMCFG_HandleTypeDef *hramcfg); 292 /** 293 * @} 294 */ 295 296 /** @defgroup RAMCFG_Exported_Functions_Group5 Erase Operation Functions 297 * @brief Erase Operation Functions 298 * @{ 299 */ 300 HAL_StatusTypeDef HAL_RAMCFG_Erase(RAMCFG_HandleTypeDef *hramcfg); 301 /** 302 * @} 303 */ 304 305 /** @defgroup RAMCFG_Exported_Functions_Group6 Handle Interrupt and Callbacks Functions 306 * @brief Handle Interrupt and Callbacks Functions 307 * @{ 308 */ 309 void HAL_RAMCFG_IRQHandler(RAMCFG_HandleTypeDef *hramcfg); 310 void HAL_RAMCFG_DetectSingleErrorCallback(RAMCFG_HandleTypeDef *hramcfg); 311 void HAL_RAMCFG_DetectDoubleErrorCallback(RAMCFG_HandleTypeDef *hramcfg); 312 #if (USE_HAL_RAMCFG_REGISTER_CALLBACKS == 1) 313 HAL_StatusTypeDef HAL_RAMCFG_RegisterCallback(RAMCFG_HandleTypeDef *hramcfg, 314 HAL_RAMCFG_CallbackIDTypeDef CallbackID, 315 void (* pCallback)(RAMCFG_HandleTypeDef *_hramcfg)); 316 HAL_StatusTypeDef HAL_RAMCFG_UnRegisterCallback(RAMCFG_HandleTypeDef *hramcfg, HAL_RAMCFG_CallbackIDTypeDef CallbackID); 317 #endif /* USE_HAL_RAMCFG_REGISTER_CALLBACKS */ 318 /** 319 * @} 320 */ 321 322 /** @defgroup RAMCFG_Exported_Functions_Group7 State and Error Functions 323 * @brief State and Error Functions 324 * @{ 325 */ 326 uint32_t HAL_RAMCFG_GetError(const RAMCFG_HandleTypeDef *hramcfg); 327 HAL_RAMCFG_StateTypeDef HAL_RAMCFG_GetState(const RAMCFG_HandleTypeDef *hramcfg); 328 /** 329 * @} 330 */ 331 332 333 /** @defgroup RAMCFG_Exported_Functions_Group9 AXISRAM Powerdown Functions 334 * @brief AXISRAM Powerdown Functions 335 * @{ 336 */ 337 void HAL_RAMCFG_EnableAXISRAM(const RAMCFG_HandleTypeDef *hramcfg); 338 void HAL_RAMCFG_DisableAXISRAM(const RAMCFG_HandleTypeDef *hramcfg); 339 /** 340 * @} 341 */ 342 343 /** 344 * @} 345 */ 346 347 348 /* Private Constants ---------------------------------------------------------*/ 349 350 /** @defgroup RAMCFG_Private_Constants RAMCFG Private Defines and Constants 351 * @brief RAMCFG Private Defines and Constants 352 * @{ 353 */ 354 /** 355 * @} 356 */ 357 358 359 /* Private macros ------------------------------------------------------------*/ 360 361 /** @defgroup RAMCFG_Private_Macros RAMCFG Private Macros 362 * @brief RAMCFG Private Macros 363 * @{ 364 */ 365 #define IS_RAMCFG_INTERRUPT(INTERRUPT) \ 366 (((INTERRUPT) != 0U) && (((INTERRUPT) & ~(RAMCFG_IT_SINGLEERR | RAMCFG_IT_DOUBLEERR)) == 0U)) 367 368 369 /** 370 * @} 371 */ 372 373 374 /* Private functions ---------------------------------------------------------*/ 375 376 /** @defgroup RAMCFG_Private_Functions RAMCFG Private Functions 377 * @brief RAMCFG Private Functions 378 * @{ 379 */ 380 /** 381 * @} 382 */ 383 384 /** 385 * @} 386 */ 387 388 /** 389 * @} 390 */ 391 392 #ifdef __cplusplus 393 } 394 #endif 395 396 #endif /* STM32N6xx_HAL_RAMCFG_H */ 397