mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

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

Committer:
mbed_official
Date:
Wed Jul 01 09:45:11 2015 +0100
Revision:
579:53297373a894
Parent:
394:83f921546702
Synchronized with git revision d5b4d2ab9c47edb4dc5776e7177b0c2263459081

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

Initial version of drivers for SAMR21

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****/