146#ifdef HAL_SPI_MODULE_ENABLED
153#define SPI_DEFAULT_TIMEOUT 100UL
242 uint32_t packet_length;
243#if (USE_SPI_CRC != 0UL)
244 uint32_t crc_poly_msb_mask;
269#if (USE_SPI_CRC != 0UL)
289 packet_length = SPI_GetPacketSize(hspi);
296#if (USE_SPI_CRC != 0UL)
335#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
347 if (hspi->MspInitCallback ==
NULL)
353 hspi->MspInitCallback(hspi);
365#if (USE_SPI_CRC == 0)
405#if (USE_SPI_CRC != 0UL)
456#if (USE_SPI_CRC != 0UL)
465#if defined(SPI_I2SCFGR_I2SMOD)
505#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
506 if (hspi->MspDeInitCallback ==
NULL)
512 hspi->MspDeInitCallback(hspi);
559#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
572 pSPI_CallbackTypeDef pCallback)
576 if (pCallback ==
NULL)
579 hspi->
ErrorCode |= HAL_SPI_ERROR_INVALID_CALLBACK;
588 case HAL_SPI_TX_COMPLETE_CB_ID :
589 hspi->TxCpltCallback = pCallback;
592 case HAL_SPI_RX_COMPLETE_CB_ID :
593 hspi->RxCpltCallback = pCallback;
596 case HAL_SPI_TX_RX_COMPLETE_CB_ID :
597 hspi->TxRxCpltCallback = pCallback;
600 case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
601 hspi->TxHalfCpltCallback = pCallback;
604 case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
605 hspi->RxHalfCpltCallback = pCallback;
608 case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
609 hspi->TxRxHalfCpltCallback = pCallback;
612 case HAL_SPI_ERROR_CB_ID :
613 hspi->ErrorCallback = pCallback;
616 case HAL_SPI_ABORT_CB_ID :
617 hspi->AbortCpltCallback = pCallback;
620 case HAL_SPI_SUSPEND_CB_ID :
621 hspi->SuspendCallback = pCallback;
624 case HAL_SPI_MSPINIT_CB_ID :
625 hspi->MspInitCallback = pCallback;
628 case HAL_SPI_MSPDEINIT_CB_ID :
629 hspi->MspDeInitCallback = pCallback;
645 case HAL_SPI_MSPINIT_CB_ID :
646 hspi->MspInitCallback = pCallback;
649 case HAL_SPI_MSPDEINIT_CB_ID :
650 hspi->MspDeInitCallback = pCallback;
692 case HAL_SPI_TX_COMPLETE_CB_ID :
696 case HAL_SPI_RX_COMPLETE_CB_ID :
700 case HAL_SPI_TX_RX_COMPLETE_CB_ID :
704 case HAL_SPI_TX_HALF_COMPLETE_CB_ID :
708 case HAL_SPI_RX_HALF_COMPLETE_CB_ID :
712 case HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID :
716 case HAL_SPI_ERROR_CB_ID :
720 case HAL_SPI_ABORT_CB_ID :
724 case HAL_SPI_SUSPEND_CB_ID :
728 case HAL_SPI_MSPINIT_CB_ID :
732 case HAL_SPI_MSPDEINIT_CB_ID :
749 case HAL_SPI_MSPINIT_CB_ID :
753 case HAL_SPI_MSPDEINIT_CB_ID :
826#if defined (__GNUC__)
843 if ((pData ==
NULL) || (Size == 0UL))
906 SPI_CloseTransfer(hspi);
936#if defined (__GNUC__)
937 *ptxdr_16bits = *((
const uint16_t *)hspi->
pTxBuffPtr);
951 SPI_CloseTransfer(hspi);
980#if defined (__GNUC__)
981 *ptxdr_16bits = *((
const uint16_t *)hspi->
pTxBuffPtr);
1001 SPI_CloseTransfer(hspi);
1022 SPI_CloseTransfer(hspi);
1051 uint32_t temp_sr_reg;
1052 uint16_t init_max_data_in_fifo;
1054#if defined (__GNUC__)
1069 if ((pData ==
NULL) || (Size == 0UL))
1151 SPI_CloseTransfer(hspi);
1176#if defined (__GNUC__)
1177 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1187#if defined (__GNUC__)
1188 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1193#if defined (__GNUC__)
1194 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1204#if defined (__GNUC__)
1205 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1227 SPI_CloseTransfer(hspi);
1291 SPI_CloseTransfer(hspi);
1305#if (USE_SPI_CRC != 0UL)
1317 SPI_CloseTransfer(hspi);
1346 uint16_t Size, uint32_t Timeout)
1348#if defined (__GNUC__)
1354 uint32_t fifo_length;
1355 uint32_t temp_sr_reg;
1356 uint16_t initial_TxXferCount;
1357 uint16_t initial_RxXferCount;
1358 uint16_t init_max_data_in_fifo;
1367 initial_TxXferCount = Size;
1368 initial_RxXferCount = Size;
1375 if ((pTxData ==
NULL) || (pRxData ==
NULL) || (Size == 0UL))
1425 fifo_length = (fifo_length / 4UL);
1427 while ((initial_TxXferCount > 0UL) || (initial_RxXferCount > 0UL))
1431 (initial_RxXferCount < (initial_TxXferCount + fifo_length)))
1442 if (initial_RxXferCount > 0UL)
1453 else if ((initial_RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg &
SPI_SR_RXWNE_Msk) != 0UL))
1466 SPI_CloseTransfer(hspi);
1484 fifo_length = (fifo_length / 2UL);
1486 while ((initial_TxXferCount > 0UL) || (initial_RxXferCount > 0UL))
1490 (initial_RxXferCount < (initial_TxXferCount + fifo_length)))
1492#if defined (__GNUC__)
1493 *ptxdr_16bits = *((
const uint16_t *)hspi->
pTxBuffPtr);
1505 if (initial_RxXferCount > 0UL)
1510#if defined (__GNUC__)
1511 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1520 else if ((initial_RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg &
SPI_SR_RXWNE_Msk) != 0UL))
1522#if defined (__GNUC__)
1523 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1528#if defined (__GNUC__)
1529 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1538 else if ((initial_RxXferCount == 1UL) && ((temp_sr_reg &
SPI_SR_RXPLVL_0) != 0UL))
1540#if defined (__GNUC__)
1541 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
1555 SPI_CloseTransfer(hspi);
1572 while ((initial_TxXferCount > 0UL) || (initial_RxXferCount > 0UL))
1576 (initial_RxXferCount < (initial_TxXferCount + fifo_length)))
1587 if (initial_RxXferCount > 0UL)
1598 else if ((initial_RxXferCount < init_max_data_in_fifo) && ((temp_sr_reg &
SPI_SR_RXWNE_Msk) != 0UL))
1612 else if ((initial_RxXferCount < 4UL) && ((temp_sr_reg &
SPI_SR_RXPLVL_Msk) != 0UL))
1625 SPI_CloseTransfer(hspi);
1647 SPI_CloseTransfer(hspi);
1677 if ((pData ==
NULL) || (Size == 0UL))
1703#if defined(USE_SPI_RELOAD_TRANSFER)
1704 hspi->Reload.Requested = 0UL;
1712 hspi->
TxISR = SPI_TxISR_32BIT;
1716 hspi->
TxISR = SPI_TxISR_16BIT;
1720 hspi->
TxISR = SPI_TxISR_8BIT;
1772 if ((pData ==
NULL) || (Size == 0UL))
1793#if defined(USE_SPI_RELOAD_TRANSFER)
1794 hspi->Reload.Requested = 0UL;
1802 hspi->
RxISR = SPI_RxISR_32BIT;
1806 hspi->
RxISR = SPI_RxISR_16BIT;
1810 hspi->
RxISR = SPI_RxISR_8BIT;
1860 uint32_t tmp_TxXferCount;
1861#if defined (__GNUC__)
1873 if ((pTxData ==
NULL) || (pRxData ==
NULL) || (Size == 0UL))
1892#if defined(USE_SPI_RELOAD_TRANSFER)
1893 hspi->Reload.Requested = 0UL;
1903 hspi->
TxISR = SPI_TxISR_32BIT;
1904 hspi->
RxISR = SPI_RxISR_32BIT;
1908 hspi->
RxISR = SPI_RxISR_16BIT;
1909 hspi->
TxISR = SPI_TxISR_16BIT;
1913 hspi->
RxISR = SPI_RxISR_8BIT;
1914 hspi->
TxISR = SPI_TxISR_8BIT;
1940#if defined (__GNUC__)
1941 *ptxdr_16bits = *((
const uint16_t *)hspi->
pTxBuffPtr);
1975#if defined(USE_SPI_RELOAD_TRANSFER)
1987 if ((hspi->Reload.Requested == 1UL) || (pData ==
NULL) || (Size == 0UL))
2001 hspi->Reload.Requested = 1UL;
2002 hspi->Reload.
pTxBuffPtr = (
const uint8_t *)pData;
2017#if defined(USE_SPI_RELOAD_TRANSFER)
2029 if ((hspi->Reload.Requested == 1UL) || (pData ==
NULL) || (Size == 0UL))
2043 hspi->Reload.Requested = 1UL;
2059#if defined(USE_SPI_RELOAD_TRANSFER)
2070 uint8_t *pRxData, uint16_t Size)
2073 if ((hspi->Reload.Requested == 1UL) || (pTxData ==
NULL) || (pRxData ==
NULL) || (Size == 0UL))
2087 hspi->Reload.Requested = 1UL;
2088 hspi->Reload.
pTxBuffPtr = (
const uint8_t *)pTxData;
2090 hspi->Reload.
pRxBuffPtr = (uint8_t *)pRxData;
2124 if ((pData ==
NULL) || (Size == 0UL))
2271 if ((pData ==
NULL) || (Size == 0UL))
2418 if ((pTxData ==
NULL) || (pRxData ==
NULL) || (Size == 0UL))
2689 SPI_AbortTransfer(hspi);
2731 uint32_t dma_tx_abort_done = 1UL;
2732 uint32_t dma_rx_abort_done = 1UL;
2800 dma_tx_abort_done = 0UL;
2807 dma_tx_abort_done = 1UL;
2825 dma_rx_abort_done = 0UL;
2832 dma_rx_abort_done = 1UL;
2844 if ((dma_tx_abort_done == 1UL) && (dma_rx_abort_done == 1UL))
2847 SPI_AbortTransfer(hspi);
2865#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
2866 hspi->AbortCpltCallback(hspi);
2930 uint32_t trigger = itsource & itflag;
2932 uint32_t handled = 0UL;
2935#if defined (__GNUC__)
2946#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
2947 hspi->SuspendCallback(hspi);
2979#if defined(USE_SPI_RELOAD_TRANSFER)
3018#if defined (__GNUC__)
3019 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
3037 SPI_CloseTransfer(hspi);
3042#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3043 hspi->ErrorCallback(hspi);
3050#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3054 hspi->TxRxCpltCallback(hspi);
3058 hspi->RxCpltCallback(hspi);
3062 hspi->TxCpltCallback(hspi);
3162#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3163 hspi->ErrorCallback(hspi);
3388#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3389 hspi->TxCpltCallback(hspi);
3416#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3417 hspi->RxCpltCallback(hspi);
3444#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3445 hspi->TxRxCpltCallback(hspi);
3469#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3470 hspi->TxHalfCpltCallback(hspi);
3487#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3488 hspi->RxHalfCpltCallback(hspi);
3505#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3506 hspi->TxRxHalfCpltCallback(hspi);
3526 SPI_CloseTransfer(hspi);
3530#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3531 hspi->ErrorCallback(hspi);
3553#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3554 hspi->ErrorCallback(hspi);
3584 SPI_AbortTransfer(hspi);
3590#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3591 hspi->AbortCpltCallback(hspi);
3621 SPI_AbortTransfer(hspi);
3627#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1UL)
3628 hspi->AbortCpltCallback(hspi);
3650#if defined(USE_SPI_RELOAD_TRANSFER)
3652 if (hspi->Reload.Requested == 1UL)
3657 hspi->Reload.Requested = 0UL;
3681#if defined (__GNUC__)
3684 *((uint16_t *)hspi->
pRxBuffPtr) = *prxdr_16bits;
3694#if defined(USE_SPI_RELOAD_TRANSFER)
3696 if (hspi->Reload.Requested == 1UL)
3701 hspi->Reload.Requested = 0UL;
3732#if defined(USE_SPI_RELOAD_TRANSFER)
3734 if (hspi->Reload.Requested == 1UL)
3739 hspi->Reload.Requested = 0UL;
3772#if defined(USE_SPI_RELOAD_TRANSFER)
3774 if (hspi->Reload.Requested == 1UL)
3783 hspi->Reload.Requested = 0UL;
3809#if defined (__GNUC__)
3812 *ptxdr_16bits = *((
const uint16_t *)hspi->
pTxBuffPtr);
3822#if defined(USE_SPI_RELOAD_TRANSFER)
3824 if (hspi->Reload.Requested == 1UL)
3833 hspi->Reload.Requested = 0UL;
3866#if defined(USE_SPI_RELOAD_TRANSFER)
3868 if (hspi->Reload.Requested == 1UL)
3877 hspi->Reload.Requested = 0UL;
3921#if (USE_SPI_CRC != 0U)
3973#if (USE_SPI_CRC != 0UL)
4015 uint32_t Timeout, uint32_t Tickstart)
4041 data_size = (data_size + 7UL) / 8UL;
4043 return data_size * fifo_threashold;
#define __IO
Defines 'read / write' permissions.
#define HAL_DMA_ERROR_FE
FIFO error.
#define HAL_DMA_ERROR_TIMEOUT
Timeout error.
#define HAL_DMA_ERROR_NO_XFER
Abort requested with no Xfer ongoing.
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)
uint32_t HAL_DMA_GetError(const DMA_HandleTypeDef *hdma)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
#define DMA_MDATAALIGN_HALFWORD
Memory data alignment: HalfWord.
#define DMA_MDATAALIGN_WORD
Memory data alignment: Word.
#define DMA_CIRCULAR
Circular mode.
#define CLEAR_BIT(REG, BIT)
#define SET_BIT(REG, BIT)
#define WRITE_REG(REG, VAL)
#define IS_SPI_ALL_INSTANCE(INSTANCE)
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define IS_SPI_HIGHEND_INSTANCE(INSTANCE)
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define SPI_CR1_CSTART
Master transfer start.
#define SPI_SR_SUSP
SUSP is set by hardware.
#define SPI_CR1_SSI
Internal SS signal input level.
#define SPI_CR2_TSER
Number of data transfer extension.
#define SPI_CFG1_CRCSIZE_Pos
#define SPI_CFG1_UDRDET_0
0x00000800
#define SPI_SR_RXPLVL_0
0x00002000
#define SPI_CFG1_UDRCFG_1
0x00000400
#define SPI_CFG1_RXDMAEN
Rx DMA stream enable.
#define SPI_CR1_CRC33_17
32-bit CRC polynomial configuration
#define SPI_CR1_RCRCINI
CRC init pattern control for receiver.
#define SPI_CR1_TCRCINI
CRC init pattern control for transmitter.
#define SPI_CFG1_DSIZE_Pos
#define SPI_CFG1_UDRDET
UDRDET[1:0]: Detection of underrun condition.
#define SPI_CR1_CSUSP
Master SUSPend request.
#define SPI_CFG1_TXDMAEN
Tx DMA stream enable.
#define SPI_CFG1_FTHLV_Pos
#define SPI_CFG1_CRCSIZE
CRCSIZE [4:0]: Length of CRC frame.
#define SPI_SR_RXPLVL_Msk
0x00006000
#define SPI_SR_RXWNE_Msk
0x00008000
#define SPI_CR1_MASRX
Master automatic SUSP in Receive mode.
#define SPI_I2SCFGR_I2SMOD
I2S mode selection.
#define SPI_CFG2_AFCNTR
Alternate function GPIOs control.
#define SPI_CR2_TSIZE
Number of data at current transfer.
#define SPI_CFG1_UDRCFG
UDRCFG[1:0]: Behavior of transmitter at underrun.
#define SPI_CRC_INITIALIZATION_ALL_ONE_PATTERN
#define SPI_CRCCALCULATION_ENABLE
#define SPI_CRCCALCULATION_DISABLE
#define SPI_CRC_LENGTH_DATASIZE
#define SPI_CRC_LENGTH_16BIT
#define SPI_CRC_LENGTH_32BIT
#define SPI_DATASIZE_8BIT
#define SPI_DATASIZE_16BIT
#define SPI_DIRECTION_1LINE
#define HAL_SPI_ERROR_NOT_SUPPORTED
Requested operation not supported.
#define HAL_SPI_ERROR_UDR
Underrun error.
#define HAL_SPI_ERROR_TIMEOUT
Timeout error.
#define HAL_SPI_ERROR_MODF
MODF error.
#define HAL_SPI_ERROR_FLAG
Error on RXP/TXP/DXP/FTLVL/FRLVL Flag.
#define HAL_SPI_ERROR_OVR
OVR error.
#define HAL_SPI_ERROR_NONE
No error.
#define HAL_SPI_ERROR_DMA
DMA transfer error.
#define HAL_SPI_ERROR_ABORT
Error during SPI Abort procedure.
#define HAL_SPI_ERROR_CRC
CRC error.
#define HAL_SPI_ERROR_FRE
FRE error.
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
SPI MSP Initialization This function configures the hardware resources used in this example.
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi)
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi)
SPI MSP De-Initialization This function freeze the hardware resources used in this example.
HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi)
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
void HAL_SPI_SuspendCallback(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_SUSPFLAG(__HANDLE__)
Clear the SPI SUSP pending flag.
#define __HAL_SPI_CLEAR_UDRFLAG(__HANDLE__)
Clear the SPI UDR pending flag.
#define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__)
Clear the SPI FRE pending flag.
#define __HAL_SPI_CLEAR_EOTFLAG(__HANDLE__)
Clear the SPI EOT pending flag.
#define __HAL_SPI_CLEAR_TSERFFLAG(__HANDLE__)
Clear the SPI TSERF 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_TXTFFLAG(__HANDLE__)
Clear the SPI UDR pending flag.
#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
an internal process is ongoing
@ HAL_SPI_STATE_ABORT
SPI abort is ongoing.
@ HAL_SPI_STATE_BUSY_TX
Data Transmission process is ongoing.
@ HAL_SPI_STATE_BUSY_TX_RX
Data Transmission and Reception process is ongoing.
@ HAL_SPI_STATE_READY
Peripheral Initialized and ready for use.
@ HAL_SPI_STATE_RESET
Peripheral not Initialized.
@ HAL_SPI_STATE_BUSY_RX
Data Reception process is ongoing.
#define SPI_HIGHEND_FIFO_SIZE
#define SPI_LOWEND_FIFO_SIZE
#define SPI_FIFO_THRESHOLD_01DATA
#define SPI_FIFO_THRESHOLD_03DATA
#define SPI_NSS_POLARITY_LOW
#define SPI_NSS_POLARITY_HIGH
#define IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_TXONLY(MODE)
#define SPI_2LINES_TX(__HANDLE__)
Set the SPI transmit-only mode in 2Lines configuration.
#define SPI_2LINES_RX(__HANDLE__)
Set the SPI receive-only mode in 2Lines configuration.
#define IS_SPI_CRC_LENGTH(LENGTH)
#define IS_SPI_FIFOTHRESHOLD(THRESHOLD)
#define SPI_2LINES(__HANDLE__)
Set the SPI Transmit-Receive mode in 2Lines configuration.
#define IS_SPI_CPHA(CPHA)
#define IS_SPI_CRC_POLYNOMIAL(POLYNOMIAL)
#define IS_SPI_DIRECTION_2LINES(MODE)
#define IS_SPI_TIMODE(MODE)
#define IS_SPI_DIRECTION(MODE)
#define IS_SPI_CRC_CALCULATION(CALCULATION)
#define IS_SPI_NSSP(NSSP)
#define IS_SPI_CRC_POLYNOMIAL_SIZE(POLYNOM, LENGTH)
#define SPI_1LINE_RX(__HANDLE__)
Set the SPI receive-only mode in 1Line configuration.
#define IS_SPI_DATASIZE(DATASIZE)
#define IS_SPI_FIRST_BIT(BIT)
#define IS_SPI_DIRECTION_2LINES_OR_1LINE_2LINES_RXONLY(MODE)
#define IS_SPI_CRC_INITIALIZATION_PATTERN(PATTERN)
#define IS_SPI_MODE(MODE)
#define SPI_1LINE_TX(__HANDLE__)
Set the SPI transmit-only mode in 1Line configuration.
#define IS_SPI_BAUDRATE_PRESCALER(PRESCALER)
#define IS_SPI_CPOL(CPOL)
#define SPI_TIMODE_DISABLE
uint32_t SystemCoreClock
System Domain1 Clock Frequency.
size_type count(const key_type &key) const
This file contains all the functions prototypes for the HAL module driver.
#define assert_param(expr)
Uncomment the line below to expanse the "assert_param" macro in the HAL drivers code.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define HAL_IS_BIT_CLR(REG, BIT)
#define __HAL_LOCK(__HANDLE__)
uint32_t MemDataAlignment
Specifies the Memory data width.
uint32_t Mode
Specifies the operation mode of the DMAy Streamx.
uint32_t RxCRCInitializationPattern
Specifies the receiver CRC initialization Pattern used for the CRC calculation.
uint32_t MasterReceiverAutoSusp
Control continuous SPI transfer in master receiver mode and automatic management in order to avoid ov...
uint32_t MasterSSIdleness
Specifies an extra delay, expressed in number of SPI clock cycle periods, inserted additionally betwe...
uint32_t BaudRatePrescaler
Specifies the Baud Rate prescaler value which will be used to configure the transmit and receive SCK ...
uint32_t MasterKeepIOState
Control of Alternate function GPIOs state This parameter can be a value of Keep IO State.
uint32_t DataSize
Specifies the SPI data size.
uint32_t CRCCalculation
Specifies if the CRC calculation is enabled or not.
uint32_t Mode
Specifies the SPI operating mode.
uint32_t TIMode
Specifies if the TI mode is enabled or not.
uint32_t FifoThreshold
Specifies the FIFO threshold level.
uint32_t FirstBit
Specifies whether data transfers start from MSB or LSB bit.
uint32_t CLKPolarity
Specifies the serial clock steady state.
uint32_t MasterInterDataIdleness
Specifies minimum time delay (expressed in SPI clock cycles periods) inserted between two consecutive...
uint32_t NSSPMode
Specifies whether the NSSP signal is enabled or not .
uint32_t CLKPhase
Specifies the clock active edge for the bit capture.
uint32_t CRCPolynomial
Specifies the polynomial used for the CRC calculation.
uint32_t TxCRCInitializationPattern
Specifies the transmitter CRC initialization Pattern used for the CRC calculation.
uint32_t CRCLength
Specifies the CRC Length used for the CRC calculation.
uint32_t NSSPolarity
Specifies which level of SS input/output external signal (present on SS pin) is considered as active ...
uint32_t Direction
Specifies the SPI bidirectional mode state.
uint32_t NSS
Specifies whether the NSS signal is managed by hardware (NSS pin) or by software using the SSI bit.
uint32_t IOSwap
Invert MISO/MOSI alternate functions This parameter can be a value of Control SPI IO Swap.
__IO uint32_t RXDR
SPI/I2S Receive data register, Address offset: 0x30.
__IO uint32_t CRCPOLY
SPI CRC Polynomial register, Address offset: 0x40.
__IO uint32_t CFG1
SPI Configuration register 1, Address offset: 0x08.
__IO uint32_t SR
SPI/I2S Status register, Address offset: 0x14.
__IO uint32_t CR2
SPI Control register 2, Address offset: 0x04.
__IO uint32_t I2SCFGR
I2S Configuration register, Address offset: 0x50.
__IO uint32_t TXDR
SPI/I2S Transmit data register, Address offset: 0x20.
__IO uint32_t CR1
SPI/I2S Control register 1, Address offset: 0x00.
__IO uint32_t CFG2
SPI Configuration register 2, Address offset: 0x0C.
__IO uint32_t IER
SPI/I2S Interrupt Enable register, Address offset: 0x10.
void(* XferAbortCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer Abort callback.
DMA_InitTypeDef Init
DMA communication parameters.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer error callback.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA Half transfer complete callback.
DMA_HandleTypeDef * hdmarx
SPI Rx DMA Handle parameters.
__IO uint16_t TxXferCount
SPI Tx Transfer Counter.
void(* TxISR)(struct __SPI_HandleTypeDef *hspi)
function pointer on Tx ISR
SPI_InitTypeDef Init
SPI communication parameters.
uint16_t TxXferSize
SPI Tx Transfer size.
void(* RxISR)(struct __SPI_HandleTypeDef *hspi)
function pointer on Rx ISR
__IO uint16_t RxXferCount
SPI Rx Transfer Counter.
SPI_TypeDef * Instance
SPI registers base address.
HAL_LockTypeDef Lock
Locking object.
DMA_HandleTypeDef * hdmatx
SPI Tx DMA Handle parameters.
__IO HAL_SPI_StateTypeDef State
SPI communication state.
uint8_t * pRxBuffPtr
Pointer to SPI Rx transfer Buffer.
const uint8_t * pTxBuffPtr
Pointer to SPI Tx transfer Buffer.
__IO uint32_t ErrorCode
SPI Error code.
uint16_t RxXferSize
SPI Rx Transfer size.