212#ifdef HAL_SPI_MODULE_ENABLED
219#define SPI_DEFAULT_TIMEOUT 100U
220#define SPI_BSY_FLAG_WORKAROUND_TIMEOUT 1000U
242 uint32_t Timeout, uint32_t Tickstart);
251#if (USE_SPI_CRC != 0U)
353#if (USE_SPI_CRC != 0U)
368#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
379 if (hspi->MspInitCallback == NULL)
385 hspi->MspInitCallback(hspi);
400 WRITE_REG(hspi->
Instance->CR1, ((hspi->
Init.
Mode & (SPI_CR1_MSTR | SPI_CR1_SSI)) |
401 (hspi->
Init.
Direction & (SPI_CR1_RXONLY | SPI_CR1_BIDIMODE)) |
405 (hspi->
Init.
NSS & SPI_CR1_SSM) |
413#if (USE_SPI_CRC != 0U)
422#if defined(SPI_I2SCFGR_I2SMOD)
424 CLEAR_BIT(hspi->
Instance->I2SCFGR, SPI_I2SCFGR_I2SMOD);
455#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
456 if (hspi->MspDeInitCallback == NULL)
462 hspi->MspDeInitCallback(hspi);
509#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
520 pSPI_CallbackTypeDef pCallback)
524 if (pCallback == NULL)
527 hspi->
ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK;
538 case HAL_SPI_TX_COMPLETE_CB_ID :
539 hspi->TxCpltCallback = pCallback;
542 case HAL_SPI_RX_COMPLETE_CB_ID :
543 hspi->RxCpltCallback = pCallback;
546 case HAL_SPI_TX_RX_COMPLETE_CB_ID :
547 hspi->TxRxCpltCallback = pCallback;
550 case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
551 hspi->TxHalfCpltCallback = pCallback;
554 case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
555 hspi->RxHalfCpltCallback = pCallback;
558 case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
559 hspi->TxRxHalfCpltCallback = pCallback;
562 case HAL_SPI_ERROR_CB_ID :
563 hspi->ErrorCallback = pCallback;
566 case HAL_SPI_ABORT_CB_ID :
567 hspi->AbortCpltCallback = pCallback;
570 case HAL_SPI_MSPINIT_CB_ID :
571 hspi->MspInitCallback = pCallback;
574 case HAL_SPI_MSPDEINIT_CB_ID :
575 hspi->MspDeInitCallback = pCallback;
580 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
591 case HAL_SPI_MSPINIT_CB_ID :
592 hspi->MspInitCallback = pCallback;
595 case HAL_SPI_MSPDEINIT_CB_ID :
596 hspi->MspDeInitCallback = pCallback;
601 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
611 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
641 case HAL_SPI_TX_COMPLETE_CB_ID :
645 case HAL_SPI_RX_COMPLETE_CB_ID :
649 case HAL_SPI_TX_RX_COMPLETE_CB_ID :
653 case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
657 case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
661 case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
665 case HAL_SPI_ERROR_CB_ID :
669 case HAL_SPI_ABORT_CB_ID :
673 case HAL_SPI_MSPINIT_CB_ID :
677 case HAL_SPI_MSPDEINIT_CB_ID :
683 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
694 case HAL_SPI_MSPINIT_CB_ID :
698 case HAL_SPI_MSPDEINIT_CB_ID :
704 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
714 SET_BIT(hspi->
ErrorCode, HAL_SPI_ERROR_INVALID_CALLBACK);
774 uint16_t initial_TxXferCount;
781 initial_TxXferCount = Size;
788 if ((pData == NULL) || (Size == 0U))
818#if (USE_SPI_CRC != 0U)
827 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
894#if (USE_SPI_CRC != 0U)
898 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
903 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) !=
HAL_OK)
942#if (USE_SPI_CRC != 0U)
943 __IO uint32_t tmpreg = 0U;
952 if ((pData == NULL) || (Size == 0U))
984#if (USE_SPI_CRC != 0U)
1003 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1060#if (USE_SPI_CRC != 0U)
1065 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
1068 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, SET, Timeout, tickstart) !=
HAL_OK)
1087 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, SET, Timeout, tickstart) !=
HAL_OK)
1096 tmpreg = READ_REG(hspi->
Instance->DR);
1103 if (SPI_EndRxTransaction(hspi, Timeout, tickstart) !=
HAL_OK)
1108#if (USE_SPI_CRC != 0U)
1141 uint16_t Size, uint32_t Timeout)
1143 uint16_t initial_TxXferCount;
1147#if (USE_SPI_CRC != 0U)
1148 __IO uint32_t tmpreg = 0U;
1152 uint32_t txallowed = 1U;
1161 tmp_state = hspi->
State;
1163 initial_TxXferCount = Size;
1172 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
1199#if (USE_SPI_CRC != 0U)
1208 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1223#if (USE_SPI_CRC != 0U)
1227 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
1243#if (USE_SPI_CRC != 0U)
1247 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
1278#if (USE_SPI_CRC != 0U)
1282 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
1297#if (USE_SPI_CRC != 0U)
1301 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
1324#if (USE_SPI_CRC != 0U)
1329 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, SET, Timeout, tickstart) !=
HAL_OK)
1338 tmpreg = READ_REG(hspi->
Instance->DR);
1355 if (SPI_EndRxTxTransaction(hspi, Timeout, tickstart) !=
HAL_OK)
1398 if ((pData == NULL) || (Size == 0U))
1427 hspi->
TxISR = SPI_TxISR_16BIT;
1431 hspi->
TxISR = SPI_TxISR_8BIT;
1442#if (USE_SPI_CRC != 0U)
1451 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1481 if ((pData == NULL) || (Size == 0U))
1513 hspi->
RxISR = SPI_RxISR_16BIT;
1517 hspi->
RxISR = SPI_RxISR_8BIT;
1528#if (USE_SPI_CRC != 0U)
1541 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1574 tmp_state = hspi->
State;
1584 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
1610 hspi->
RxISR = SPI_2linesRxISR_16BIT;
1611 hspi->
TxISR = SPI_2linesTxISR_16BIT;
1615 hspi->
RxISR = SPI_2linesRxISR_8BIT;
1616 hspi->
TxISR = SPI_2linesTxISR_8BIT;
1619#if (USE_SPI_CRC != 0U)
1629 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1665 if ((pData == NULL) || (Size == 0U))
1695#if (USE_SPI_CRC != 0U)
1727 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1740 SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
1765 if ((pData == NULL) || (Size == 0U))
1805#if (USE_SPI_CRC != 0U)
1837 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1850 SET_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
1879 tmp_state = hspi->
State;
1889 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
1916#if (USE_SPI_CRC != 0U)
1956 SET_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
1977 if ((hspi->
Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE)
1990 SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
2011 __IO uint32_t count;
2012 __IO uint32_t resetcount;
2016 resetcount = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
2020 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_ERRIE);
2025 hspi->
TxISR = SPI_AbortTx_ISR;
2042 hspi->
RxISR = SPI_AbortRx_ISR;
2061 if (hspi->
hdmatx != NULL)
2074 CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXDMAEN));
2093 if (hspi->
hdmarx != NULL)
2109 CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_RXDMAEN));
2156 uint32_t abortcplt ;
2157 __IO uint32_t count;
2158 __IO uint32_t resetcount;
2163 resetcount = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
2167 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_ERRIE);
2172 hspi->
TxISR = SPI_AbortTx_ISR;
2189 hspi->
RxISR = SPI_AbortRx_ISR;
2207 if (hspi->
hdmatx != NULL)
2221 if (hspi->
hdmarx != NULL)
2239 if (hspi->
hdmatx != NULL)
2257 if (hspi->
hdmarx != NULL)
2272 if (abortcplt == 1U)
2298#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2299 hspi->AbortCpltCallback(hspi);
2320 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2340 SET_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2366 if (hspi->
hdmatx != NULL)
2375 if (hspi->
hdmarx != NULL)
2385 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2398 uint32_t itsource = hspi->
Instance->CR2;
2399 uint32_t itflag = hspi->
Instance->SR;
2458 CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN));
2461 if (hspi->
hdmarx != NULL)
2472 if (hspi->
hdmatx != NULL)
2486#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2487 hspi->ErrorCallback(hspi);
2698 if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
2704 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
2707 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
2724#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2725 hspi->ErrorCallback(hspi);
2733#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2734 hspi->TxCpltCallback(hspi);
2750#if (USE_SPI_CRC != 0U)
2751 __IO uint32_t tmpreg = 0U;
2758 if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
2763#if (USE_SPI_CRC != 0U)
2768 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
2774 tmpreg = READ_REG(hspi->
Instance->DR);
2784 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2789 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
2793 if (SPI_EndRxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
2801#if (USE_SPI_CRC != 0U)
2813#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2814 hspi->ErrorCallback(hspi);
2822#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2823 hspi->RxCpltCallback(hspi);
2839#if (USE_SPI_CRC != 0U)
2840 __IO uint32_t tmpreg = 0U;
2847 if ((hdma->
Instance->CR & DMA_SxCR_CIRC) != DMA_SxCR_CIRC)
2852#if (USE_SPI_CRC != 0U)
2857 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, SET, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
2862 tmpreg = READ_REG(hspi->
Instance->DR);
2869 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
2875 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2881#if (USE_SPI_CRC != 0U)
2893#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2894 hspi->ErrorCallback(hspi);
2902#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2903 hspi->TxRxCpltCallback(hspi);
2920#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2921 hspi->TxHalfCpltCallback(hspi);
2938#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2939 hspi->RxHalfCpltCallback(hspi);
2956#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2957 hspi->TxRxHalfCpltCallback(hspi);
2974 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN);
2979#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
2980 hspi->ErrorCallback(hspi);
2999#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3000 hspi->ErrorCallback(hspi);
3017 __IO uint32_t count;
3020 count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
3023 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_TXDMAEN);
3037 if (hspi->
hdmarx != NULL)
3064#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3065 hspi->AbortCpltCallback(hspi);
3089 CLEAR_BIT(hspi->
Instance->CR2, SPI_CR2_RXDMAEN);
3098 if (hspi->
hdmatx != NULL)
3125#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3126 hspi->AbortCpltCallback(hspi);
3148#if (USE_SPI_CRC != 0U)
3151 hspi->
RxISR = SPI_2linesRxISR_8BITCRC;
3161 SPI_CloseRxTx_ISR(hspi);
3166#if (USE_SPI_CRC != 0U)
3175 __IO uint8_t *ptmpreg8;
3176 __IO uint8_t tmpreg8 = 0;
3179 ptmpreg8 = (__IO uint8_t *)&hspi->
Instance->DR;
3181 tmpreg8 = *ptmpreg8;
3190 SPI_CloseRxTx_ISR(hspi);
3210#if (USE_SPI_CRC != 0U)
3214 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3226 SPI_CloseRxTx_ISR(hspi);
3246#if (USE_SPI_CRC != 0U)
3249 hspi->
RxISR = SPI_2linesRxISR_16BITCRC;
3259 SPI_CloseRxTx_ISR(hspi);
3264#if (USE_SPI_CRC != 0U)
3273 __IO uint32_t tmpreg = 0U;
3276 tmpreg = READ_REG(hspi->
Instance->DR);
3283 SPI_CloseRxTx_ISR(hspi);
3303#if (USE_SPI_CRC != 0U)
3307 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3319 SPI_CloseRxTx_ISR(hspi);
3324#if (USE_SPI_CRC != 0U)
3333 __IO uint8_t *ptmpreg8;
3334 __IO uint8_t tmpreg8 = 0;
3337 ptmpreg8 = (__IO uint8_t *)&hspi->
Instance->DR;
3339 tmpreg8 = *ptmpreg8;
3343 SPI_CloseRx_ISR(hspi);
3359#if (USE_SPI_CRC != 0U)
3363 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3369#if (USE_SPI_CRC != 0U)
3372 hspi->
RxISR = SPI_RxISR_8BITCRC;
3376 SPI_CloseRx_ISR(hspi);
3380#if (USE_SPI_CRC != 0U)
3389 __IO uint32_t tmpreg = 0U;
3392 tmpreg = READ_REG(hspi->
Instance->DR);
3399 SPI_CloseRx_ISR(hspi);
3415#if (USE_SPI_CRC != 0U)
3419 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3425#if (USE_SPI_CRC != 0U)
3428 hspi->
RxISR = SPI_RxISR_16BITCRC;
3432 SPI_CloseRx_ISR(hspi);
3450#if (USE_SPI_CRC != 0U)
3454 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3457 SPI_CloseTx_ISR(hspi);
3476#if (USE_SPI_CRC != 0U)
3480 SET_BIT(hspi->
Instance->CR1, SPI_CR1_CRCNEXT);
3483 SPI_CloseTx_ISR(hspi);
3498 uint32_t Timeout, uint32_t Tickstart)
3500 __IO uint32_t count;
3501 uint32_t tmp_timeout;
3502 uint32_t tmp_tickstart;
3505 tmp_timeout = Timeout - (
HAL_GetTick() - Tickstart);
3509 count = tmp_timeout * ((SystemCoreClock * 32U) >> 20U);
3515 if (((
HAL_GetTick() - tmp_tickstart) >= tmp_timeout) || (tmp_timeout == 0U))
3582 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_BSY, RESET, Timeout, Tickstart) !=
HAL_OK)
3591 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, RESET, Timeout, Tickstart) !=
HAL_OK)
3601 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_RXNE, RESET, Timeout, Tickstart) !=
HAL_OK)
3619 __IO uint32_t count;
3622 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_TXE, SET, Timeout, Tickstart) !=
HAL_OK)
3629 count = SPI_BSY_FLAG_WORKAROUND_TIMEOUT * (SystemCoreClock / 24U / 1000000U);
3634 if (SPI_WaitFlagStateUntilTimeout(hspi,
SPI_FLAG_BSY, RESET, Timeout, Tickstart) !=
HAL_OK)
3669 __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
3689 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
3700#if (USE_SPI_CRC != 0U)
3708#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3709 hspi->ErrorCallback(hspi);
3723#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3724 hspi->RxCpltCallback(hspi);
3733#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3734 hspi->TxRxCpltCallback(hspi);
3744#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3745 hspi->ErrorCallback(hspi);
3750#if (USE_SPI_CRC != 0U)
3779#if (USE_SPI_CRC != 0U)
3786#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3787 hspi->ErrorCallback(hspi);
3798#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3799 hspi->RxCpltCallback(hspi);
3807#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3808 hspi->ErrorCallback(hspi);
3813#if (USE_SPI_CRC != 0U)
3827 __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
3847 if (SPI_EndRxTxTransaction(hspi, SPI_DEFAULT_TIMEOUT, tickstart) !=
HAL_OK)
3862#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3863 hspi->ErrorCallback(hspi);
3871#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
3872 hspi->TxCpltCallback(hspi);
3887 __IO uint32_t tmpreg = 0U;
3888 __IO uint32_t count = SPI_DEFAULT_TIMEOUT * (SystemCoreClock / 24U / 1000U);
3905 CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXEIE | SPI_CR2_RXNEIE | SPI_CR2_ERRIE));
3908 tmpreg = READ_REG(hspi->
Instance->DR);
3924 CLEAR_BIT(hspi->
Instance->CR2, (SPI_CR2_TXEIE));
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
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_MspInit(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi)
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi)
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi)
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size)
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size)
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi)
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi)
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout)
HAL_SPI_StateTypeDef HAL_SPI_GetState(const SPI_HandleTypeDef *hspi)
uint32_t HAL_SPI_GetError(const SPI_HandleTypeDef *hspi)
#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.
struct __SPI_HandleTypeDef SPI_HandleTypeDef
SPI handle Structure definition.
@ HAL_SPI_STATE_BUSY_TX_RX
#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
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
volatile HAL_SPI_StateTypeDef State
volatile uint32_t ErrorCode
void(* TxISR)(struct __SPI_HandleTypeDef *hspi)
volatile uint16_t TxXferCount
void(* RxISR)(struct __SPI_HandleTypeDef *hspi)
volatile uint16_t RxXferCount
DMA_HandleTypeDef * hdmatx
const uint8_t * pTxBuffPtr