189 #ifdef HAL_I2S_MODULE_ENABLED
202 #define I2S_TIMEOUT_FLAG 100U
217 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(
I2S_HandleTypeDef *hi2s, uint32_t Flag, FlagStatus State,
269 uint32_t packetlength;
272 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
283 assert_param(IS_I2S_ALL_INSTANCE(hi2s->
Instance));
284 assert_param(IS_I2S_MODE(hi2s->
Init.
Mode));
289 assert_param(IS_I2S_CPOL(hi2s->
Init.
CPOL));
295 hi2s->
Lock = HAL_UNLOCKED;
300 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
304 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
309 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
331 CLEAR_BIT(hi2s->
Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \
332 SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC | SPI_I2SCFGR_I2SCFG | \
333 SPI_I2SCFGR_I2SE | SPI_I2SCFGR_I2SMOD));
356 packetlength = packetlength * 2U;
360 #if defined(I2S_APB1_APB2_FEATURE)
361 if (IS_I2S_APB1_INSTANCE(hi2s->
Instance))
379 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->
Init.
AudioFreq)) + 5U);
383 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->
Init.
AudioFreq)) + 5U);
389 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->
Init.
AudioFreq)) + 5U);
396 i2sodd = (uint32_t)(tmp & (uint32_t)1U);
399 i2sdiv = (uint32_t)((tmp - i2sodd) / 2U);
402 i2sodd = (uint32_t)(i2sodd << 8U);
412 if ((i2sdiv < 2U) || (i2sdiv > 0xFFU))
415 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_PRESCALER);
422 hi2s->
Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->
Init.
MCLKOutput));
426 MODIFY_REG(hi2s->
Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \
427 SPI_I2SCFGR_CKPOL | SPI_I2SCFGR_I2SSTD | \
428 SPI_I2SCFGR_PCMSYNC | SPI_I2SCFGR_I2SCFG | \
429 SPI_I2SCFGR_I2SE | SPI_I2SCFGR_I2SMOD), \
430 (SPI_I2SCFGR_I2SMOD | hi2s->
Init.
Mode | \
434 #if defined(SPI_I2SCFGR_ASTRTEN)
438 SET_BIT(hi2s->
Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN);
442 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
453 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \
454 SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC | SPI_I2SCFGR_I2SCFG | \
455 SPI_I2SCFGR_I2SE | SPI_I2SCFGR_I2SMOD));
456 I2SxEXT(hi2s->
Instance)->I2SPR = 2U;
459 tmpreg = I2SxEXT(hi2s->
Instance)->I2SCFGR;
462 if ((hi2s->
Init.
Mode == I2S_MODE_MASTER_TX) || (hi2s->
Init.
Mode == I2S_MODE_SLAVE_TX))
464 tmp = I2S_MODE_SLAVE_RX;
468 tmp = I2S_MODE_SLAVE_TX;
472 tmpreg |= (uint16_t)((uint16_t)SPI_I2SCFGR_I2SMOD | \
479 WRITE_REG(I2SxEXT(hi2s->
Instance)->I2SCFGR, tmpreg);
504 assert_param(IS_I2S_ALL_INSTANCE(hi2s->
Instance));
509 __HAL_I2S_DISABLE(hi2s);
511 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
565 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
578 HAL_StatusTypeDef status = HAL_OK;
580 if (pCallback == NULL)
583 hi2s->
ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK;
602 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
616 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
636 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
657 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
667 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
688 HAL_StatusTypeDef status = HAL_OK;
705 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
719 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
739 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
760 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
770 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK);
844 uint32_t tmpreg_cfgr;
846 if ((pData == NULL) || (Size == 0U))
864 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
866 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
877 tmpreg_cfgr = hi2s->
Instance->I2SCFGR;
880 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
883 __HAL_I2S_ENABLE(hi2s);
887 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK)
890 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
903 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK)
906 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
913 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_UDR) == SET)
916 __HAL_I2S_CLEAR_UDRFLAG(hi2s);
919 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_UDR);
924 if (((tmpreg_cfgr & SPI_I2SCFGR_I2SCFG) == I2S_MODE_SLAVE_TX)
925 || ((tmpreg_cfgr & SPI_I2SCFGR_I2SCFG) == I2S_MODE_SLAVE_RX))
928 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, Timeout) != HAL_OK)
931 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
962 uint32_t tmpreg_cfgr;
964 if ((pData == NULL) || (Size == 0U))
982 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
984 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
996 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
999 __HAL_I2S_ENABLE(hi2s);
1003 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX)
1007 __HAL_I2S_CLEAR_OVRFLAG(hi2s);
1014 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK)
1017 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
1028 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET)
1031 __HAL_I2S_CLEAR_OVRFLAG(hi2s);
1034 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_OVR);
1059 uint32_t tmpreg_cfgr;
1061 if ((pData == NULL) || (Size == 0U))
1079 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
1081 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
1095 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR));
1098 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
1101 __HAL_I2S_ENABLE(hi2s);
1125 uint32_t tmpreg_cfgr;
1127 if ((pData == NULL) || (Size == 0U))
1145 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
1147 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
1161 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR));
1164 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE)
1167 __HAL_I2S_ENABLE(hi2s);
1189 uint32_t tmpreg_cfgr;
1191 if ((pData == NULL) || (Size == 0U))
1209 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
1211 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
1238 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1248 if (HAL_IS_BIT_CLR(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN))
1251 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
1255 if (HAL_IS_BIT_CLR(hi2s->
Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
1258 __HAL_I2S_ENABLE(hi2s);
1280 uint32_t tmpreg_cfgr;
1282 if ((pData == NULL) || (Size == 0U))
1300 tmpreg_cfgr = hi2s->
Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN);
1302 if ((tmpreg_cfgr == I2S_DATAFORMAT_24B) || (tmpreg_cfgr == I2S_DATAFORMAT_32B))
1323 if ((hi2s->
Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX)
1327 __HAL_I2S_CLEAR_OVRFLAG(hi2s);
1335 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1345 if (HAL_IS_BIT_CLR(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN))
1348 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
1352 if (HAL_IS_BIT_CLR(hi2s->
Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
1355 __HAL_I2S_ENABLE(hi2s);
1375 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
1380 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
1382 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1386 CLEAR_BIT(hi2s->
Instance->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN));
1387 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, (SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN));
1415 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
1420 SET_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
1422 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1426 SET_BIT(hi2s->
Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
1427 SET_BIT(I2SxEXT(hi2s->
Instance)->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
1430 if ((I2SxEXT(hi2s->
Instance)->I2SCFGR & SPI_I2SCFGR_I2SE) == 0U)
1433 __HAL_I2SEXT_ENABLE(hi2s);
1443 if (HAL_IS_BIT_CLR(hi2s->
Instance->I2SCFGR, SPI_I2SCFGR_I2SE))
1446 __HAL_I2S_ENABLE(hi2s);
1463 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1466 HAL_StatusTypeDef errorcode = HAL_OK;
1473 if ((hi2s->
Init.
Mode == I2S_MODE_MASTER_TX) || (hi2s->
Init.
Mode == I2S_MODE_SLAVE_TX))
1476 if (hi2s->
hdmatx != NULL)
1481 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1482 errorcode = HAL_ERROR;
1487 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, I2S_TIMEOUT_FLAG) != HAL_OK)
1490 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
1492 errorcode = HAL_ERROR;
1496 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK)
1499 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
1501 errorcode = HAL_ERROR;
1505 __HAL_I2S_DISABLE(hi2s);
1508 __HAL_I2S_CLEAR_UDRFLAG(hi2s);
1511 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
1513 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1518 if (hi2s->
hdmarx != NULL)
1523 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1524 errorcode = HAL_ERROR;
1529 __HAL_I2SEXT_DISABLE(hi2s);
1532 __HAL_I2SEXT_CLEAR_OVRFLAG(hi2s);
1535 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_RXDMAEN);
1537 if (hi2s->
Init.
Mode == I2S_MODE_SLAVE_TX)
1540 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX);
1544 errorcode = HAL_ERROR;
1549 READ_REG(I2SxEXT(hi2s->
Instance)->DR);
1555 else if ((hi2s->
Init.
Mode == I2S_MODE_MASTER_RX) || (hi2s->
Init.
Mode == I2S_MODE_SLAVE_RX))
1558 if (hi2s->
hdmarx != NULL)
1563 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1564 errorcode = HAL_ERROR;
1567 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1572 if (hi2s->
hdmatx != NULL)
1577 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1578 errorcode = HAL_ERROR;
1585 while (__HAL_I2SEXT_GET_FLAG(hi2s, I2S_FLAG_TXE) != SET)
1587 if (((
HAL_GetTick() - tickstart) > I2S_TIMEOUT_FLAG))
1590 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
1594 errorcode = HAL_ERROR;
1599 while (__HAL_I2SEXT_GET_FLAG(hi2s, I2S_FLAG_BSY) != RESET)
1601 if (((
HAL_GetTick() - tickstart) > I2S_TIMEOUT_FLAG))
1604 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_TIMEOUT);
1608 errorcode = HAL_ERROR;
1613 __HAL_I2SEXT_DISABLE(hi2s);
1616 __HAL_I2SEXT_CLEAR_UDRFLAG(hi2s);
1619 CLEAR_BIT(I2SxEXT(hi2s->
Instance)->CR2, SPI_CR2_TXDMAEN);
1624 __HAL_I2S_DISABLE(hi2s);
1627 __HAL_I2S_CLEAR_OVRFLAG(hi2s);
1630 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
1632 if (hi2s->
Init.
Mode == I2S_MODE_SLAVE_RX)
1635 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX);
1639 errorcode = HAL_ERROR;
1807 if (hdma->
Init.Mode == DMA_NORMAL)
1810 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_TXDMAEN);
1816 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1834 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1852 if (hdma->
Init.Mode == DMA_NORMAL)
1855 CLEAR_BIT(hi2s->
Instance->CR2, SPI_CR2_RXDMAEN);
1860 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1878 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1896 CLEAR_BIT(hi2s->
Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN));
1903 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_DMA);
1905 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1928 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR));
1932 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1956 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR));
1960 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1976 __IO uint32_t i2ssr = hi2s->
Instance->SR;
1981 if (((i2ssr & I2S_FLAG_RXNE) == I2S_FLAG_RXNE) && (__HAL_I2S_GET_IT_SOURCE(hi2s, I2S_IT_RXNE) != RESET))
1983 I2S_Receive_IT(hi2s);
1987 if (((i2ssr & I2S_FLAG_OVR) == I2S_FLAG_OVR) && (__HAL_I2S_GET_IT_SOURCE(hi2s, I2S_IT_ERR) != RESET))
1990 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR));
1993 __HAL_I2S_CLEAR_OVRFLAG(hi2s);
2000 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_OVR);
2002 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
2013 if (((i2ssr & I2S_FLAG_TXE) == I2S_FLAG_TXE) && (__HAL_I2S_GET_IT_SOURCE(hi2s, I2S_IT_TXE) != RESET))
2015 I2S_Transmit_IT(hi2s);
2019 if (((i2ssr & I2S_FLAG_UDR) == I2S_FLAG_UDR) && (__HAL_I2S_GET_IT_SOURCE(hi2s, I2S_IT_ERR) != RESET))
2022 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR));
2025 __HAL_I2S_CLEAR_UDRFLAG(hi2s);
2031 SET_BIT(hi2s->
ErrorCode, HAL_I2S_ERROR_UDR);
2033 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
2051 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(
I2S_HandleTypeDef *hi2s, uint32_t Flag, FlagStatus State,
2060 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State)
2062 if (Timeout != HAL_MAX_DELAY)
2064 if (((
HAL_GetTick() - tickstart) >= Timeout) || (Timeout == 0U))
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
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.
void HAL_I2SEx_TxRxCpltCallback(I2S_HandleTypeDef *hi2s)
Tx and Rx Transfer completed callback.
void HAL_I2SEx_TxRxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
Tx and Rx Transfer half completed callback.
void HAL_I2SEx_FullDuplex_IRQHandler(I2S_HandleTypeDef *hi2s)
This function handles I2S/I2Sext interrupt requests in full-duplex mode.
HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef CallbackID)
Unregister an I2S Callback I2S callback is redirected to the weak predefined callback.
void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s)
I2S MSP Init.
void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s)
I2S MSP DeInit.
HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s)
Initializes the I2S according to the specified parameters in the I2S_InitTypeDef and create the assoc...
HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s)
DeInitializes the I2S peripheral.
HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef CallbackID, pI2S_CallbackTypeDef pCallback)
Register a User I2S Callback To be used instead of the weak predefined callback.
HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with Interrupt.
HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s)
Pauses the audio DMA Stream/Channel playing from the Media.
HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout)
Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with Interrupt.
void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
Tx Transfer Half completed callbacks.
void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s)
Rx Transfer completed callbacks.
HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
Transmit an amount of data in non-blocking mode with DMA.
void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s)
Tx Transfer completed callbacks.
HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s)
Resumes the audio DMA Stream/Channel playing from the Media.
void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s)
I2S error callbacks.
HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size)
Receive an amount of data in non-blocking mode with DMA.
void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
Rx Transfer half completed callbacks.
HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t Timeout)
Transmit an amount of data in blocking mode.
void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s)
This function handles I2S interrupt request.
HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s)
Stops the audio DMA Stream/Channel playing from the Media.
uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s)
Return the I2S error code.
HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s)
Return the I2S state.
void(* TxHalfCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
__IO uint16_t RxXferCount
void(* TxCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
void(* TxRxHalfCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
DMA_HandleTypeDef * hdmarx
__IO uint16_t TxXferCount
void(* MspInitCallback)(struct __I2S_HandleTypeDef *hi2s)
void(* MspDeInitCallback)(struct __I2S_HandleTypeDef *hi2s)
void(* RxCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
void(* TxRxCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
DMA_HandleTypeDef * hdmatx
__IO HAL_LockTypeDef Lock
void(* IrqHandlerISR)(struct __I2S_HandleTypeDef *hi2s)
void(* RxHalfCpltCallback)(struct __I2S_HandleTypeDef *hi2s)
__IO HAL_I2S_StateTypeDef State
void(* ErrorCallback)(struct __I2S_HandleTypeDef *hi2s)
HAL_I2S_StateTypeDef
HAL State structures definition.
HAL_I2S_CallbackIDTypeDef
HAL I2S Callback ID enumeration definition.
void(* pI2S_CallbackTypeDef)(I2S_HandleTypeDef *hi2s)
HAL I2S Callback pointer definition.
@ HAL_I2S_STATE_BUSY_TX_RX
@ HAL_I2S_TX_RX_HALF_COMPLETE_CB_ID
@ HAL_I2S_TX_COMPLETE_CB_ID
@ HAL_I2S_TX_HALF_COMPLETE_CB_ID
@ HAL_I2S_TX_RX_COMPLETE_CB_ID
@ HAL_I2S_RX_COMPLETE_CB_ID
@ HAL_I2S_MSPDEINIT_CB_ID
@ HAL_I2S_RX_HALF_COMPLETE_CB_ID
I2S handle Structure definition.
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint32_t PeriphClk)
Return the peripheral clock frequency for a given peripheral(SAI..)
This file contains all the functions prototypes for the HAL module driver.
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)