95#ifdef HAL_I2S_MODULE_ENABLED
102#if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
111 I2S_USE_I2SEXT = 0x01U,
134 I2S_UseTypeDef i2sUsed);
219 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
227 tmp1 = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
251 tmp1 = hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG;
260 __HAL_I2SEXT_ENABLE(hi2s);
270 __HAL_I2SEXT_CLEAR_OVRFLAG(hi2s);
278 if (I2SEx_FullDuplexWaitFlagStateUntilTimeout(hi2s,
I2S_FLAG_TXE, SET, Timeout, I2S_USE_I2S) !=
HAL_OK)
305 if (I2SEx_FullDuplexWaitFlagStateUntilTimeout(hi2s,
I2S_FLAG_RXNE, SET, Timeout, I2S_USE_I2SEXT) !=
HAL_OK)
316 (*pRxData++) = I2SxEXT(hi2s->
Instance)->DR;
335 I2SxEXT(hi2s->
Instance)->DR = (*pTxData++);
339 __HAL_I2SEXT_ENABLE(hi2s);
357 if (I2SEx_FullDuplexWaitFlagStateUntilTimeout(hi2s,
I2S_FLAG_TXE, SET, Timeout, I2S_USE_I2SEXT) !=
HAL_OK)
368 I2SxEXT(hi2s->
Instance)->DR = (*pTxData++);
384 if (I2SEx_FullDuplexWaitFlagStateUntilTimeout(hi2s,
I2S_FLAG_RXNE, SET, Timeout, I2S_USE_I2S) !=
HAL_OK)
451 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
462 tmp1 = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
525 __HAL_I2SEXT_ENABLE(hi2s);
553 uint32_t *tmp = NULL;
561 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
572 tmp1 = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
613 tmp1 = hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG;
618 tmp = (uint32_t *)&pRxData;
622 SET_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_RXDMAEN);
625 tmp = (uint32_t *)&pTxData;
629 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
641 tmp = (uint32_t *)&pTxData;
645 SET_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_TXDMAEN);
648 tmp = (uint32_t *)&pRxData;
652 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
657 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
660 __HAL_I2SEXT_ENABLE(hi2s);
675 __IO uint32_t i2ssr = hi2s->
Instance->SR;
676 __IO uint32_t i2sextsr = I2SxEXT(hi2s->
Instance)->SR;
677 __IO uint32_t i2scr2 = hi2s->
Instance->CR2;
678 __IO uint32_t i2sextcr2 = I2SxEXT(hi2s->
Instance)->CR2;
688 I2SEx_TxISR_I2S(hi2s);
696 I2SEx_RxISR_I2SExt(hi2s);
717#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
718 hi2s->ErrorCallback(hi2s);
742#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
743 hi2s->ErrorCallback(hi2s);
757 I2SEx_TxISR_I2SExt(hi2s);
765 I2SEx_RxISR_I2S(hi2s);
783#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
784 hi2s->ErrorCallback(hi2s);
805#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
806 hi2s->ErrorCallback(hi2s);
867#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
868 hi2s->TxRxHalfCpltCallback(hi2s);
870 HAL_I2SEx_TxRxHalfCpltCallback(hi2s);
891 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_RXDMAEN);
892 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
896 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
897 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_TXDMAEN);
907#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
908 hi2s->TxRxCpltCallback(hi2s);
910 HAL_I2SEx_TxRxCpltCallback(hi2s);
924 CLEAR_BIT(hi2s->
Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
925 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
935#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
936 hi2s->ErrorCallback(hi2s);
962#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
963 hi2s->TxRxCpltCallback(hi2s);
965 HAL_I2SEx_TxRxCpltCallback(hi2s);
991#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
992 hi2s->TxRxCpltCallback(hi2s);
994 HAL_I2SEx_TxRxCpltCallback(hi2s);
1020#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1021 hi2s->TxRxCpltCallback(hi2s);
1023 HAL_I2SEx_TxRxCpltCallback(hi2s);
1049#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1050 hi2s->TxRxCpltCallback(hi2s);
1052 HAL_I2SEx_TxRxCpltCallback(hi2s);
1071 I2S_UseTypeDef i2sUsed)
1075 if (i2sUsed == I2S_USE_I2S)
1082 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1098 while (((__HAL_I2SEXT_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State)
1102 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
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 HAL_I2S_ERROR_UDR
#define HAL_I2S_ERROR_NONE
#define HAL_I2S_ERROR_DMA
#define HAL_I2S_ERROR_TIMEOUT
#define HAL_I2S_ERROR_OVR
void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
I2S error callbacks.
@ HAL_I2S_STATE_BUSY_TX_RX
#define __HAL_I2S_ENABLE(__HANDLE__)
Enable the specified SPI peripheral (in I2S mode).
#define __HAL_I2S_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the specified I2S interrupts.
#define __HAL_I2S_GET_FLAG(__HANDLE__, __FLAG__)
Checks whether the specified I2S flag is set or not.
#define __HAL_I2S_CLEAR_OVRFLAG(__HANDLE__)
Clears the I2S OVR pending flag.
#define __HAL_I2S_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the specified I2S interrupts.
#define __HAL_I2S_CLEAR_UDRFLAG(__HANDLE__)
Clears the I2S UDR pending flag.
#define I2S_MODE_SLAVE_RX
#define I2S_MODE_MASTER_TX
#define I2S_MODE_SLAVE_TX
#define I2S_MODE_MASTER_RX
This file contains all the functions prototypes for the HAL module driver.
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
I2S handle Structure definition.
__IO uint16_t RxXferCount
DMA_HandleTypeDef * hdmarx
__IO uint16_t TxXferCount
DMA_HandleTypeDef * hdmatx
__IO HAL_I2S_StateTypeDef State