mbed library sources

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Nov 07 15:45:07 2014 +0000
Revision:
394:83f921546702
Parent:
targets/cmsis/TARGET_STM/TARGET_NUCLEO_L152RE/stm32l1xx_hal_sram.c@354:e67efb2aab0e
Synchronized with git revision aab52cb7ec5a665869e507dd988bbfd55b7e087e

Full URL: https://github.com/mbedmicro/mbed/commit/aab52cb7ec5a665869e507dd988bbfd55b7e087e/

Tests: Fix cpputest testrunner

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 354:e67efb2aab0e 1 /**
mbed_official 354:e67efb2aab0e 2 ******************************************************************************
mbed_official 354:e67efb2aab0e 3 * @file stm32l1xx_hal_sram.c
mbed_official 354:e67efb2aab0e 4 * @author MCD Application Team
mbed_official 354:e67efb2aab0e 5 * @version V1.0.0
mbed_official 354:e67efb2aab0e 6 * @date 5-September-2014
mbed_official 354:e67efb2aab0e 7 * @brief SRAM HAL module driver.
mbed_official 354:e67efb2aab0e 8 * This file provides a generic firmware to drive SRAM memories
mbed_official 354:e67efb2aab0e 9 * mounted as external device.
mbed_official 354:e67efb2aab0e 10 *
mbed_official 354:e67efb2aab0e 11 @verbatim
mbed_official 354:e67efb2aab0e 12 ==============================================================================
mbed_official 354:e67efb2aab0e 13 ##### How to use this driver #####
mbed_official 354:e67efb2aab0e 14 ==============================================================================
mbed_official 354:e67efb2aab0e 15 [..]
mbed_official 354:e67efb2aab0e 16 This driver is a generic layered driver which contains a set of APIs used to
mbed_official 354:e67efb2aab0e 17 control SRAM memories. It uses the FSMC layer functions to interface
mbed_official 354:e67efb2aab0e 18 with SRAM devices.
mbed_official 354:e67efb2aab0e 19 The following sequence should be followed to configure the FSMC to interface
mbed_official 354:e67efb2aab0e 20 with SRAM/PSRAM memories:
mbed_official 354:e67efb2aab0e 21
mbed_official 354:e67efb2aab0e 22 (#) Declare a SRAM_HandleTypeDef handle structure, for example:
mbed_official 354:e67efb2aab0e 23 SRAM_HandleTypeDef hsram; and:
mbed_official 354:e67efb2aab0e 24
mbed_official 354:e67efb2aab0e 25 (++) Fill the SRAM_HandleTypeDef handle "Init" field with the allowed
mbed_official 354:e67efb2aab0e 26 values of the structure member.
mbed_official 354:e67efb2aab0e 27
mbed_official 354:e67efb2aab0e 28 (++) Fill the SRAM_HandleTypeDef handle "Instance" field with a predefined
mbed_official 354:e67efb2aab0e 29 base register instance for NOR or SRAM device
mbed_official 354:e67efb2aab0e 30
mbed_official 354:e67efb2aab0e 31 (++) Fill the SRAM_HandleTypeDef handle "Extended" field with a predefined
mbed_official 354:e67efb2aab0e 32 base register instance for NOR or SRAM extended mode
mbed_official 354:e67efb2aab0e 33
mbed_official 354:e67efb2aab0e 34 (#) Declare two FSMC_NORSRAM_TimingTypeDef structures, for both normal and extended
mbed_official 354:e67efb2aab0e 35 mode timings; for example:
mbed_official 354:e67efb2aab0e 36 FSMC_NORSRAM_TimingTypeDef Timing and FSMC_NORSRAM_TimingTypeDef ExTiming;
mbed_official 354:e67efb2aab0e 37 and fill its fields with the allowed values of the structure member.
mbed_official 354:e67efb2aab0e 38
mbed_official 354:e67efb2aab0e 39 (#) Initialize the SRAM Controller by calling the function HAL_SRAM_Init(). This function
mbed_official 354:e67efb2aab0e 40 performs the following sequence:
mbed_official 354:e67efb2aab0e 41
mbed_official 354:e67efb2aab0e 42 (##) MSP hardware layer configuration using the function HAL_SRAM_MspInit()
mbed_official 354:e67efb2aab0e 43 (##) Control register configuration using the FSMC NORSRAM interface function
mbed_official 354:e67efb2aab0e 44 FSMC_NORSRAM_Init()
mbed_official 354:e67efb2aab0e 45 (##) Timing register configuration using the FSMC NORSRAM interface function
mbed_official 354:e67efb2aab0e 46 FSMC_NORSRAM_Timing_Init()
mbed_official 354:e67efb2aab0e 47 (##) Extended mode Timing register configuration using the FSMC NORSRAM interface function
mbed_official 354:e67efb2aab0e 48 FSMC_NORSRAM_Extended_Timing_Init()
mbed_official 354:e67efb2aab0e 49 (##) Enable the SRAM device using the macro __FSMC_NORSRAM_ENABLE()
mbed_official 354:e67efb2aab0e 50
mbed_official 354:e67efb2aab0e 51 (#) At this stage you can perform read/write accesses from/to the memory connected
mbed_official 354:e67efb2aab0e 52 to the NOR/SRAM Bank. You can perform either polling or DMA transfer using the
mbed_official 354:e67efb2aab0e 53 following APIs:
mbed_official 354:e67efb2aab0e 54 (++) HAL_SRAM_Read()/HAL_SRAM_Write() for polling read/write access
mbed_official 354:e67efb2aab0e 55 (++) HAL_SRAM_Read_DMA()/HAL_SRAM_Write_DMA() for DMA read/write transfer
mbed_official 354:e67efb2aab0e 56
mbed_official 354:e67efb2aab0e 57 (#) You can also control the SRAM device by calling the control APIs HAL_SRAM_WriteOperation_Enable()/
mbed_official 354:e67efb2aab0e 58 HAL_SRAM_WriteOperation_Disable() to respectively enable/disable the SRAM write operation
mbed_official 354:e67efb2aab0e 59
mbed_official 354:e67efb2aab0e 60 (#) You can continuously monitor the SRAM device HAL state by calling the function
mbed_official 354:e67efb2aab0e 61 HAL_SRAM_GetState()
mbed_official 354:e67efb2aab0e 62
mbed_official 354:e67efb2aab0e 63 @endverbatim
mbed_official 354:e67efb2aab0e 64 ******************************************************************************
mbed_official 354:e67efb2aab0e 65 * @attention
mbed_official 354:e67efb2aab0e 66 *
mbed_official 354:e67efb2aab0e 67 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 354:e67efb2aab0e 68 *
mbed_official 354:e67efb2aab0e 69 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 354:e67efb2aab0e 70 * are permitted provided that the following conditions are met:
mbed_official 354:e67efb2aab0e 71 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 354:e67efb2aab0e 72 * this list of conditions and the following disclaimer.
mbed_official 354:e67efb2aab0e 73 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 354:e67efb2aab0e 74 * this list of conditions and the following disclaimer in the documentation
mbed_official 354:e67efb2aab0e 75 * and/or other materials provided with the distribution.
mbed_official 354:e67efb2aab0e 76 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 354:e67efb2aab0e 77 * may be used to endorse or promote products derived from this software
mbed_official 354:e67efb2aab0e 78 * without specific prior written permission.
mbed_official 354:e67efb2aab0e 79 *
mbed_official 354:e67efb2aab0e 80 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 354:e67efb2aab0e 81 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 354:e67efb2aab0e 82 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 354:e67efb2aab0e 83 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 354:e67efb2aab0e 84 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 354:e67efb2aab0e 85 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 354:e67efb2aab0e 86 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 354:e67efb2aab0e 87 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 354:e67efb2aab0e 88 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 354:e67efb2aab0e 89 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 354:e67efb2aab0e 90 *
mbed_official 354:e67efb2aab0e 91 ******************************************************************************
mbed_official 354:e67efb2aab0e 92 */
mbed_official 354:e67efb2aab0e 93
mbed_official 354:e67efb2aab0e 94 /* Includes ------------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 95 #include "stm32l1xx_hal.h"
mbed_official 354:e67efb2aab0e 96
mbed_official 354:e67efb2aab0e 97 /** @addtogroup STM32L1xx_HAL_Driver
mbed_official 354:e67efb2aab0e 98 * @{
mbed_official 354:e67efb2aab0e 99 */
mbed_official 354:e67efb2aab0e 100
mbed_official 354:e67efb2aab0e 101 /** @defgroup SRAM SRAM
mbed_official 354:e67efb2aab0e 102 * @brief SRAM driver modules
mbed_official 354:e67efb2aab0e 103 * @{
mbed_official 354:e67efb2aab0e 104 */
mbed_official 354:e67efb2aab0e 105 #ifdef HAL_SRAM_MODULE_ENABLED
mbed_official 354:e67efb2aab0e 106
mbed_official 354:e67efb2aab0e 107 #if defined (STM32L151xD) || defined (STM32L152xD) || defined (STM32L162xD)
mbed_official 354:e67efb2aab0e 108
mbed_official 354:e67efb2aab0e 109 /* Private typedef -----------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 110 /* Private define ------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 111 /* Private macro -------------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 112 /* Private variables ---------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 113 /* Private function prototypes -----------------------------------------------*/
mbed_official 354:e67efb2aab0e 114
mbed_official 354:e67efb2aab0e 115 /* Private functions ---------------------------------------------------------*/
mbed_official 354:e67efb2aab0e 116
mbed_official 354:e67efb2aab0e 117 /** @defgroup SRAM_Exported_Functions SRAM Exported Functions
mbed_official 354:e67efb2aab0e 118 * @{
mbed_official 354:e67efb2aab0e 119 */
mbed_official 354:e67efb2aab0e 120
mbed_official 354:e67efb2aab0e 121 /** @defgroup SRAM_Exported_Functions_Group1 Initialization and de-initialization functions
mbed_official 354:e67efb2aab0e 122 * @brief Initialization and Configuration functions
mbed_official 354:e67efb2aab0e 123 *
mbed_official 354:e67efb2aab0e 124 @verbatim
mbed_official 354:e67efb2aab0e 125 ==============================================================================
mbed_official 354:e67efb2aab0e 126 ##### SRAM Initialization and de_initialization functions #####
mbed_official 354:e67efb2aab0e 127 ==============================================================================
mbed_official 354:e67efb2aab0e 128 [..] This section provides functions allowing to initialize/de-initialize
mbed_official 354:e67efb2aab0e 129 the SRAM memory
mbed_official 354:e67efb2aab0e 130
mbed_official 354:e67efb2aab0e 131 @endverbatim
mbed_official 354:e67efb2aab0e 132 * @{
mbed_official 354:e67efb2aab0e 133 */
mbed_official 354:e67efb2aab0e 134
mbed_official 354:e67efb2aab0e 135 /**
mbed_official 354:e67efb2aab0e 136 * @brief Performs the SRAM device initialization sequence
mbed_official 354:e67efb2aab0e 137 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 138 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 139 * @param Timing: Pointer to SRAM control timing structure
mbed_official 354:e67efb2aab0e 140 * @param ExtTiming: Pointer to SRAM extended mode timing structure
mbed_official 354:e67efb2aab0e 141 * @retval HAL status
mbed_official 354:e67efb2aab0e 142 */
mbed_official 354:e67efb2aab0e 143 HAL_StatusTypeDef HAL_SRAM_Init(SRAM_HandleTypeDef *hsram, FSMC_NORSRAM_TimingTypeDef *Timing, FSMC_NORSRAM_TimingTypeDef *ExtTiming)
mbed_official 354:e67efb2aab0e 144 {
mbed_official 354:e67efb2aab0e 145 /* Check the SRAM handle parameter */
mbed_official 354:e67efb2aab0e 146 if(hsram == HAL_NULL)
mbed_official 354:e67efb2aab0e 147 {
mbed_official 354:e67efb2aab0e 148 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 149 }
mbed_official 354:e67efb2aab0e 150
mbed_official 354:e67efb2aab0e 151 if(hsram->State == HAL_SRAM_STATE_RESET)
mbed_official 354:e67efb2aab0e 152 {
mbed_official 354:e67efb2aab0e 153 /* Initialize the low level hardware (MSP) */
mbed_official 354:e67efb2aab0e 154 HAL_SRAM_MspInit(hsram);
mbed_official 354:e67efb2aab0e 155 }
mbed_official 354:e67efb2aab0e 156
mbed_official 354:e67efb2aab0e 157 /* Initialize SRAM control Interface */
mbed_official 354:e67efb2aab0e 158 FSMC_NORSRAM_Init(hsram->Instance, &(hsram->Init));
mbed_official 354:e67efb2aab0e 159
mbed_official 354:e67efb2aab0e 160 /* Initialize SRAM timing Interface */
mbed_official 354:e67efb2aab0e 161 FSMC_NORSRAM_Timing_Init(hsram->Instance, Timing, hsram->Init.NSBank);
mbed_official 354:e67efb2aab0e 162
mbed_official 354:e67efb2aab0e 163 /* Initialize SRAM extended mode timing Interface */
mbed_official 354:e67efb2aab0e 164 FSMC_NORSRAM_Extended_Timing_Init(hsram->Extended, ExtTiming, hsram->Init.NSBank, hsram->Init.ExtendedMode);
mbed_official 354:e67efb2aab0e 165
mbed_official 354:e67efb2aab0e 166 /* Enable the NORSRAM device */
mbed_official 354:e67efb2aab0e 167 __FSMC_NORSRAM_ENABLE(hsram->Instance, hsram->Init.NSBank);
mbed_official 354:e67efb2aab0e 168
mbed_official 354:e67efb2aab0e 169 return HAL_OK;
mbed_official 354:e67efb2aab0e 170 }
mbed_official 354:e67efb2aab0e 171
mbed_official 354:e67efb2aab0e 172 /**
mbed_official 354:e67efb2aab0e 173 * @brief Performs the SRAM device De-initialization sequence.
mbed_official 354:e67efb2aab0e 174 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 175 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 176 * @retval HAL status
mbed_official 354:e67efb2aab0e 177 */
mbed_official 354:e67efb2aab0e 178 HAL_StatusTypeDef HAL_SRAM_DeInit(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 179 {
mbed_official 354:e67efb2aab0e 180 /* De-Initialize the low level hardware (MSP) */
mbed_official 354:e67efb2aab0e 181 HAL_SRAM_MspDeInit(hsram);
mbed_official 354:e67efb2aab0e 182
mbed_official 354:e67efb2aab0e 183 /* Configure the SRAM registers with their reset values */
mbed_official 354:e67efb2aab0e 184 FSMC_NORSRAM_DeInit(hsram->Instance, hsram->Extended, hsram->Init.NSBank);
mbed_official 354:e67efb2aab0e 185
mbed_official 354:e67efb2aab0e 186 hsram->State = HAL_SRAM_STATE_RESET;
mbed_official 354:e67efb2aab0e 187
mbed_official 354:e67efb2aab0e 188 /* Release Lock */
mbed_official 354:e67efb2aab0e 189 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 190
mbed_official 354:e67efb2aab0e 191 return HAL_OK;
mbed_official 354:e67efb2aab0e 192 }
mbed_official 354:e67efb2aab0e 193
mbed_official 354:e67efb2aab0e 194 /**
mbed_official 354:e67efb2aab0e 195 * @brief SRAM MSP Init.
mbed_official 354:e67efb2aab0e 196 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 197 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 198 * @retval None
mbed_official 354:e67efb2aab0e 199 */
mbed_official 354:e67efb2aab0e 200 __weak void HAL_SRAM_MspInit(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 201 {
mbed_official 354:e67efb2aab0e 202 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 354:e67efb2aab0e 203 the HAL_SRAM_MspInit could be implemented in the user file
mbed_official 354:e67efb2aab0e 204 */
mbed_official 354:e67efb2aab0e 205 }
mbed_official 354:e67efb2aab0e 206
mbed_official 354:e67efb2aab0e 207 /**
mbed_official 354:e67efb2aab0e 208 * @brief SRAM MSP DeInit.
mbed_official 354:e67efb2aab0e 209 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 210 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 211 * @retval None
mbed_official 354:e67efb2aab0e 212 */
mbed_official 354:e67efb2aab0e 213 __weak void HAL_SRAM_MspDeInit(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 214 {
mbed_official 354:e67efb2aab0e 215 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 354:e67efb2aab0e 216 the HAL_SRAM_MspDeInit could be implemented in the user file
mbed_official 354:e67efb2aab0e 217 */
mbed_official 354:e67efb2aab0e 218 }
mbed_official 354:e67efb2aab0e 219
mbed_official 354:e67efb2aab0e 220 /**
mbed_official 354:e67efb2aab0e 221 * @brief DMA transfer complete callback.
mbed_official 354:e67efb2aab0e 222 * @param hdma: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 223 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 224 * @retval None
mbed_official 354:e67efb2aab0e 225 */
mbed_official 354:e67efb2aab0e 226 __weak void HAL_SRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma)
mbed_official 354:e67efb2aab0e 227 {
mbed_official 354:e67efb2aab0e 228 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 354:e67efb2aab0e 229 the HAL_SRAM_DMA_XferCpltCallback could be implemented in the user file
mbed_official 354:e67efb2aab0e 230 */
mbed_official 354:e67efb2aab0e 231 }
mbed_official 354:e67efb2aab0e 232
mbed_official 354:e67efb2aab0e 233 /**
mbed_official 354:e67efb2aab0e 234 * @brief DMA transfer complete error callback.
mbed_official 354:e67efb2aab0e 235 * @param hdma: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 236 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 237 * @retval None
mbed_official 354:e67efb2aab0e 238 */
mbed_official 354:e67efb2aab0e 239 __weak void HAL_SRAM_DMA_XferErrorCallback(DMA_HandleTypeDef *hdma)
mbed_official 354:e67efb2aab0e 240 {
mbed_official 354:e67efb2aab0e 241 /* NOTE : This function Should not be modified, when the callback is needed,
mbed_official 354:e67efb2aab0e 242 the HAL_SRAM_DMA_XferErrorCallback could be implemented in the user file
mbed_official 354:e67efb2aab0e 243 */
mbed_official 354:e67efb2aab0e 244 }
mbed_official 354:e67efb2aab0e 245
mbed_official 354:e67efb2aab0e 246 /**
mbed_official 354:e67efb2aab0e 247 * @}
mbed_official 354:e67efb2aab0e 248 */
mbed_official 354:e67efb2aab0e 249
mbed_official 354:e67efb2aab0e 250 /** @defgroup SRAM_Exported_Functions_Group2 Input and Output functions
mbed_official 354:e67efb2aab0e 251 * @brief Input Output and memory control functions
mbed_official 354:e67efb2aab0e 252 *
mbed_official 354:e67efb2aab0e 253 @verbatim
mbed_official 354:e67efb2aab0e 254 ==============================================================================
mbed_official 354:e67efb2aab0e 255 ##### SRAM Input and Output functions #####
mbed_official 354:e67efb2aab0e 256 ==============================================================================
mbed_official 354:e67efb2aab0e 257 [..]
mbed_official 354:e67efb2aab0e 258 This section provides functions allowing to use and control the SRAM memory
mbed_official 354:e67efb2aab0e 259
mbed_official 354:e67efb2aab0e 260 @endverbatim
mbed_official 354:e67efb2aab0e 261 * @{
mbed_official 354:e67efb2aab0e 262 */
mbed_official 354:e67efb2aab0e 263
mbed_official 354:e67efb2aab0e 264 /**
mbed_official 354:e67efb2aab0e 265 * @brief Reads 8-bit buffer from SRAM memory.
mbed_official 354:e67efb2aab0e 266 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 267 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 268 * @param pAddress: Pointer to read start address
mbed_official 354:e67efb2aab0e 269 * @param pDstBuffer: Pointer to destination buffer
mbed_official 354:e67efb2aab0e 270 * @param BufferSize: Size of the buffer to read from memory
mbed_official 354:e67efb2aab0e 271 * @retval HAL status
mbed_official 354:e67efb2aab0e 272 */
mbed_official 354:e67efb2aab0e 273 HAL_StatusTypeDef HAL_SRAM_Read_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pDstBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 274 {
mbed_official 354:e67efb2aab0e 275 __IO uint8_t * psramaddress = (uint8_t *)pAddress;
mbed_official 354:e67efb2aab0e 276
mbed_official 354:e67efb2aab0e 277 /* Process Locked */
mbed_official 354:e67efb2aab0e 278 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 279
mbed_official 354:e67efb2aab0e 280 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 281 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 282
mbed_official 354:e67efb2aab0e 283 /* Read data from memory */
mbed_official 354:e67efb2aab0e 284 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 285 {
mbed_official 354:e67efb2aab0e 286 *pDstBuffer = *(__IO uint8_t *)psramaddress;
mbed_official 354:e67efb2aab0e 287 pDstBuffer++;
mbed_official 354:e67efb2aab0e 288 psramaddress++;
mbed_official 354:e67efb2aab0e 289 }
mbed_official 354:e67efb2aab0e 290
mbed_official 354:e67efb2aab0e 291 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 292 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 293
mbed_official 354:e67efb2aab0e 294 /* Process unlocked */
mbed_official 354:e67efb2aab0e 295 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 296
mbed_official 354:e67efb2aab0e 297 return HAL_OK;
mbed_official 354:e67efb2aab0e 298 }
mbed_official 354:e67efb2aab0e 299
mbed_official 354:e67efb2aab0e 300 /**
mbed_official 354:e67efb2aab0e 301 * @brief Writes 8-bit buffer to SRAM memory.
mbed_official 354:e67efb2aab0e 302 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 303 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 304 * @param pAddress: Pointer to write start address
mbed_official 354:e67efb2aab0e 305 * @param pSrcBuffer: Pointer to source buffer to write
mbed_official 354:e67efb2aab0e 306 * @param BufferSize: Size of the buffer to write to memory
mbed_official 354:e67efb2aab0e 307 * @retval HAL status
mbed_official 354:e67efb2aab0e 308 */
mbed_official 354:e67efb2aab0e 309 HAL_StatusTypeDef HAL_SRAM_Write_8b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint8_t *pSrcBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 310 {
mbed_official 354:e67efb2aab0e 311 __IO uint8_t * psramaddress = (uint8_t *)pAddress;
mbed_official 354:e67efb2aab0e 312
mbed_official 354:e67efb2aab0e 313 /* Check the SRAM controller state */
mbed_official 354:e67efb2aab0e 314 if(hsram->State == HAL_SRAM_STATE_PROTECTED)
mbed_official 354:e67efb2aab0e 315 {
mbed_official 354:e67efb2aab0e 316 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 317 }
mbed_official 354:e67efb2aab0e 318
mbed_official 354:e67efb2aab0e 319 /* Process Locked */
mbed_official 354:e67efb2aab0e 320 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 321
mbed_official 354:e67efb2aab0e 322 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 323 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 324
mbed_official 354:e67efb2aab0e 325 /* Write data to memory */
mbed_official 354:e67efb2aab0e 326 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 327 {
mbed_official 354:e67efb2aab0e 328 *(__IO uint8_t *)psramaddress = *pSrcBuffer;
mbed_official 354:e67efb2aab0e 329 pSrcBuffer++;
mbed_official 354:e67efb2aab0e 330 psramaddress++;
mbed_official 354:e67efb2aab0e 331 }
mbed_official 354:e67efb2aab0e 332
mbed_official 354:e67efb2aab0e 333 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 334 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 335
mbed_official 354:e67efb2aab0e 336 /* Process unlocked */
mbed_official 354:e67efb2aab0e 337 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 338
mbed_official 354:e67efb2aab0e 339 return HAL_OK;
mbed_official 354:e67efb2aab0e 340 }
mbed_official 354:e67efb2aab0e 341
mbed_official 354:e67efb2aab0e 342 /**
mbed_official 354:e67efb2aab0e 343 * @brief Reads 16-bit buffer from SRAM memory.
mbed_official 354:e67efb2aab0e 344 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 345 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 346 * @param pAddress: Pointer to read start address
mbed_official 354:e67efb2aab0e 347 * @param pDstBuffer: Pointer to destination buffer
mbed_official 354:e67efb2aab0e 348 * @param BufferSize: Size of the buffer to read from memory
mbed_official 354:e67efb2aab0e 349 * @retval HAL status
mbed_official 354:e67efb2aab0e 350 */
mbed_official 354:e67efb2aab0e 351 HAL_StatusTypeDef HAL_SRAM_Read_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pDstBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 352 {
mbed_official 354:e67efb2aab0e 353 __IO uint16_t * psramaddress = (uint16_t *)pAddress;
mbed_official 354:e67efb2aab0e 354
mbed_official 354:e67efb2aab0e 355 /* Process Locked */
mbed_official 354:e67efb2aab0e 356 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 357
mbed_official 354:e67efb2aab0e 358 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 359 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 360
mbed_official 354:e67efb2aab0e 361 /* Read data from memory */
mbed_official 354:e67efb2aab0e 362 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 363 {
mbed_official 354:e67efb2aab0e 364 *pDstBuffer = *(__IO uint16_t *)psramaddress;
mbed_official 354:e67efb2aab0e 365 pDstBuffer++;
mbed_official 354:e67efb2aab0e 366 psramaddress++;
mbed_official 354:e67efb2aab0e 367 }
mbed_official 354:e67efb2aab0e 368
mbed_official 354:e67efb2aab0e 369 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 370 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 371
mbed_official 354:e67efb2aab0e 372 /* Process unlocked */
mbed_official 354:e67efb2aab0e 373 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 374
mbed_official 354:e67efb2aab0e 375 return HAL_OK;
mbed_official 354:e67efb2aab0e 376 }
mbed_official 354:e67efb2aab0e 377
mbed_official 354:e67efb2aab0e 378 /**
mbed_official 354:e67efb2aab0e 379 * @brief Writes 16-bit buffer to SRAM memory.
mbed_official 354:e67efb2aab0e 380 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 381 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 382 * @param pAddress: Pointer to write start address
mbed_official 354:e67efb2aab0e 383 * @param pSrcBuffer: Pointer to source buffer to write
mbed_official 354:e67efb2aab0e 384 * @param BufferSize: Size of the buffer to write to memory
mbed_official 354:e67efb2aab0e 385 * @retval HAL status
mbed_official 354:e67efb2aab0e 386 */
mbed_official 354:e67efb2aab0e 387 HAL_StatusTypeDef HAL_SRAM_Write_16b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint16_t *pSrcBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 388 {
mbed_official 354:e67efb2aab0e 389 __IO uint16_t * psramaddress = (uint16_t *)pAddress;
mbed_official 354:e67efb2aab0e 390
mbed_official 354:e67efb2aab0e 391 /* Check the SRAM controller state */
mbed_official 354:e67efb2aab0e 392 if(hsram->State == HAL_SRAM_STATE_PROTECTED)
mbed_official 354:e67efb2aab0e 393 {
mbed_official 354:e67efb2aab0e 394 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 395 }
mbed_official 354:e67efb2aab0e 396
mbed_official 354:e67efb2aab0e 397 /* Process Locked */
mbed_official 354:e67efb2aab0e 398 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 399
mbed_official 354:e67efb2aab0e 400 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 401 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 402
mbed_official 354:e67efb2aab0e 403 /* Write data to memory */
mbed_official 354:e67efb2aab0e 404 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 405 {
mbed_official 354:e67efb2aab0e 406 *(__IO uint16_t *)psramaddress = *pSrcBuffer;
mbed_official 354:e67efb2aab0e 407 pSrcBuffer++;
mbed_official 354:e67efb2aab0e 408 psramaddress++;
mbed_official 354:e67efb2aab0e 409 }
mbed_official 354:e67efb2aab0e 410
mbed_official 354:e67efb2aab0e 411 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 412 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 413
mbed_official 354:e67efb2aab0e 414 /* Process unlocked */
mbed_official 354:e67efb2aab0e 415 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 416
mbed_official 354:e67efb2aab0e 417 return HAL_OK;
mbed_official 354:e67efb2aab0e 418 }
mbed_official 354:e67efb2aab0e 419
mbed_official 354:e67efb2aab0e 420 /**
mbed_official 354:e67efb2aab0e 421 * @brief Reads 32-bit buffer from SRAM memory.
mbed_official 354:e67efb2aab0e 422 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 423 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 424 * @param pAddress: Pointer to read start address
mbed_official 354:e67efb2aab0e 425 * @param pDstBuffer: Pointer to destination buffer
mbed_official 354:e67efb2aab0e 426 * @param BufferSize: Size of the buffer to read from memory
mbed_official 354:e67efb2aab0e 427 * @retval HAL status
mbed_official 354:e67efb2aab0e 428 */
mbed_official 354:e67efb2aab0e 429 HAL_StatusTypeDef HAL_SRAM_Read_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 430 {
mbed_official 354:e67efb2aab0e 431 /* Process Locked */
mbed_official 354:e67efb2aab0e 432 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 433
mbed_official 354:e67efb2aab0e 434 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 435 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 436
mbed_official 354:e67efb2aab0e 437 /* Read data from memory */
mbed_official 354:e67efb2aab0e 438 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 439 {
mbed_official 354:e67efb2aab0e 440 *pDstBuffer = *(__IO uint32_t *)pAddress;
mbed_official 354:e67efb2aab0e 441 pDstBuffer++;
mbed_official 354:e67efb2aab0e 442 pAddress++;
mbed_official 354:e67efb2aab0e 443 }
mbed_official 354:e67efb2aab0e 444
mbed_official 354:e67efb2aab0e 445 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 446 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 447
mbed_official 354:e67efb2aab0e 448 /* Process unlocked */
mbed_official 354:e67efb2aab0e 449 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 450
mbed_official 354:e67efb2aab0e 451 return HAL_OK;
mbed_official 354:e67efb2aab0e 452 }
mbed_official 354:e67efb2aab0e 453
mbed_official 354:e67efb2aab0e 454 /**
mbed_official 354:e67efb2aab0e 455 * @brief Writes 32-bit buffer to SRAM memory.
mbed_official 354:e67efb2aab0e 456 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 457 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 458 * @param pAddress: Pointer to write start address
mbed_official 354:e67efb2aab0e 459 * @param pSrcBuffer: Pointer to source buffer to write
mbed_official 354:e67efb2aab0e 460 * @param BufferSize: Size of the buffer to write to memory
mbed_official 354:e67efb2aab0e 461 * @retval HAL status
mbed_official 354:e67efb2aab0e 462 */
mbed_official 354:e67efb2aab0e 463 HAL_StatusTypeDef HAL_SRAM_Write_32b(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 464 {
mbed_official 354:e67efb2aab0e 465 /* Check the SRAM controller state */
mbed_official 354:e67efb2aab0e 466 if(hsram->State == HAL_SRAM_STATE_PROTECTED)
mbed_official 354:e67efb2aab0e 467 {
mbed_official 354:e67efb2aab0e 468 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 469 }
mbed_official 354:e67efb2aab0e 470
mbed_official 354:e67efb2aab0e 471 /* Process Locked */
mbed_official 354:e67efb2aab0e 472 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 473
mbed_official 354:e67efb2aab0e 474 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 475 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 476
mbed_official 354:e67efb2aab0e 477 /* Write data to memory */
mbed_official 354:e67efb2aab0e 478 for(; BufferSize != 0; BufferSize--)
mbed_official 354:e67efb2aab0e 479 {
mbed_official 354:e67efb2aab0e 480 *(__IO uint32_t *)pAddress = *pSrcBuffer;
mbed_official 354:e67efb2aab0e 481 pSrcBuffer++;
mbed_official 354:e67efb2aab0e 482 pAddress++;
mbed_official 354:e67efb2aab0e 483 }
mbed_official 354:e67efb2aab0e 484
mbed_official 354:e67efb2aab0e 485 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 486 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 487
mbed_official 354:e67efb2aab0e 488 /* Process unlocked */
mbed_official 354:e67efb2aab0e 489 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 490
mbed_official 354:e67efb2aab0e 491 return HAL_OK;
mbed_official 354:e67efb2aab0e 492 }
mbed_official 354:e67efb2aab0e 493
mbed_official 354:e67efb2aab0e 494 /**
mbed_official 354:e67efb2aab0e 495 * @brief Reads a Words data from the SRAM memory using DMA transfer.
mbed_official 354:e67efb2aab0e 496 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 497 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 498 * @param pAddress: Pointer to read start address
mbed_official 354:e67efb2aab0e 499 * @param pDstBuffer: Pointer to destination buffer
mbed_official 354:e67efb2aab0e 500 * @param BufferSize: Size of the buffer to read from memory
mbed_official 354:e67efb2aab0e 501 * @retval HAL status
mbed_official 354:e67efb2aab0e 502 */
mbed_official 354:e67efb2aab0e 503 HAL_StatusTypeDef HAL_SRAM_Read_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pDstBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 504 {
mbed_official 354:e67efb2aab0e 505 /* Process Locked */
mbed_official 354:e67efb2aab0e 506 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 507
mbed_official 354:e67efb2aab0e 508 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 509 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 510
mbed_official 354:e67efb2aab0e 511 /* Configure DMA user callbacks */
mbed_official 354:e67efb2aab0e 512 hsram->hdma->XferCpltCallback = HAL_SRAM_DMA_XferCpltCallback;
mbed_official 354:e67efb2aab0e 513 hsram->hdma->XferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
mbed_official 354:e67efb2aab0e 514
mbed_official 354:e67efb2aab0e 515 /* Enable the DMA Stream */
mbed_official 354:e67efb2aab0e 516 HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pAddress, (uint32_t)pDstBuffer, (uint32_t)BufferSize);
mbed_official 354:e67efb2aab0e 517
mbed_official 354:e67efb2aab0e 518 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 519 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 520
mbed_official 354:e67efb2aab0e 521 /* Process unlocked */
mbed_official 354:e67efb2aab0e 522 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 523
mbed_official 354:e67efb2aab0e 524 return HAL_OK;
mbed_official 354:e67efb2aab0e 525 }
mbed_official 354:e67efb2aab0e 526
mbed_official 354:e67efb2aab0e 527 /**
mbed_official 354:e67efb2aab0e 528 * @brief Writes a Words data buffer to SRAM memory using DMA transfer.
mbed_official 354:e67efb2aab0e 529 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 530 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 531 * @param pAddress: Pointer to write start address
mbed_official 354:e67efb2aab0e 532 * @param pSrcBuffer: Pointer to source buffer to write
mbed_official 354:e67efb2aab0e 533 * @param BufferSize: Size of the buffer to write to memory
mbed_official 354:e67efb2aab0e 534 * @retval HAL status
mbed_official 354:e67efb2aab0e 535 */
mbed_official 354:e67efb2aab0e 536 HAL_StatusTypeDef HAL_SRAM_Write_DMA(SRAM_HandleTypeDef *hsram, uint32_t *pAddress, uint32_t *pSrcBuffer, uint32_t BufferSize)
mbed_official 354:e67efb2aab0e 537 {
mbed_official 354:e67efb2aab0e 538 /* Check the SRAM controller state */
mbed_official 354:e67efb2aab0e 539 if(hsram->State == HAL_SRAM_STATE_PROTECTED)
mbed_official 354:e67efb2aab0e 540 {
mbed_official 354:e67efb2aab0e 541 return HAL_ERROR;
mbed_official 354:e67efb2aab0e 542 }
mbed_official 354:e67efb2aab0e 543
mbed_official 354:e67efb2aab0e 544 /* Process Locked */
mbed_official 354:e67efb2aab0e 545 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 546
mbed_official 354:e67efb2aab0e 547 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 548 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 549
mbed_official 354:e67efb2aab0e 550 /* Configure DMA user callbacks */
mbed_official 354:e67efb2aab0e 551 hsram->hdma->XferCpltCallback = HAL_SRAM_DMA_XferCpltCallback;
mbed_official 354:e67efb2aab0e 552 hsram->hdma->XferErrorCallback = HAL_SRAM_DMA_XferErrorCallback;
mbed_official 354:e67efb2aab0e 553
mbed_official 354:e67efb2aab0e 554 /* Enable the DMA Stream */
mbed_official 354:e67efb2aab0e 555 HAL_DMA_Start_IT(hsram->hdma, (uint32_t)pSrcBuffer, (uint32_t)pAddress, (uint32_t)BufferSize);
mbed_official 354:e67efb2aab0e 556
mbed_official 354:e67efb2aab0e 557 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 558 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 559
mbed_official 354:e67efb2aab0e 560 /* Process unlocked */
mbed_official 354:e67efb2aab0e 561 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 562
mbed_official 354:e67efb2aab0e 563 return HAL_OK;
mbed_official 354:e67efb2aab0e 564 }
mbed_official 354:e67efb2aab0e 565
mbed_official 354:e67efb2aab0e 566 /**
mbed_official 354:e67efb2aab0e 567 * @}
mbed_official 354:e67efb2aab0e 568 */
mbed_official 354:e67efb2aab0e 569
mbed_official 354:e67efb2aab0e 570 /** @defgroup SRAM_Exported_Functions_Group3 Control functions
mbed_official 354:e67efb2aab0e 571 * @brief management functions
mbed_official 354:e67efb2aab0e 572 *
mbed_official 354:e67efb2aab0e 573 @verbatim
mbed_official 354:e67efb2aab0e 574 ==============================================================================
mbed_official 354:e67efb2aab0e 575 ##### SRAM Control functions #####
mbed_official 354:e67efb2aab0e 576 ==============================================================================
mbed_official 354:e67efb2aab0e 577 [..]
mbed_official 354:e67efb2aab0e 578 This subsection provides a set of functions allowing to control dynamically
mbed_official 354:e67efb2aab0e 579 the SRAM interface.
mbed_official 354:e67efb2aab0e 580
mbed_official 354:e67efb2aab0e 581 @endverbatim
mbed_official 354:e67efb2aab0e 582 * @{
mbed_official 354:e67efb2aab0e 583 */
mbed_official 354:e67efb2aab0e 584
mbed_official 354:e67efb2aab0e 585 /**
mbed_official 354:e67efb2aab0e 586 * @brief Enables dynamically SRAM write operation.
mbed_official 354:e67efb2aab0e 587 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 588 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 589 * @retval HAL status
mbed_official 354:e67efb2aab0e 590 */
mbed_official 354:e67efb2aab0e 591 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Enable(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 592 {
mbed_official 354:e67efb2aab0e 593 /* Process Locked */
mbed_official 354:e67efb2aab0e 594 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 595
mbed_official 354:e67efb2aab0e 596 /* Enable write operation */
mbed_official 354:e67efb2aab0e 597 FSMC_NORSRAM_WriteOperation_Enable(hsram->Instance, hsram->Init.NSBank);
mbed_official 354:e67efb2aab0e 598
mbed_official 354:e67efb2aab0e 599 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 600 hsram->State = HAL_SRAM_STATE_READY;
mbed_official 354:e67efb2aab0e 601
mbed_official 354:e67efb2aab0e 602 /* Process unlocked */
mbed_official 354:e67efb2aab0e 603 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 604
mbed_official 354:e67efb2aab0e 605 return HAL_OK;
mbed_official 354:e67efb2aab0e 606 }
mbed_official 354:e67efb2aab0e 607
mbed_official 354:e67efb2aab0e 608 /**
mbed_official 354:e67efb2aab0e 609 * @brief Disables dynamically SRAM write operation.
mbed_official 354:e67efb2aab0e 610 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 611 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 612 * @retval HAL status
mbed_official 354:e67efb2aab0e 613 */
mbed_official 354:e67efb2aab0e 614 HAL_StatusTypeDef HAL_SRAM_WriteOperation_Disable(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 615 {
mbed_official 354:e67efb2aab0e 616 /* Process Locked */
mbed_official 354:e67efb2aab0e 617 __HAL_LOCK(hsram);
mbed_official 354:e67efb2aab0e 618
mbed_official 354:e67efb2aab0e 619 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 620 hsram->State = HAL_SRAM_STATE_BUSY;
mbed_official 354:e67efb2aab0e 621
mbed_official 354:e67efb2aab0e 622 /* Disable write operation */
mbed_official 354:e67efb2aab0e 623 FSMC_NORSRAM_WriteOperation_Disable(hsram->Instance, hsram->Init.NSBank);
mbed_official 354:e67efb2aab0e 624
mbed_official 354:e67efb2aab0e 625 /* Update the SRAM controller state */
mbed_official 354:e67efb2aab0e 626 hsram->State = HAL_SRAM_STATE_PROTECTED;
mbed_official 354:e67efb2aab0e 627
mbed_official 354:e67efb2aab0e 628 /* Process unlocked */
mbed_official 354:e67efb2aab0e 629 __HAL_UNLOCK(hsram);
mbed_official 354:e67efb2aab0e 630
mbed_official 354:e67efb2aab0e 631 return HAL_OK;
mbed_official 354:e67efb2aab0e 632 }
mbed_official 354:e67efb2aab0e 633
mbed_official 354:e67efb2aab0e 634 /**
mbed_official 354:e67efb2aab0e 635 * @}
mbed_official 354:e67efb2aab0e 636 */
mbed_official 354:e67efb2aab0e 637
mbed_official 354:e67efb2aab0e 638 /** @defgroup SRAM_Exported_Functions_Group4 State functions
mbed_official 354:e67efb2aab0e 639 * @brief Peripheral State functions
mbed_official 354:e67efb2aab0e 640 *
mbed_official 354:e67efb2aab0e 641 @verbatim
mbed_official 354:e67efb2aab0e 642 ==============================================================================
mbed_official 354:e67efb2aab0e 643 ##### SRAM State functions #####
mbed_official 354:e67efb2aab0e 644 ==============================================================================
mbed_official 354:e67efb2aab0e 645 [..]
mbed_official 354:e67efb2aab0e 646 This subsection permits to get in run-time the status of the SRAM controller
mbed_official 354:e67efb2aab0e 647 and the data flow.
mbed_official 354:e67efb2aab0e 648
mbed_official 354:e67efb2aab0e 649 @endverbatim
mbed_official 354:e67efb2aab0e 650 * @{
mbed_official 354:e67efb2aab0e 651 */
mbed_official 354:e67efb2aab0e 652
mbed_official 354:e67efb2aab0e 653 /**
mbed_official 354:e67efb2aab0e 654 * @brief Returns the SRAM controller state
mbed_official 354:e67efb2aab0e 655 * @param hsram: pointer to a SRAM_HandleTypeDef structure that contains
mbed_official 354:e67efb2aab0e 656 * the configuration information for SRAM module.
mbed_official 354:e67efb2aab0e 657 * @retval HAL state
mbed_official 354:e67efb2aab0e 658 */
mbed_official 354:e67efb2aab0e 659 HAL_SRAM_StateTypeDef HAL_SRAM_GetState(SRAM_HandleTypeDef *hsram)
mbed_official 354:e67efb2aab0e 660 {
mbed_official 354:e67efb2aab0e 661 return hsram->State;
mbed_official 354:e67efb2aab0e 662 }
mbed_official 354:e67efb2aab0e 663
mbed_official 354:e67efb2aab0e 664 /**
mbed_official 354:e67efb2aab0e 665 * @}
mbed_official 354:e67efb2aab0e 666 */
mbed_official 354:e67efb2aab0e 667
mbed_official 354:e67efb2aab0e 668 /**
mbed_official 354:e67efb2aab0e 669 * @}
mbed_official 354:e67efb2aab0e 670 */
mbed_official 354:e67efb2aab0e 671 #endif /* STM32L151xD || STM32L152xD || STM32L162xD */
mbed_official 354:e67efb2aab0e 672 #endif /* HAL_SRAM_MODULE_ENABLED */
mbed_official 354:e67efb2aab0e 673 /**
mbed_official 354:e67efb2aab0e 674 * @}
mbed_official 354:e67efb2aab0e 675 */
mbed_official 354:e67efb2aab0e 676
mbed_official 354:e67efb2aab0e 677 /**
mbed_official 354:e67efb2aab0e 678 * @}
mbed_official 354:e67efb2aab0e 679 */
mbed_official 354:e67efb2aab0e 680
mbed_official 354:e67efb2aab0e 681 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/