STM32L4xx_HAL_Driver  1.14.0
Initialization and de-initialization functions

Initialization and Configuration functions. More...

Functions

HAL_StatusTypeDef HAL_SPI_Init (SPI_HandleTypeDef *hspi)
 Initialize the SPI according to the specified parameters in the SPI_InitTypeDef and initialize the associated handle. More...
 
HAL_StatusTypeDef HAL_SPI_DeInit (SPI_HandleTypeDef *hspi)
 De-Initialize the SPI peripheral. More...
 
void HAL_SPI_MspInit (SPI_HandleTypeDef *hspi)
 Initialize the SPI MSP. More...
 
void HAL_SPI_MspDeInit (SPI_HandleTypeDef *hspi)
 De-Initialize the SPI MSP. More...
 
HAL_StatusTypeDef HAL_SPI_RegisterCallback (SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID, pSPI_CallbackTypeDef pCallback)
 Register a User SPI Callback To be used instead of the weak predefined callback. More...
 
HAL_StatusTypeDef HAL_SPI_UnRegisterCallback (SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID)
 Unregister an SPI Callback SPI callback is redirected to the weak predefined callback. More...
 

Detailed Description

Initialization and Configuration functions.

 ===============================================================================
              ##### Initialization and de-initialization functions #####
 ===============================================================================
    [..]  This subsection provides a set of functions allowing to initialize and
          de-initialize the SPIx peripheral:

      (+) User must implement HAL_SPI_MspInit() function in which he configures
          all related peripherals resources (CLOCK, GPIO, DMA, IT and NVIC ).

      (+) Call the function HAL_SPI_Init() to configure the selected device with
          the selected configuration:
        (++) Mode
        (++) Direction
        (++) Data Size
        (++) Clock Polarity and Phase
        (++) NSS Management
        (++) BaudRate Prescaler
        (++) FirstBit
        (++) TIMode
        (++) CRC Calculation
        (++) CRC Polynomial if CRC enabled
        (++) CRC Length, used only with Data8 and Data16
        (++) FIFO reception threshold

      (+) Call the function HAL_SPI_DeInit() to restore the default configuration
          of the selected SPIx peripheral.

Function Documentation

◆ HAL_SPI_DeInit()

HAL_StatusTypeDef HAL_SPI_DeInit ( SPI_HandleTypeDef hspi)

De-Initialize the SPI peripheral.

Parameters
hspipointer to a SPI_HandleTypeDef structure that contains the configuration information for SPI module.
Return values
HALstatus

Definition at line 458 of file stm32l4xx_hal_spi.c.

459 {
460  /* Check the SPI handle allocation */
461  if (hspi == NULL)
462  {
463  return HAL_ERROR;
464  }
465 
466  /* Check SPI Instance parameter */
467  assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance));
468 
469  hspi->State = HAL_SPI_STATE_BUSY;
470 
471  /* Disable the SPI Peripheral Clock */
472  __HAL_SPI_DISABLE(hspi);
473 
474 #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
475  if (hspi->MspDeInitCallback == NULL)
476  {
477  hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */
478  }
479 
480  /* DeInit the low level hardware: GPIO, CLOCK, NVIC... */
481  hspi->MspDeInitCallback(hspi);
482 #else
483  /* DeInit the low level hardware: GPIO, CLOCK, NVIC... */
484  HAL_SPI_MspDeInit(hspi);
485 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
486 
487  hspi->ErrorCode = HAL_SPI_ERROR_NONE;
488  hspi->State = HAL_SPI_STATE_RESET;
489 
490  /* Release Lock */
491  __HAL_UNLOCK(hspi);
492 
493  return HAL_OK;
494 }
void(* MspDeInitCallback)(struct __SPI_HandleTypeDef *hspi)
__HAL_UNLOCK(hrtc)
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
De-Initialize the SPI MSP.
return HAL_OK
__IO HAL_SPI_StateTypeDef State
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))

◆ HAL_SPI_Init()

HAL_StatusTypeDef HAL_SPI_Init ( SPI_HandleTypeDef hspi)

Initialize the SPI according to the specified parameters in the SPI_InitTypeDef and initialize the associated handle.

Parameters
hspipointer to a SPI_HandleTypeDef structure that contains the configuration information for SPI module.
Return values
HALstatus

Definition at line 313 of file stm32l4xx_hal_spi.c.

314 {
315  uint32_t frxth;
316 
317  /* Check the SPI handle allocation */
318  if (hspi == NULL)
319  {
320  return HAL_ERROR;
321  }
322 
323  /* Check the parameters */
324  assert_param(IS_SPI_ALL_INSTANCE(hspi->Instance));
325  assert_param(IS_SPI_MODE(hspi->Init.Mode));
326  assert_param(IS_SPI_DIRECTION(hspi->Init.Direction));
327  assert_param(IS_SPI_DATASIZE(hspi->Init.DataSize));
328  assert_param(IS_SPI_NSS(hspi->Init.NSS));
329  assert_param(IS_SPI_NSSP(hspi->Init.NSSPMode));
330  assert_param(IS_SPI_BAUDRATE_PRESCALER(hspi->Init.BaudRatePrescaler));
331  assert_param(IS_SPI_FIRST_BIT(hspi->Init.FirstBit));
332  assert_param(IS_SPI_TIMODE(hspi->Init.TIMode));
333  if (hspi->Init.TIMode == SPI_TIMODE_DISABLE)
334  {
335  assert_param(IS_SPI_CPOL(hspi->Init.CLKPolarity));
336  assert_param(IS_SPI_CPHA(hspi->Init.CLKPhase));
337  }
338 #if (USE_SPI_CRC != 0U)
339  assert_param(IS_SPI_CRC_CALCULATION(hspi->Init.CRCCalculation));
340  if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
341  {
342  assert_param(IS_SPI_CRC_POLYNOMIAL(hspi->Init.CRCPolynomial));
343  assert_param(IS_SPI_CRC_LENGTH(hspi->Init.CRCLength));
344  }
345 #else
346  hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
347 #endif /* USE_SPI_CRC */
348 
349  if (hspi->State == HAL_SPI_STATE_RESET)
350  {
351  /* Allocate lock resource and initialize it */
352  hspi->Lock = HAL_UNLOCKED;
353 
354 #if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
355  /* Init the SPI Callback settings */
356  hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */
357  hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */
358  hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */
359  hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */
360  hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */
361  hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */
362  hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */
363  hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
364 
365  if (hspi->MspInitCallback == NULL)
366  {
367  hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */
368  }
369 
370  /* Init the low level hardware : GPIO, CLOCK, NVIC... */
371  hspi->MspInitCallback(hspi);
372 #else
373  /* Init the low level hardware : GPIO, CLOCK, NVIC... */
374  HAL_SPI_MspInit(hspi);
375 #endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
376  }
377 
378  hspi->State = HAL_SPI_STATE_BUSY;
379 
380  /* Disable the selected SPI peripheral */
381  __HAL_SPI_DISABLE(hspi);
382 
383  /* Align by default the rs fifo threshold on the data size */
384  if (hspi->Init.DataSize > SPI_DATASIZE_8BIT)
385  {
386  frxth = SPI_RXFIFO_THRESHOLD_HF;
387  }
388  else
389  {
390  frxth = SPI_RXFIFO_THRESHOLD_QF;
391  }
392 
393  /* CRC calculation is valid only for 16Bit and 8 Bit */
394  if ((hspi->Init.DataSize != SPI_DATASIZE_16BIT) && (hspi->Init.DataSize != SPI_DATASIZE_8BIT))
395  {
396  /* CRC must be disabled */
397  hspi->Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
398  }
399 
400  /* Align the CRC Length on the data size */
401  if (hspi->Init.CRCLength == SPI_CRC_LENGTH_DATASIZE)
402  {
403  /* CRC Length aligned on the data size : value set by default */
404  if (hspi->Init.DataSize > SPI_DATASIZE_8BIT)
405  {
406  hspi->Init.CRCLength = SPI_CRC_LENGTH_16BIT;
407  }
408  else
409  {
410  hspi->Init.CRCLength = SPI_CRC_LENGTH_8BIT;
411  }
412  }
413 
414  /*----------------------- SPIx CR1 & CR2 Configuration ---------------------*/
415  /* Configure : SPI Mode, Communication Mode, Clock polarity and phase, NSS management,
416  Communication speed, First bit and CRC calculation state */
417  WRITE_REG(hspi->Instance->CR1, (hspi->Init.Mode | hspi->Init.Direction |
418  hspi->Init.CLKPolarity | hspi->Init.CLKPhase | (hspi->Init.NSS & SPI_CR1_SSM) |
419  hspi->Init.BaudRatePrescaler | hspi->Init.FirstBit | hspi->Init.CRCCalculation));
420 #if (USE_SPI_CRC != 0U)
421  /* Configure : CRC Length */
422  if (hspi->Init.CRCLength == SPI_CRC_LENGTH_16BIT)
423  {
424  hspi->Instance->CR1 |= SPI_CR1_CRCL;
425  }
426 #endif /* USE_SPI_CRC */
427 
428  /* Configure : NSS management, TI Mode, NSS Pulse, Data size and Rx Fifo threshold */
429  WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16U) & SPI_CR2_SSOE) | hspi->Init.TIMode |
430  hspi->Init.NSSPMode | hspi->Init.DataSize) | frxth);
431 
432 #if (USE_SPI_CRC != 0U)
433  /*---------------------------- SPIx CRCPOLY Configuration ------------------*/
434  /* Configure : CRC Polynomial */
435  if (hspi->Init.CRCCalculation == SPI_CRCCALCULATION_ENABLE)
436  {
437  WRITE_REG(hspi->Instance->CRCPR, hspi->Init.CRCPolynomial);
438  }
439 #endif /* USE_SPI_CRC */
440 
441 #if defined(SPI_I2SCFGR_I2SMOD)
442  /* Activate the SPI mode (Make sure that I2SMOD bit in I2SCFGR register is reset) */
443  CLEAR_BIT(hspi->Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
444 #endif /* SPI_I2SCFGR_I2SMOD */
445 
446  hspi->ErrorCode = HAL_SPI_ERROR_NONE;
447  hspi->State = HAL_SPI_STATE_READY;
448 
449  return HAL_OK;
450 }
void(* ErrorCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
SPI error callback.
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi)
SPI Abort Complete callback.
void(* TxRxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
SPI_InitTypeDef Init
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
Initialize the SPI MSP.
uint32_t BaudRatePrescaler
void(* RxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void(* AbortCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Half Transfer callback.
void(* TxRxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Transfer completed callback.
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
Tx Transfer completed callback.
return HAL_OK
void(* MspInitCallback)(struct __SPI_HandleTypeDef *hspi)
__IO HAL_SPI_StateTypeDef State
void(* TxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
Rx Transfer completed callback.
void(* RxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* TxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx Half Transfer completed callback.
HAL_LockTypeDef Lock
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Rx Half Transfer completed callback.

◆ HAL_SPI_MspDeInit()

__weak void HAL_SPI_MspDeInit ( SPI_HandleTypeDef hspi)

De-Initialize the SPI MSP.

Parameters
hspipointer to a SPI_HandleTypeDef structure that contains the configuration information for SPI module.
Return values
None

Definition at line 518 of file stm32l4xx_hal_spi.c.

519 {
520  /* Prevent unused argument(s) compilation warning */
521  UNUSED(hspi);
522 
523  /* NOTE : This function should not be modified, when the callback is needed,
524  the HAL_SPI_MspDeInit should be implemented in the user file
525  */
526 }

◆ HAL_SPI_MspInit()

__weak void HAL_SPI_MspInit ( SPI_HandleTypeDef hspi)

Initialize the SPI MSP.

Parameters
hspipointer to a SPI_HandleTypeDef structure that contains the configuration information for SPI module.
Return values
None

Definition at line 502 of file stm32l4xx_hal_spi.c.

503 {
504  /* Prevent unused argument(s) compilation warning */
505  UNUSED(hspi);
506 
507  /* NOTE : This function should not be modified, when the callback is needed,
508  the HAL_SPI_MspInit should be implemented in the user file
509  */
510 }

◆ HAL_SPI_RegisterCallback()

HAL_StatusTypeDef HAL_SPI_RegisterCallback ( SPI_HandleTypeDef hspi,
HAL_SPI_CallbackIDTypeDef  CallbackID,
pSPI_CallbackTypeDef  pCallback 
)

Register a User SPI Callback To be used instead of the weak predefined callback.

Parameters
hspiPointer to a SPI_HandleTypeDef structure that contains the configuration information for the specified SPI.
CallbackIDID of the callback to be registered
pCallbackpointer to the Callback function
Return values
HALstatus

Definition at line 538 of file stm32l4xx_hal_spi.c.

539 {
540  HAL_StatusTypeDef status = HAL_OK;
541 
542  if (pCallback == NULL)
543  {
544  /* Update the error code */
545  hspi->ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK;
546 
547  return HAL_ERROR;
548  }
549  /* Process locked */
550  __HAL_LOCK(hspi);
551 
552  if (HAL_SPI_STATE_READY == hspi->State)
553  {
554  switch (CallbackID)
555  {
557  hspi->TxCpltCallback = pCallback;
558  break;
559 
561  hspi->RxCpltCallback = pCallback;
562  break;
563 
565  hspi->TxRxCpltCallback = pCallback;
566  break;
567 
569  hspi->TxHalfCpltCallback = pCallback;
570  break;
571 
573  hspi->RxHalfCpltCallback = pCallback;
574  break;
575 
577  hspi->TxRxHalfCpltCallback = pCallback;
578  break;
579 
580  case HAL_SPI_ERROR_CB_ID :
581  hspi->ErrorCallback = pCallback;
582  break;
583 
584  case HAL_SPI_ABORT_CB_ID :
585  hspi->AbortCpltCallback = pCallback;
586  break;
587 
588  case HAL_SPI_MSPINIT_CB_ID :
589  hspi->MspInitCallback = pCallback;
590  break;
591 
593  hspi->MspDeInitCallback = pCallback;
594  break;
595 
596  default :
597  /* Update the error code */
598  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
599 
600  /* Return error status */
601  status = HAL_ERROR;
602  break;
603  }
604  }
605  else if (HAL_SPI_STATE_RESET == hspi->State)
606  {
607  switch (CallbackID)
608  {
609  case HAL_SPI_MSPINIT_CB_ID :
610  hspi->MspInitCallback = pCallback;
611  break;
612 
614  hspi->MspDeInitCallback = pCallback;
615  break;
616 
617  default :
618  /* Update the error code */
619  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
620 
621  /* Return error status */
622  status = HAL_ERROR;
623  break;
624  }
625  }
626  else
627  {
628  /* Update the error code */
629  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
630 
631  /* Return error status */
632  status = HAL_ERROR;
633  }
634 
635  /* Release Lock */
636  __HAL_UNLOCK(hspi);
637  return status;
638 }
void(* ErrorCallback)(struct __SPI_HandleTypeDef *hspi)
void(* TxRxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* MspDeInitCallback)(struct __SPI_HandleTypeDef *hspi)
__HAL_UNLOCK(hrtc)
void(* RxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* AbortCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* TxRxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
__HAL_LOCK(hrtc)
return HAL_OK
void(* MspInitCallback)(struct __SPI_HandleTypeDef *hspi)
__IO HAL_SPI_StateTypeDef State
void(* TxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* RxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* TxCpltCallback)(struct __SPI_HandleTypeDef *hspi)

◆ HAL_SPI_UnRegisterCallback()

HAL_StatusTypeDef HAL_SPI_UnRegisterCallback ( SPI_HandleTypeDef hspi,
HAL_SPI_CallbackIDTypeDef  CallbackID 
)

Unregister an SPI Callback SPI callback is redirected to the weak predefined callback.

Parameters
hspiPointer to a SPI_HandleTypeDef structure that contains the configuration information for the specified SPI.
CallbackIDID of the callback to be unregistered
Return values
HALstatus

Definition at line 648 of file stm32l4xx_hal_spi.c.

649 {
650  HAL_StatusTypeDef status = HAL_OK;
651 
652  /* Process locked */
653  __HAL_LOCK(hspi);
654 
655  if (HAL_SPI_STATE_READY == hspi->State)
656  {
657  switch (CallbackID)
658  {
660  hspi->TxCpltCallback = HAL_SPI_TxCpltCallback; /* Legacy weak TxCpltCallback */
661  break;
662 
664  hspi->RxCpltCallback = HAL_SPI_RxCpltCallback; /* Legacy weak RxCpltCallback */
665  break;
666 
668  hspi->TxRxCpltCallback = HAL_SPI_TxRxCpltCallback; /* Legacy weak TxRxCpltCallback */
669  break;
670 
672  hspi->TxHalfCpltCallback = HAL_SPI_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback */
673  break;
674 
676  hspi->RxHalfCpltCallback = HAL_SPI_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback */
677  break;
678 
680  hspi->TxRxHalfCpltCallback = HAL_SPI_TxRxHalfCpltCallback; /* Legacy weak TxRxHalfCpltCallback */
681  break;
682 
683  case HAL_SPI_ERROR_CB_ID :
684  hspi->ErrorCallback = HAL_SPI_ErrorCallback; /* Legacy weak ErrorCallback */
685  break;
686 
687  case HAL_SPI_ABORT_CB_ID :
688  hspi->AbortCpltCallback = HAL_SPI_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
689  break;
690 
691  case HAL_SPI_MSPINIT_CB_ID :
692  hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */
693  break;
694 
696  hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */
697  break;
698 
699  default :
700  /* Update the error code */
701  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
702 
703  /* Return error status */
704  status = HAL_ERROR;
705  break;
706  }
707  }
708  else if (HAL_SPI_STATE_RESET == hspi->State)
709  {
710  switch (CallbackID)
711  {
712  case HAL_SPI_MSPINIT_CB_ID :
713  hspi->MspInitCallback = HAL_SPI_MspInit; /* Legacy weak MspInit */
714  break;
715 
717  hspi->MspDeInitCallback = HAL_SPI_MspDeInit; /* Legacy weak MspDeInit */
718  break;
719 
720  default :
721  /* Update the error code */
722  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
723 
724  /* Return error status */
725  status = HAL_ERROR;
726  break;
727  }
728  }
729  else
730  {
731  /* Update the error code */
732  SET_BIT(hspi->ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
733 
734  /* Return error status */
735  status = HAL_ERROR;
736  }
737 
738  /* Release Lock */
739  __HAL_UNLOCK(hspi);
740  return status;
741 }
void(* ErrorCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
SPI error callback.
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi)
SPI Abort Complete callback.
void(* TxRxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* MspDeInitCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
Initialize the SPI MSP.
__HAL_UNLOCK(hrtc)
void(* RxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* AbortCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Half Transfer callback.
void(* TxRxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
__HAL_LOCK(hrtc)
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Transfer completed callback.
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
Tx Transfer completed callback.
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
De-Initialize the SPI MSP.
return HAL_OK
void(* MspInitCallback)(struct __SPI_HandleTypeDef *hspi)
__IO HAL_SPI_StateTypeDef State
void(* TxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
Rx Transfer completed callback.
void(* RxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void(* TxCpltCallback)(struct __SPI_HandleTypeDef *hspi)
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx Half Transfer completed callback.
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Rx Half Transfer completed callback.