210#ifdef HAL_SPI_MODULE_ENABLED 
  217#define SPI_DEFAULT_TIMEOUT 100U 
  218#define SPI_BSY_FLAG_WORKAROUND_TIMEOUT 1000U  
  240                                                       uint32_t Timeout, uint32_t Tickstart);
 
  249#if (USE_SPI_CRC != 0U) 
  351#if (USE_SPI_CRC != 0U) 
  366#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
  377    if (hspi->MspInitCallback == NULL)
 
  383    hspi->MspInitCallback(hspi);
 
  398  WRITE_REG(hspi->
Instance->CR1, ((hspi->
Init.
Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) |
 
  399                                  (hspi->
Init.
Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) |
 
  403                                  (hspi->
Init.
NSS & SPI_CR1_SSM) |
 
  411#if (USE_SPI_CRC != 0U) 
  420#if defined(SPI_I2SCFGR_I2SMOD) 
  422  CLEAR_BIT(hspi->
Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
 
 
  453#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
  454  if (hspi->MspDeInitCallback == NULL)
 
  460  hspi->MspDeInitCallback(hspi);
 
 
  507#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
  518                                           pSPI_CallbackTypeDef pCallback)
 
  522  if (pCallback == NULL)
 
  525    hspi->
ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK;
 
  536      case HAL_SPI_TX_COMPLETE_CB_ID :
 
  537        hspi->TxCpltCallback = pCallback;
 
  540      case HAL_SPI_RX_COMPLETE_CB_ID :
 
  541        hspi->RxCpltCallback = pCallback;
 
  544      case HAL_SPI_TX_RX_COMPLETE_CB_ID :
 
  545        hspi->TxRxCpltCallback = pCallback;
 
  548      case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
 
  549        hspi->TxHalfCpltCallback = pCallback;
 
  552      case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
 
  553        hspi->RxHalfCpltCallback = pCallback;
 
  556      case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
 
  557        hspi->TxRxHalfCpltCallback = pCallback;
 
  560      case HAL_SPI_ERROR_CB_ID :
 
  561        hspi->ErrorCallback = pCallback;
 
  564      case HAL_SPI_ABORT_CB_ID :
 
  565        hspi->AbortCpltCallback = pCallback;
 
  568      case HAL_SPI_MSPINIT_CB_ID :
 
  569        hspi->MspInitCallback = pCallback;
 
  572      case HAL_SPI_MSPDEINIT_CB_ID :
 
  573        hspi->MspDeInitCallback = pCallback;
 
  578        SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  589      case HAL_SPI_MSPINIT_CB_ID :
 
  590        hspi->MspInitCallback = pCallback;
 
  593      case HAL_SPI_MSPDEINIT_CB_ID :
 
  594        hspi->MspDeInitCallback = pCallback;
 
  599        SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  609    SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  639      case HAL_SPI_TX_COMPLETE_CB_ID :
 
  643      case HAL_SPI_RX_COMPLETE_CB_ID :
 
  647      case HAL_SPI_TX_RX_COMPLETE_CB_ID :
 
  651      case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
 
  655      case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
 
  659      case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
 
  663      case HAL_SPI_ERROR_CB_ID :
 
  667      case HAL_SPI_ABORT_CB_ID :
 
  671      case HAL_SPI_MSPINIT_CB_ID :
 
  675      case HAL_SPI_MSPDEINIT_CB_ID :
 
  681        SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  692      case HAL_SPI_MSPINIT_CB_ID :
 
  696      case HAL_SPI_MSPDEINIT_CB_ID :
 
  702        SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  712    SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
 
  772  uint16_t initial_TxXferCount;
 
  779  initial_TxXferCount = Size;
 
  786  if ((pData == NULL) || (Size == 0U))
 
  816#if (USE_SPI_CRC != 0U) 
  825  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
  892#if (USE_SPI_CRC != 0U) 
  896    SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 
  937#if (USE_SPI_CRC != 0U) 
  938  __IO uint32_t tmpreg = 0U;
 
  957  if ((pData == NULL) || (Size == 0U))
 
  979#if (USE_SPI_CRC != 0U) 
  998  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 1055#if (USE_SPI_CRC != 0U) 
 1060    SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 1091    tmpreg = READ_REG(hspi->
Instance->DR);
 
 1103#if (USE_SPI_CRC != 0U) 
 
 1136                                          uint16_t Size, uint32_t Timeout)
 
 1138  uint16_t             initial_TxXferCount;
 
 1142#if (USE_SPI_CRC != 0U) 
 1143  __IO uint32_t tmpreg = 0U;
 
 1147  uint32_t             txallowed = 1U;
 
 1156  tmp_state           = hspi->
State;
 
 1158  initial_TxXferCount = Size;
 
 1166  if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
 
 1193#if (USE_SPI_CRC != 0U) 
 1202  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 1217#if (USE_SPI_CRC != 0U) 
 1221        SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 1237#if (USE_SPI_CRC != 0U) 
 1241          SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 1272#if (USE_SPI_CRC != 0U) 
 1276        SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 1291#if (USE_SPI_CRC != 0U) 
 1295          SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 1318#if (USE_SPI_CRC != 0U) 
 1332    tmpreg = READ_REG(hspi->
Instance->DR);
 
 
 1392  if ((pData == NULL) || (Size == 0U))
 
 1436#if (USE_SPI_CRC != 0U) 
 1445  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 
 1483  if ((pData == NULL) || (Size == 0U))
 
 1522#if (USE_SPI_CRC != 0U) 
 1535  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 
 1568  tmp_state           = hspi->
State;
 
 1577  if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
 
 1612#if (USE_SPI_CRC != 0U) 
 1622  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 
 1658  if ((pData == NULL) || (Size == 0U))
 
 1688#if (USE_SPI_CRC != 0U) 
 1720  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 1733  SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
 
 
 1769  if ((pData == NULL) || (Size == 0U))
 
 1798#if (USE_SPI_CRC != 0U) 
 1830  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 1843  SET_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
 
 
 1872  tmp_state           = hspi->
State;
 
 1881  if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
 
 1908#if (USE_SPI_CRC != 0U) 
 1948  SET_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
 
 1969  if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
 
 1982  SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
 
 
 2003  __IO uint32_t count;
 
 2004  __IO uint32_t resetcount;
 
 2012  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_ERRIE);
 
 2053    if (hspi->
hdmatx != NULL)
 
 2066      CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXDMAEN));
 
 2085    if (hspi->
hdmarx != NULL)
 
 2101      CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_RXDMAEN));
 
 
 2148  uint32_t abortcplt ;
 
 2149  __IO uint32_t count;
 
 2150  __IO uint32_t resetcount;
 
 2159  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_ERRIE);
 
 2199  if (hspi->
hdmatx != NULL)
 
 2213  if (hspi->
hdmarx != NULL)
 
 2231    if (hspi->
hdmatx != NULL)
 
 2249    if (hspi->
hdmarx != NULL)
 
 2264  if (abortcplt == 1U)
 
 2290#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2291    hspi->AbortCpltCallback(hspi);
 
 
 2312  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 
 2332  SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 
 2356  if (hspi->
hdmatx != NULL)
 
 2365  if (hspi->
hdmarx != NULL)
 
 2375  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 
 2388  uint32_t itsource = hspi->
Instance->CR2;
 
 2389  uint32_t itflag   = hspi->
Instance->SR;
 
 2448        CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN));
 
 2451        if (hspi->
hdmarx != NULL)
 
 2462        if (hspi->
hdmatx != NULL)
 
 2476#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2477        hspi->ErrorCallback(hspi);
 
 
 2688  if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
 
 2694    CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
 
 2714#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2715      hspi->ErrorCallback(hspi);
 
 2723#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2724  hspi->TxCpltCallback(hspi);
 
 
 2740#if (USE_SPI_CRC != 0U) 
 2741  __IO uint32_t tmpreg = 0U;
 
 2748  if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
 
 2753#if (USE_SPI_CRC != 0U) 
 2764      tmpreg = READ_REG(hspi->
Instance->DR);
 
 2774      CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 2779      CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
 
 2791#if (USE_SPI_CRC != 0U) 
 2803#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2804      hspi->ErrorCallback(hspi);
 
 2812#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2813  hspi->RxCpltCallback(hspi);
 
 
 2829#if (USE_SPI_CRC != 0U) 
 2830  __IO uint32_t tmpreg = 0U;
 
 2837  if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
 
 2842#if (USE_SPI_CRC != 0U) 
 2852      tmpreg = READ_REG(hspi->
Instance->DR);
 
 2865    CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 2871#if (USE_SPI_CRC != 0U) 
 2883#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2884      hspi->ErrorCallback(hspi);
 
 2892#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2893  hspi->TxRxCpltCallback(hspi);
 
 
 2910#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2911  hspi->TxHalfCpltCallback(hspi);
 
 
 2928#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2929  hspi->RxHalfCpltCallback(hspi);
 
 
 2946#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2947  hspi->TxRxHalfCpltCallback(hspi);
 
 
 2964  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
 
 2969#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2970  hspi->ErrorCallback(hspi);
 
 
 2989#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 2990  hspi->ErrorCallback(hspi);
 
 
 3007  __IO uint32_t count;
 
 3013  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
 
 3027  if (hspi->
hdmarx != NULL)
 
 3054#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3055  hspi->AbortCpltCallback(hspi);
 
 
 3079  CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
 
 3088  if (hspi->
hdmatx != NULL)
 
 3115#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3116  hspi->AbortCpltCallback(hspi);
 
 
 3138#if (USE_SPI_CRC != 0U) 
 3141      hspi->
RxISR =  SPI_2linesRxISR_8BITCRC;
 
 
 3156#if (USE_SPI_CRC != 0U) 
 3165  __IO uint8_t  *ptmpreg8;
 
 3166  __IO uint8_t  tmpreg8 = 0;
 
 3169  ptmpreg8 = (__IO uint8_t *)&hspi->
Instance->DR;
 
 3171  tmpreg8 = *ptmpreg8;
 
 3200#if (USE_SPI_CRC != 0U) 
 3204      SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 
 3236#if (USE_SPI_CRC != 0U) 
 3239      hspi->
RxISR =  SPI_2linesRxISR_16BITCRC;
 
 
 3254#if (USE_SPI_CRC != 0U) 
 3263  __IO uint32_t tmpreg = 0U;
 
 3266  tmpreg = READ_REG(hspi->
Instance->DR);
 
 3293#if (USE_SPI_CRC != 0U) 
 3297      SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 
 3314#if (USE_SPI_CRC != 0U) 
 3323  __IO uint8_t  *ptmpreg8;
 
 3324  __IO uint8_t  tmpreg8 = 0;
 
 3327  ptmpreg8 = (__IO uint8_t *)&hspi->
Instance->DR;
 
 3329  tmpreg8 = *ptmpreg8;
 
 3349#if (USE_SPI_CRC != 0U) 
 3353    SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 3359#if (USE_SPI_CRC != 0U) 
 3362      hspi->
RxISR =  SPI_RxISR_8BITCRC;
 
 
 3370#if (USE_SPI_CRC != 0U) 
 3379  __IO uint32_t tmpreg = 0U;
 
 3382  tmpreg = READ_REG(hspi->
Instance->DR);
 
 3405#if (USE_SPI_CRC != 0U) 
 3409    SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 3415#if (USE_SPI_CRC != 0U) 
 3418      hspi->
RxISR = SPI_RxISR_16BITCRC;
 
 
 3440#if (USE_SPI_CRC != 0U) 
 3444      SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 
 3466#if (USE_SPI_CRC != 0U) 
 3470      SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
 
 
 3488                                                       uint32_t Timeout, uint32_t Tickstart)
 
 3490  __IO uint32_t count;
 
 3491  uint32_t tmp_timeout;
 
 3492  uint32_t tmp_tickstart;
 
 3495  tmp_timeout   = Timeout - (
HAL_GetTick() - Tickstart);
 
 3499  count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U);
 
 3505      if (((
HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U))
 
 
 3685#if (USE_SPI_CRC != 0U) 
 3693#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3694    hspi->ErrorCallback(hspi);
 
 3708#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3709        hspi->RxCpltCallback(hspi);
 
 3718#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3719        hspi->TxRxCpltCallback(hspi);
 
 3729#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3730      hspi->ErrorCallback(hspi);
 
 3735#if (USE_SPI_CRC != 0U) 
 
 3764#if (USE_SPI_CRC != 0U) 
 3771#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3772    hspi->ErrorCallback(hspi);
 
 3783#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3784      hspi->RxCpltCallback(hspi);
 
 3792#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3793      hspi->ErrorCallback(hspi);
 
 3798#if (USE_SPI_CRC != 0U) 
 
 3847#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3848    hspi->ErrorCallback(hspi);
 
 3856#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U) 
 3857    hspi->TxCpltCallback(hspi);
 
 
 3872  __IO uint32_t tmpreg = 0U;
 
 3890  CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE));
 
 3893  tmpreg = READ_REG(hspi->
Instance->DR);
 
 
 3909  CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXEIE));
 
 
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
 
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer in Interrupt mode.
 
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
 
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
 
#define SPI_BAUDRATEPRESCALER_2
 
#define SPI_CRCCALCULATION_ENABLE
 
#define SPI_CRCCALCULATION_DISABLE
 
#define SPI_DATASIZE_8BIT
 
#define SPI_DATASIZE_16BIT
 
#define SPI_DIRECTION_2LINES_RXONLY
 
#define SPI_DIRECTION_2LINES
 
#define SPI_DIRECTION_1LINE
 
#define HAL_SPI_ERROR_MODF
 
#define HAL_SPI_ERROR_FLAG
 
#define HAL_SPI_ERROR_OVR
 
#define HAL_SPI_ERROR_NONE
 
#define HAL_SPI_ERROR_DMA
 
#define HAL_SPI_ERROR_ABORT
 
#define HAL_SPI_ERROR_CRC
 
#define HAL_SPI_ERROR_FRE
 
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
De-Initialize the SPI MSP.
 
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
Initialize the SPI according to the specified parameters in the SPI_InitTypeDef and initialize the as...
 
HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi)
De-Initialize the SPI peripheral.
 
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
Initialize the SPI MSP.
 
HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi)
Abort ongoing transfer (blocking mode).
 
HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
Transmit and Receive an amount of data in non-blocking mode with Interrupt.
 
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
Rx Transfer completed callback.
 
HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi)
Pause the DMA Transfer.
 
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with DMA.
 
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Transfer completed callback.
 
HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi)
Abort ongoing transfer (Interrupt mode).
 
HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi)
Stop the DMA Transfer.
 
HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi)
Resume the DMA Transfer.
 
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
Transmit and Receive an amount of data in blocking mode.
 
HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with Interrupt.
 
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with Interrupt.
 
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
Tx Transfer completed callback.
 
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
Transmit an amount of data in blocking mode.
 
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx Half Transfer completed callback.
 
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
SPI error callback.
 
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Tx and Rx Half Transfer callback.
 
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi)
Rx Half Transfer completed callback.
 
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi)
Handle SPI interrupt request.
 
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi)
SPI Abort Complete callback.
 
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
Transmit and Receive an amount of data in non-blocking mode with DMA.
 
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
 
HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi)
Return the SPI handle state.
 
uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi)
Return the SPI error code.
 
#define __HAL_SPI_ENABLE(__HANDLE__)
Enable the SPI peripheral.
 
#define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified SPI interrupts.
 
#define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__)
Clear the SPI MODF pending flag.
 
#define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified SPI interrupts.
 
#define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__)
Clear the SPI FRE pending flag.
 
#define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified SPI flag is set or not.
 
#define __HAL_SPI_DISABLE(__HANDLE__)
Disable the SPI peripheral.
 
#define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__)
Clear the SPI CRCERR pending flag.
 
#define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__)
Clear the SPI OVR pending flag.
 
HAL_SPI_StateTypeDef
HAL SPI State structure definition.
 
@ HAL_SPI_STATE_BUSY_TX_RX
 
#define SPI_DEFAULT_TIMEOUT
 
#define SPI_BSY_FLAG_WORKAROUND_TIMEOUT
 
static void SPI_DMAHalfTransmitReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SPI half transmit receive process complete callback.
 
static void SPI_CloseRxTx_ISR(SPI_HandleTypeDef *hspi)
Handle the end of the RXTX transaction.
 
static void SPI_AbortRx_ISR(SPI_HandleTypeDef *hspi)
Handle abort a Rx transaction.
 
static void SPI_2linesTxISR_8BIT(struct __SPI_HandleTypeDef *hspi)
Tx 8-bit handler for Transmit and Receive in Interrupt mode.
 
static HAL_StatusTypeDef SPI_EndRxTxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart)
Handle the check of the RXTX or TX transaction complete.
 
static void SPI_TxISR_16BIT(struct __SPI_HandleTypeDef *hspi)
Handle the data 16-bit transmit in Interrupt mode.
 
static void SPI_2linesTxISR_16BIT(struct __SPI_HandleTypeDef *hspi)
Tx 16-bit handler for Transmit and Receive in Interrupt mode.
 
static void SPI_RxISR_16BIT(struct __SPI_HandleTypeDef *hspi)
Manage the 16-bit receive in Interrupt context.
 
static void SPI_CloseTx_ISR(SPI_HandleTypeDef *hspi)
Handle the end of the TX transaction.
 
static void SPI_DMATransmitCplt(DMA_HandleTypeDef *hdma)
DMA SPI transmit process complete callback.
 
static void SPI_2linesRxISR_8BIT(struct __SPI_HandleTypeDef *hspi)
Rx 8-bit handler for Transmit and Receive in Interrupt mode.
 
static void SPI_TxISR_8BIT(struct __SPI_HandleTypeDef *hspi)
Handle the data 8-bit transmit in Interrupt mode.
 
static void SPI_DMAHalfTransmitCplt(DMA_HandleTypeDef *hdma)
DMA SPI half transmit process complete callback.
 
static void SPI_2linesRxISR_16BIT(struct __SPI_HandleTypeDef *hspi)
Rx 16-bit handler for Transmit and Receive in Interrupt mode.
 
static void SPI_DMAHalfReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SPI half receive process complete callback.
 
static void SPI_CloseRx_ISR(SPI_HandleTypeDef *hspi)
Handle the end of the RX transaction.
 
static void SPI_DMATransmitReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SPI transmit receive process complete callback.
 
static void SPI_AbortTx_ISR(SPI_HandleTypeDef *hspi)
Handle abort a Tx or Rx/Tx transaction.
 
static void SPI_DMAError(DMA_HandleTypeDef *hdma)
DMA SPI communication error callback.
 
static void SPI_DMAAbortOnError(DMA_HandleTypeDef *hdma)
DMA SPI communication abort callback, when initiated by HAL services on Error (To be called at end of...
 
static HAL_StatusTypeDef SPI_EndRxTransaction(SPI_HandleTypeDef *hspi, uint32_t Timeout, uint32_t Tickstart)
Handle the check of the RX transaction complete.
 
static void SPI_RxISR_8BIT(struct __SPI_HandleTypeDef *hspi)
Manage the receive 8-bit in Interrupt context.
 
static void SPI_DMATxAbortCallback(DMA_HandleTypeDef *hdma)
DMA SPI Tx communication abort callback, when initiated by user (To be called at end of DMA Tx Abort ...
 
static void SPI_DMARxAbortCallback(DMA_HandleTypeDef *hdma)
DMA SPI Rx communication abort callback, when initiated by user (To be called at end of DMA Rx Abort ...
 
static void SPI_DMAReceiveCplt(DMA_HandleTypeDef *hdma)
DMA SPI receive process complete callback.
 
static HAL_StatusTypeDef SPI_WaitFlagStateUntilTimeout(SPI_HandleTypeDef *hspi, uint32_t Flag, FlagStatus State, uint32_t Timeout, uint32_t Tickstart)
Handle SPI Communication Timeout.
 
#define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__)
Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range.
 
#define IS_SPI_MODE(__MODE__)
Checks if SPI Mode parameter is in allowed range.
 
#define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__)
Checks if SPI Direction Mode parameter is 1 or 2 lines.
 
#define IS_SPI_CRC_CALCULATION(__CALCULATION__)
Checks if SPI CRC calculation enabled state is in allowed range.
 
#define IS_SPI_DIRECTION(__MODE__)
Checks if SPI Direction Mode parameter is in allowed range.
 
#define IS_SPI_FIRST_BIT(__BIT__)
Checks if SPI MSB LSB transmission parameter is in allowed range.
 
#define IS_SPI_NSS(__NSS__)
Checks if SPI Slave Select parameter is in allowed range.
 
#define SPI_CHECK_IT_SOURCE(__CR2__, __INTERRUPT__)
Check whether the specified SPI Interrupt is set or not.
 
#define IS_SPI_TIMODE(__MODE__)
Checks if SPI TI mode parameter is in allowed range.
 
#define SPI_1LINE_RX(__HANDLE__)
Set the SPI receive-only mode.
 
#define SPI_RESET_CRC(__HANDLE__)
Reset the CRC calculation of the SPI.
 
#define IS_SPI_DATASIZE(__DATASIZE__)
Checks if SPI Data Size parameter is in allowed range.
 
#define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__)
Checks if SPI Baudrate prescaler parameter is in allowed range.
 
#define IS_SPI_CPOL(__CPOL__)
Checks if SPI Serial clock steady state parameter is in allowed range.
 
#define SPI_1LINE_TX(__HANDLE__)
Set the SPI transmit-only mode.
 
#define IS_SPI_DMA_HANDLE(__HANDLE__)
Checks if DMA handle is valid.
 
#define SPI_CHECK_FLAG(__SR__, __FLAG__)
Check whether the specified SPI flag is set or not.
 
#define IS_SPI_CPHA(__CPHA__)
Checks if SPI Clock Phase parameter is in allowed range.
 
#define IS_SPI_DIRECTION_2LINES(__MODE__)
Checks if SPI Direction Mode parameter is 2 lines.
 
#define SPI_TIMODE_DISABLE
 
#define assert_param(expr)
 
This file contains all the functions prototypes for the HAL module driver.
 
#define HAL_IS_BIT_SET(REG, BIT)
 
HAL_StatusTypeDef
HAL Status structures definition
 
#define __HAL_UNLOCK(__HANDLE__)
 
#define __HAL_LOCK(__HANDLE__)
 
uint32_t BaudRatePrescaler
 
DMA handle Structure definition.
 
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
 
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
 
DMA_Stream_TypeDef * Instance
 
SPI handle Structure definition.
 
DMA_HandleTypeDef * hdmarx
 
__IO uint16_t TxXferCount
 
void(* TxISR)(struct __SPI_HandleTypeDef *hspi)
 
void(* RxISR)(struct __SPI_HandleTypeDef *hspi)
 
__IO uint16_t RxXferCount
 
DMA_HandleTypeDef * hdmatx
 
__IO HAL_SPI_StateTypeDef State
 
const uint8_t * pTxBuffPtr