187 #include "stm32f4xx_hal.h"
189 #ifdef HAL_I2S_MODULE_ENABLED
202 #define I2S_TIMEOUT_FLAG 100U
269 uint32_t packetlength;
272 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
298 hi2s->IrqHandlerISR = I2S_IRQHandler;
300 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
304 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
309 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
314 if (hi2s->MspInitCallback ==
NULL)
320 hi2s->MspInitCallback(hi2s);
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))
434 #if defined(SPI_I2SCFGR_ASTRTEN)
442 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
450 hi2s->IrqHandlerISR = HAL_I2SEx_FullDuplex_IRQHandler;
456 I2SxEXT(hi2s->
Instance)->I2SPR = 2U;
459 tmpreg = I2SxEXT(hi2s->
Instance)->I2SCFGR;
509 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
510 if (hi2s->MspDeInitCallback ==
NULL)
516 hi2s->MspDeInitCallback(hi2s);
563 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
574 pI2S_CallbackTypeDef pCallback)
578 if (pCallback ==
NULL)
581 hi2s->
ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK;
592 case HAL_I2S_TX_COMPLETE_CB_ID :
593 hi2s->TxCpltCallback = pCallback;
596 case HAL_I2S_RX_COMPLETE_CB_ID :
597 hi2s->RxCpltCallback = pCallback;
600 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
601 case HAL_I2S_TX_RX_COMPLETE_CB_ID :
602 hi2s->TxRxCpltCallback = pCallback;
606 case HAL_I2S_TX_HALF_COMPLETE_CB_ID :
607 hi2s->TxHalfCpltCallback = pCallback;
610 case HAL_I2S_RX_HALF_COMPLETE_CB_ID :
611 hi2s->RxHalfCpltCallback = pCallback;
614 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
615 case HAL_I2S_TX_RX_HALF_COMPLETE_CB_ID :
616 hi2s->TxRxHalfCpltCallback = pCallback;
620 case HAL_I2S_ERROR_CB_ID :
621 hi2s->ErrorCallback = pCallback;
624 case HAL_I2S_MSPINIT_CB_ID :
625 hi2s->MspInitCallback = pCallback;
628 case HAL_I2S_MSPDEINIT_CB_ID :
629 hi2s->MspDeInitCallback = pCallback;
645 case HAL_I2S_MSPINIT_CB_ID :
646 hi2s->MspInitCallback = pCallback;
649 case HAL_I2S_MSPDEINIT_CB_ID :
650 hi2s->MspDeInitCallback = pCallback;
695 case HAL_I2S_TX_COMPLETE_CB_ID :
699 case HAL_I2S_RX_COMPLETE_CB_ID :
703 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
704 case HAL_I2S_TX_RX_COMPLETE_CB_ID :
709 case HAL_I2S_TX_HALF_COMPLETE_CB_ID :
713 case HAL_I2S_RX_HALF_COMPLETE_CB_ID :
717 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
718 case HAL_I2S_TX_RX_HALF_COMPLETE_CB_ID :
723 case HAL_I2S_ERROR_CB_ID :
727 case HAL_I2S_MSPINIT_CB_ID :
731 case HAL_I2S_MSPDEINIT_CB_ID :
748 case HAL_I2S_MSPINIT_CB_ID :
752 case HAL_I2S_MSPDEINIT_CB_ID :
842 uint32_t tmpreg_cfgr;
844 if ((pData ==
NULL) || (Size == 0U))
961 uint32_t tmpreg_cfgr;
963 if ((pData ==
NULL) || (Size == 0U))
1059 uint32_t tmpreg_cfgr;
1061 if ((pData ==
NULL) || (Size == 0U))
1125 uint32_t tmpreg_cfgr;
1127 if ((pData ==
NULL) || (Size == 0U))
1189 uint32_t tmpreg_cfgr;
1191 if ((pData ==
NULL) || (Size == 0U))
1280 uint32_t tmpreg_cfgr;
1282 if ((pData ==
NULL) || (Size == 0U))
1382 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1422 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1433 __HAL_I2SEXT_ENABLE(hi2s);
1463 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1513 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1529 __HAL_I2SEXT_DISABLE(hi2s);
1532 __HAL_I2SEXT_CLEAR_OVRFLAG(hi2s);
1567 #if defined (SPI_I2S_FULLDUPLEX_SUPPORT)
1587 if (((
HAL_GetTick() - tickstart) > I2S_TIMEOUT_FLAG))
1601 if (((
HAL_GetTick() - tickstart) > I2S_TIMEOUT_FLAG))
1613 __HAL_I2SEXT_DISABLE(hi2s);
1616 __HAL_I2SEXT_CLEAR_UDRFLAG(hi2s);
1662 hi2s->IrqHandlerISR(hi2s);
1816 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1817 hi2s->TxCpltCallback(hi2s);
1834 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1835 hi2s->TxHalfCpltCallback(hi2s);
1860 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1861 hi2s->RxCpltCallback(hi2s);
1878 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1879 hi2s->RxHalfCpltCallback(hi2s);
1905 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1906 hi2s->ErrorCallback(hi2s);
1932 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1933 hi2s->TxCpltCallback(hi2s);
1960 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
1961 hi2s->RxCpltCallback(hi2s);
1983 I2S_Receive_IT(hi2s);
2002 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
2003 hi2s->ErrorCallback(hi2s);
2015 I2S_Transmit_IT(hi2s);
2033 #if (USE_HAL_I2S_REGISTER_CALLBACKS == 1U)
2034 hi2s->ErrorCallback(hi2s);
2064 if (((
HAL_GetTick() - tickstart) >= Timeout) || (Timeout == 0U))