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;
562 if ((pTxData == NULL) || (pRxData == NULL) || (Size == 0U))
573 tmp1 = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
614 tmp1 = hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG;
619 tmp = (uint32_t *)&pRxData;
623 SET_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_RXDMAEN);
626 tmp = (uint32_t *)&pTxData;
630 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
642 tmp = (uint32_t *)&pTxData;
646 SET_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_TXDMAEN);
649 tmp = (uint32_t *)&pRxData;
653 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
658 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
661 __HAL_I2SEXT_ENABLE(hi2s);
676 __IO uint32_t i2ssr = hi2s->
Instance->SR;
677 __IO uint32_t i2sextsr = I2SxEXT(hi2s->
Instance)->SR;
678 __IO uint32_t i2scr2 = hi2s->
Instance->CR2;
679 __IO uint32_t i2sextcr2 = I2SxEXT(hi2s->
Instance)->CR2;
689 I2SEx_TxISR_I2S(hi2s);
697 I2SEx_RxISR_I2SExt(hi2s);
718#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
719 hi2s->ErrorCallback(hi2s);
743#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
744 hi2s->ErrorCallback(hi2s);
758 I2SEx_TxISR_I2SExt(hi2s);
766 I2SEx_RxISR_I2S(hi2s);
784#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
785 hi2s->ErrorCallback(hi2s);
806#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
807 hi2s->ErrorCallback(hi2s);
868#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
869 hi2s->TxRxHalfCpltCallback(hi2s);
871 HAL_I2SEx_TxRxHalfCpltCallback(hi2s);
892 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_RXDMAEN);
893 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
897 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
898 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_TXDMAEN);
908#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
909 hi2s->TxRxCpltCallback(hi2s);
911 HAL_I2SEx_TxRxCpltCallback(hi2s);
925 CLEAR_BIT(hi2s->
Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
926 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
936#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
937 hi2s->ErrorCallback(hi2s);
963#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
964 hi2s->TxRxCpltCallback(hi2s);
966 HAL_I2SEx_TxRxCpltCallback(hi2s);
992#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
993 hi2s->TxRxCpltCallback(hi2s);
995 HAL_I2SEx_TxRxCpltCallback(hi2s);
1021#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1022 hi2s->TxRxCpltCallback(hi2s);
1024 HAL_I2SEx_TxRxCpltCallback(hi2s);
1050#if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1051 hi2s->TxRxCpltCallback(hi2s);
1053 HAL_I2SEx_TxRxCpltCallback(hi2s);
1072 I2S_UseTypeDef i2sUsed)
1076 if (i2sUsed == I2S_USE_I2S)
1083 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1099 while (((__HAL_I2SEXT_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State)
1103 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)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
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)
struct __I2S_HandleTypeDef I2S_HandleTypeDef
I2S handle Structure definition.
@ 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__)
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
volatile uint16_t RxXferSize
volatile uint16_t TxXferSize
DMA_HandleTypeDef * hdmarx
volatile HAL_I2S_StateTypeDef State
DMA_HandleTypeDef * hdmatx
volatile uint32_t ErrorCode
volatile uint16_t TxXferCount
volatile uint16_t RxXferCount