STM32L4xx_HAL_Driver  1.14.0
Initialization/de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_QSPI_Init (QSPI_HandleTypeDef *hqspi)
 Initialize the QSPI mode according to the specified parameters in the QSPI_InitTypeDef and initialize the associated handle. More...
 
HAL_StatusTypeDef HAL_QSPI_DeInit (QSPI_HandleTypeDef *hqspi)
 De-Initialize the QSPI peripheral. More...
 
void HAL_QSPI_MspInit (QSPI_HandleTypeDef *hqspi)
 Initialize the QSPI MSP. More...
 
void HAL_QSPI_MspDeInit (QSPI_HandleTypeDef *hqspi)
 DeInitialize the QSPI MSP. More...
 

Detailed Description

Initialization and Configuration functions.

===============================================================================
            ##### Initialization and Configuration functions #####
 ===============================================================================
    [..]
    This subsection provides a set of functions allowing to :
      (+) Initialize the QuadSPI.
      (+) De-initialize the QuadSPI.

Function Documentation

◆ HAL_QSPI_DeInit()

HAL_StatusTypeDef HAL_QSPI_DeInit ( QSPI_HandleTypeDef hqspi)

De-Initialize the QSPI peripheral.

Parameters
hqspi: QSPI handle
Return values
HALstatus

Definition at line 403 of file stm32l4xx_hal_qspi.c.

404 {
405  /* Check the QSPI handle allocation */
406  if(hqspi == NULL)
407  {
408  return HAL_ERROR;
409  }
410 
411  /* Process locked */
412  __HAL_LOCK(hqspi);
413 
414  /* Disable the QSPI Peripheral Clock */
415  __HAL_QSPI_DISABLE(hqspi);
416 
417 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
418  if(hqspi->MspDeInitCallback == NULL)
419  {
420  hqspi->MspDeInitCallback = HAL_QSPI_MspDeInit;
421  }
422 
423  /* DeInit the low level hardware */
424  hqspi->MspDeInitCallback(hqspi);
425 #else
426  /* DeInit the low level hardware: GPIO, CLOCK, NVIC... */
427  HAL_QSPI_MspDeInit(hqspi);
428 #endif
429 
430  /* Set QSPI error code to none */
431  hqspi->ErrorCode = HAL_QSPI_ERROR_NONE;
432 
433  /* Initialize the QSPI state */
434  hqspi->State = HAL_QSPI_STATE_RESET;
435 
436  /* Release Lock */
437  __HAL_UNLOCK(hqspi);
438 
439  return HAL_OK;
440 }
__HAL_UNLOCK(hrtc)
void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi)
DeInitialize the QSPI MSP.
__HAL_LOCK(hrtc)
return HAL_OK

◆ HAL_QSPI_Init()

HAL_StatusTypeDef HAL_QSPI_Init ( QSPI_HandleTypeDef hqspi)

Initialize the QSPI mode according to the specified parameters in the QSPI_InitTypeDef and initialize the associated handle.

Parameters
hqspi: QSPI handle
Return values
HALstatus

Definition at line 291 of file stm32l4xx_hal_qspi.c.

292 {
293  HAL_StatusTypeDef status;
294  uint32_t tickstart = HAL_GetTick();
295 
296  /* Check the QSPI handle allocation */
297  if(hqspi == NULL)
298  {
299  return HAL_ERROR;
300  }
301 
302  /* Check the parameters */
303  assert_param(IS_QSPI_ALL_INSTANCE(hqspi->Instance));
304  assert_param(IS_QSPI_CLOCK_PRESCALER(hqspi->Init.ClockPrescaler));
305  assert_param(IS_QSPI_FIFO_THRESHOLD(hqspi->Init.FifoThreshold));
306  assert_param(IS_QSPI_SSHIFT(hqspi->Init.SampleShifting));
307  assert_param(IS_QSPI_FLASH_SIZE(hqspi->Init.FlashSize));
308  assert_param(IS_QSPI_CS_HIGH_TIME(hqspi->Init.ChipSelectHighTime));
309  assert_param(IS_QSPI_CLOCK_MODE(hqspi->Init.ClockMode));
310 #if defined(QUADSPI_CR_DFM)
311  assert_param(IS_QSPI_DUAL_FLASH_MODE(hqspi->Init.DualFlash));
312 
313  if (hqspi->Init.DualFlash != QSPI_DUALFLASH_ENABLE )
314  {
315  assert_param(IS_QSPI_FLASH_ID(hqspi->Init.FlashID));
316  }
317 #endif
318 
319  /* Process locked */
320  __HAL_LOCK(hqspi);
321 
322  if(hqspi->State == HAL_QSPI_STATE_RESET)
323  {
324  /* Allocate lock resource and initialize it */
325  hqspi->Lock = HAL_UNLOCKED;
326 
327 #if (USE_HAL_QSPI_REGISTER_CALLBACKS == 1)
328  /* Reset Callback pointers in HAL_QSPI_STATE_RESET only */
329  hqspi->ErrorCallback = HAL_QSPI_ErrorCallback;
330  hqspi->AbortCpltCallback = HAL_QSPI_AbortCpltCallback;
331  hqspi->FifoThresholdCallback = HAL_QSPI_FifoThresholdCallback;
332  hqspi->CmdCpltCallback = HAL_QSPI_CmdCpltCallback;
333  hqspi->RxCpltCallback = HAL_QSPI_RxCpltCallback;
334  hqspi->TxCpltCallback = HAL_QSPI_TxCpltCallback;
335  hqspi->RxHalfCpltCallback = HAL_QSPI_RxHalfCpltCallback;
336  hqspi->TxHalfCpltCallback = HAL_QSPI_TxHalfCpltCallback;
337  hqspi->StatusMatchCallback = HAL_QSPI_StatusMatchCallback;
338  hqspi->TimeOutCallback = HAL_QSPI_TimeOutCallback;
339 
340  if(hqspi->MspInitCallback == NULL)
341  {
342  hqspi->MspInitCallback = HAL_QSPI_MspInit;
343  }
344 
345  /* Init the low level hardware */
346  hqspi->MspInitCallback(hqspi);
347 #else
348  /* Init the low level hardware : GPIO, CLOCK */
349  HAL_QSPI_MspInit(hqspi);
350 #endif
351 
352  /* Configure the default timeout for the QSPI memory access */
353  HAL_QSPI_SetTimeout(hqspi, HAL_QSPI_TIMEOUT_DEFAULT_VALUE);
354  }
355 
356  /* Configure QSPI FIFO Threshold */
357  MODIFY_REG(hqspi->Instance->CR, QUADSPI_CR_FTHRES,
358  ((hqspi->Init.FifoThreshold - 1U) << QUADSPI_CR_FTHRES_Pos));
359 
360  /* Wait till BUSY flag reset */
361  status = QSPI_WaitFlagStateUntilTimeout(hqspi, QSPI_FLAG_BUSY, RESET, tickstart, hqspi->Timeout);
362 
363  if(status == HAL_OK)
364  {
365  /* Configure QSPI Clock Prescaler and Sample Shift */
366 #if defined(QUADSPI_CR_DFM)
367  MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PRESCALER | QUADSPI_CR_SSHIFT | QUADSPI_CR_FSEL | QUADSPI_CR_DFM),
368  ((hqspi->Init.ClockPrescaler << QUADSPI_CR_PRESCALER_Pos) |
369  hqspi->Init.SampleShifting | hqspi->Init.FlashID | hqspi->Init.DualFlash));
370 #else
371  MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PRESCALER | QUADSPI_CR_SSHIFT),
372  ((hqspi->Init.ClockPrescaler << QUADSPI_CR_PRESCALER_Pos) |
373  hqspi->Init.SampleShifting));
374 #endif
375 
376  /* Configure QSPI Flash Size, CS High Time and Clock Mode */
377  MODIFY_REG(hqspi->Instance->DCR, (QUADSPI_DCR_FSIZE | QUADSPI_DCR_CSHT | QUADSPI_DCR_CKMODE),
378  ((hqspi->Init.FlashSize << QUADSPI_DCR_FSIZE_Pos) |
379  hqspi->Init.ChipSelectHighTime | hqspi->Init.ClockMode));
380 
381  /* Enable the QSPI peripheral */
382  __HAL_QSPI_ENABLE(hqspi);
383 
384  /* Set QSPI error code to none */
385  hqspi->ErrorCode = HAL_QSPI_ERROR_NONE;
386 
387  /* Initialize the QSPI state */
388  hqspi->State = HAL_QSPI_STATE_READY;
389  }
390 
391  /* Release Lock */
392  __HAL_UNLOCK(hqspi);
393 
394  /* Return function status */
395  return status;
396 }
void HAL_QSPI_TimeOutCallback(QSPI_HandleTypeDef *hqspi)
Timeout callback.
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
__HAL_UNLOCK(hrtc)
__HAL_LOCK(hrtc)
return HAL_OK
void HAL_QSPI_MspInit(QSPI_HandleTypeDef *hqspi)
Initialize the QSPI MSP.
void HAL_QSPI_RxCpltCallback(QSPI_HandleTypeDef *hqspi)
Rx Transfer completed callback.
void HAL_QSPI_AbortCpltCallback(QSPI_HandleTypeDef *hqspi)
Abort completed callback.
void HAL_QSPI_ErrorCallback(QSPI_HandleTypeDef *hqspi)
Transfer Error callback.
void HAL_QSPI_SetTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Timeout)
Set QSPI timeout.
void HAL_QSPI_FifoThresholdCallback(QSPI_HandleTypeDef *hqspi)
FIFO Threshold callback.
void HAL_QSPI_TxCpltCallback(QSPI_HandleTypeDef *hqspi)
Tx Transfer completed callback.
void HAL_QSPI_RxHalfCpltCallback(QSPI_HandleTypeDef *hqspi)
Rx Half Transfer completed callback.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
void HAL_QSPI_CmdCpltCallback(QSPI_HandleTypeDef *hqspi)
Command completed callback.
static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Tickstart, uint32_t Timeout)
Wait for a flag state until timeout.
void HAL_QSPI_StatusMatchCallback(QSPI_HandleTypeDef *hqspi)
Status Match callback.
void HAL_QSPI_TxHalfCpltCallback(QSPI_HandleTypeDef *hqspi)
Tx Half Transfer completed callback.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_QSPI_MspDeInit()

__weak void HAL_QSPI_MspDeInit ( QSPI_HandleTypeDef hqspi)

DeInitialize the QSPI MSP.

Parameters
hqspi: QSPI handle
Return values
None

Definition at line 462 of file stm32l4xx_hal_qspi.c.

463 {
464  /* Prevent unused argument(s) compilation warning */
465  UNUSED(hqspi);
466 
467  /* NOTE : This function should not be modified, when the callback is needed,
468  the HAL_QSPI_MspDeInit can be implemented in the user file
469  */
470 }

◆ HAL_QSPI_MspInit()

__weak void HAL_QSPI_MspInit ( QSPI_HandleTypeDef hqspi)

Initialize the QSPI MSP.

Parameters
hqspi: QSPI handle
Return values
None

Definition at line 447 of file stm32l4xx_hal_qspi.c.

448 {
449  /* Prevent unused argument(s) compilation warning */
450  UNUSED(hqspi);
451 
452  /* NOTE : This function should not be modified, when the callback is needed,
453  the HAL_QSPI_MspInit can be implemented in the user file
454  */
455 }