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:
Mon Sep 28 20:15:09 2015 +0100
Revision:
634:ac7d6880524d
Parent:
632:7687fb9c4f91
Synchronized with git revision 9b7d23d47153c298a6d24de9a415202705889d11

Full URL: https://github.com/mbedmicro/mbed/commit/9b7d23d47153c298a6d24de9a415202705889d11/

Revert "[NUCLEO_F303K8] add support of the STM32F303K8"

Who changed what in which revision?

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