Lines Matching refs:hi2s

215 static void               I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
216 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
217 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Fla…
264 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s) in HAL_I2S_Init() argument
273 if (hi2s == NULL) in HAL_I2S_Init()
279 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_Init()
280 assert_param(IS_I2S_MODE(hi2s->Init.Mode)); in HAL_I2S_Init()
281 assert_param(IS_I2S_STANDARD(hi2s->Init.Standard)); in HAL_I2S_Init()
282 assert_param(IS_I2S_DATA_FORMAT(hi2s->Init.DataFormat)); in HAL_I2S_Init()
283 assert_param(IS_I2S_MCLK_OUTPUT(hi2s->Init.MCLKOutput)); in HAL_I2S_Init()
284 assert_param(IS_I2S_AUDIO_FREQ(hi2s->Init.AudioFreq)); in HAL_I2S_Init()
285 assert_param(IS_I2S_CPOL(hi2s->Init.CPOL)); in HAL_I2S_Init()
287 if (hi2s->State == HAL_I2S_STATE_RESET) in HAL_I2S_Init()
290 hi2s->Lock = HAL_UNLOCKED; in HAL_I2S_Init()
294hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_Init()
295hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_Init()
296hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_Init()
297hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_Init()
298hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_Init()
300 if (hi2s->MspInitCallback == NULL) in HAL_I2S_Init()
302 hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit */ in HAL_I2S_Init()
306 hi2s->MspInitCallback(hi2s); in HAL_I2S_Init()
309 HAL_I2S_MspInit(hi2s); in HAL_I2S_Init()
313 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_Init()
317 CLEAR_BIT(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \ in HAL_I2S_Init()
320 hi2s->Instance->I2SPR = 0x0002U; in HAL_I2S_Init()
324 if (hi2s->Init.AudioFreq != I2S_AUDIOFREQ_DEFAULT) in HAL_I2S_Init()
327 if (hi2s->Init.DataFormat == I2S_DATAFORMAT_16B) in HAL_I2S_Init()
339 if (hi2s->Init.Standard <= I2S_STANDARD_LSB) in HAL_I2S_Init()
346 if (hi2s->Instance == SPI1) in HAL_I2S_Init()
361 if (hi2s->Init.MCLKOutput == I2S_MCLKOUTPUT_ENABLE) in HAL_I2S_Init()
364 if (hi2s->Init.DataFormat != I2S_DATAFORMAT_16B) in HAL_I2S_Init()
366 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
370 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
376 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
402 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_PRESCALER); in HAL_I2S_Init()
409hi2s->Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->Init.MCL… in HAL_I2S_Init()
413 MODIFY_REG(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ in HAL_I2S_Init()
417 (SPI_I2SCFGR_I2SMOD | hi2s->Init.Mode | \ in HAL_I2S_Init()
418 hi2s->Init.Standard | hi2s->Init.DataFormat | \ in HAL_I2S_Init()
419 hi2s->Init.CPOL)); in HAL_I2S_Init()
422 …if ((hi2s->Init.Standard == I2S_STANDARD_PCM_SHORT) || ((hi2s->Init.Standard == I2S_STANDARD_PCM_L… in HAL_I2S_Init()
425 SET_BIT(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN); in HAL_I2S_Init()
429 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Init()
430 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
441 HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_DeInit() argument
444 if (hi2s == NULL) in HAL_I2S_DeInit()
450 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_DeInit()
452 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_DeInit()
455 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DeInit()
458 if (hi2s->MspDeInitCallback == NULL) in HAL_I2S_DeInit()
460 hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2S_DeInit()
464 hi2s->MspDeInitCallback(hi2s); in HAL_I2S_DeInit()
467 HAL_I2S_MspDeInit(hi2s); in HAL_I2S_DeInit()
470 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_DeInit()
471 hi2s->State = HAL_I2S_STATE_RESET; in HAL_I2S_DeInit()
474 __HAL_UNLOCK(hi2s); in HAL_I2S_DeInit()
485 __weak void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspInit() argument
488 UNUSED(hi2s); in HAL_I2S_MspInit()
501 __weak void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspDeInit() argument
504 UNUSED(hi2s); in HAL_I2S_MspDeInit()
521 HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Callb… in HAL_I2S_RegisterCallback() argument
529 hi2s->ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK; in HAL_I2S_RegisterCallback()
534 __HAL_LOCK(hi2s); in HAL_I2S_RegisterCallback()
536 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_RegisterCallback()
541 hi2s->TxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
545 hi2s->RxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
549 hi2s->TxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
553 hi2s->RxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
557 hi2s->ErrorCallback = pCallback; in HAL_I2S_RegisterCallback()
561 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
565 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
570 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
577 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_RegisterCallback()
582 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
586 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
591 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
601 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
608 __HAL_UNLOCK(hi2s); in HAL_I2S_RegisterCallback()
620 HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Cal… in HAL_I2S_UnRegisterCallback() argument
625 __HAL_LOCK(hi2s); in HAL_I2S_UnRegisterCallback()
627 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_UnRegisterCallback()
632hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_UnRegisterCallback()
636hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_UnRegisterCallback()
640hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
644hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
648hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_UnRegisterCallback()
652hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
656hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
661 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
668 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_UnRegisterCallback()
673hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
677hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
682 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
692 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
699 __HAL_UNLOCK(hi2s); in HAL_I2S_UnRegisterCallback()
764 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_… in HAL_I2S_Transmit() argument
774 __HAL_LOCK(hi2s); in HAL_I2S_Transmit()
776 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit()
778 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
783 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit()
784 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit()
785 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit()
787 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit()
791 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit()
792 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit()
796 hi2s->TxXferSize = Size; in HAL_I2S_Transmit()
797 hi2s->TxXferCount = Size; in HAL_I2S_Transmit()
800 tmpreg_cfgr = hi2s->Instance->I2SCFGR; in HAL_I2S_Transmit()
803 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit()
806 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit()
810 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
813 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
814 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
815 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
819 while (hi2s->TxXferCount > 0U) in HAL_I2S_Transmit()
821 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in HAL_I2S_Transmit()
822 hi2s->pTxBuffPtr++; in HAL_I2S_Transmit()
823 hi2s->TxXferCount--; in HAL_I2S_Transmit()
826 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
829 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
830 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
831 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
836 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_UDR) == SET) in HAL_I2S_Transmit()
839 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_Transmit()
842 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_Transmit()
851 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
854 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
855 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
856 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
861 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
862 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
883 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t… in HAL_I2S_Receive() argument
893 __HAL_LOCK(hi2s); in HAL_I2S_Receive()
895 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive()
897 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
902 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive()
903 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive()
904 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive()
906 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive()
910 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive()
911 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive()
915 hi2s->RxXferSize = Size; in HAL_I2S_Receive()
916 hi2s->RxXferCount = Size; in HAL_I2S_Receive()
920 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive()
923 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive()
927 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive()
931 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
935 while (hi2s->RxXferCount > 0U) in HAL_I2S_Receive()
938 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK) in HAL_I2S_Receive()
941 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Receive()
942 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
943 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
947 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in HAL_I2S_Receive()
948 hi2s->pRxBuffPtr++; in HAL_I2S_Receive()
949 hi2s->RxXferCount--; in HAL_I2S_Receive()
952 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET) in HAL_I2S_Receive()
955 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
958 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_Receive()
962 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
963 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
981 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_IT() argument
991 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_IT()
993 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_IT()
995 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
1000 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_IT()
1001 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_IT()
1002 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_IT()
1004 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_IT()
1008 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_IT()
1009 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_IT()
1013 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_IT()
1014 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_IT()
1018 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_Transmit_IT()
1021 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit_IT()
1024 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_IT()
1027 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
1047 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_IT() argument
1057 __HAL_LOCK(hi2s); in HAL_I2S_Receive_IT()
1059 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_IT()
1061 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1066 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_IT()
1067 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_IT()
1068 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_IT()
1070 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_IT()
1074 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_IT()
1075 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_IT()
1079 hi2s->RxXferSize = Size; in HAL_I2S_Receive_IT()
1080 hi2s->RxXferCount = Size; in HAL_I2S_Receive_IT()
1084 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_Receive_IT()
1087 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive_IT()
1090 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_IT()
1093 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1111 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_DMA() argument
1121 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_DMA()
1123 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_DMA()
1125 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1130 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_DMA()
1131 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_DMA()
1132 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_DMA()
1134 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_DMA()
1138 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_DMA()
1139 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_DMA()
1143 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_DMA()
1144 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_DMA()
1148 hi2s->hdmatx->XferHalfCpltCallback = I2S_DMATxHalfCplt; in HAL_I2S_Transmit_DMA()
1151 hi2s->hdmatx->XferCpltCallback = I2S_DMATxCplt; in HAL_I2S_Transmit_DMA()
1154 hi2s->hdmatx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Transmit_DMA()
1157 if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmatx, in HAL_I2S_Transmit_DMA()
1158 (uint32_t)hi2s->pTxBuffPtr, in HAL_I2S_Transmit_DMA()
1159 (uint32_t)&hi2s->Instance->DR, in HAL_I2S_Transmit_DMA()
1160 hi2s->TxXferSize)) in HAL_I2S_Transmit_DMA()
1163 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Transmit_DMA()
1164 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit_DMA()
1166 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1171 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Transmit_DMA()
1174 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_DMA()
1178 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_I2S_Transmit_DMA()
1181 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_Transmit_DMA()
1184 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1202 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_DMA() argument
1212 __HAL_LOCK(hi2s); in HAL_I2S_Receive_DMA()
1214 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_DMA()
1216 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1221 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_DMA()
1222 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_DMA()
1223 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_DMA()
1225 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_DMA()
1229 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_DMA()
1230 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_DMA()
1234 hi2s->RxXferSize = Size; in HAL_I2S_Receive_DMA()
1235 hi2s->RxXferCount = Size; in HAL_I2S_Receive_DMA()
1239 hi2s->hdmarx->XferHalfCpltCallback = I2S_DMARxHalfCplt; in HAL_I2S_Receive_DMA()
1242 hi2s->hdmarx->XferCpltCallback = I2S_DMARxCplt; in HAL_I2S_Receive_DMA()
1245 hi2s->hdmarx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Receive_DMA()
1248 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive_DMA()
1252 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive_DMA()
1256 …if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, (uint32_t)hi2s->pRxBuf… in HAL_I2S_Receive_DMA()
1257 hi2s->RxXferSize)) in HAL_I2S_Receive_DMA()
1260 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Receive_DMA()
1261 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive_DMA()
1263 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1268 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Receive_DMA()
1271 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_DMA()
1275 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_I2S_Receive_DMA()
1278 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_Receive_DMA()
1281 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1291 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAPause() argument
1294 __HAL_LOCK(hi2s); in HAL_I2S_DMAPause()
1296 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAPause()
1299 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAPause()
1301 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAPause()
1304 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAPause()
1312 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAPause()
1323 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAResume() argument
1326 __HAL_LOCK(hi2s); in HAL_I2S_DMAResume()
1328 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAResume()
1331 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAResume()
1333 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAResume()
1336 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAResume()
1344 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_DMAResume()
1347 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_DMAResume()
1351 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAResume()
1362 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAStop() argument
1371 if ((hi2s->Init.Mode == I2S_MODE_MASTER_TX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_TX)) in HAL_I2S_DMAStop()
1374 if (hi2s->hdmatx != NULL) in HAL_I2S_DMAStop()
1377 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmatx)) in HAL_I2S_DMAStop()
1379 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1385 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1388 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1389 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1394 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1397 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1398 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1403 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1406 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_DMAStop()
1409 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAStop()
1413 else if ((hi2s->Init.Mode == I2S_MODE_MASTER_RX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_RX)) in HAL_I2S_DMAStop()
1416 if (hi2s->hdmarx != NULL) in HAL_I2S_DMAStop()
1419 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmarx)) in HAL_I2S_DMAStop()
1421 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1427 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1430 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_DMAStop()
1433 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAStop()
1435 if (hi2s->Init.Mode == I2S_MODE_SLAVE_RX) in HAL_I2S_DMAStop()
1438 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX); in HAL_I2S_DMAStop()
1441 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1447 READ_REG((hi2s->Instance)->DR); in HAL_I2S_DMAStop()
1451 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1462 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s) in HAL_I2S_IRQHandler() argument
1464 uint32_t itsource = hi2s->Instance->CR2; in HAL_I2S_IRQHandler()
1465 uint32_t itflag = hi2s->Instance->SR; in HAL_I2S_IRQHandler()
1471 I2S_Receive_IT(hi2s); in HAL_I2S_IRQHandler()
1478 I2S_Transmit_IT(hi2s); in HAL_I2S_IRQHandler()
1489 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1492 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_IRQHandler()
1499 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1502 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_IRQHandler()
1506 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_IRQHandler()
1510 hi2s->ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1512 HAL_I2S_ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1523 __weak void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxHalfCpltCallback() argument
1526 UNUSED(hi2s); in HAL_I2S_TxHalfCpltCallback()
1539 __weak void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxCpltCallback() argument
1542 UNUSED(hi2s); in HAL_I2S_TxCpltCallback()
1555 __weak void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxHalfCpltCallback() argument
1558 UNUSED(hi2s); in HAL_I2S_RxHalfCpltCallback()
1571 __weak void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxCpltCallback() argument
1574 UNUSED(hi2s); in HAL_I2S_RxCpltCallback()
1587 __weak void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_ErrorCallback() argument
1590 UNUSED(hi2s); in HAL_I2S_ErrorCallback()
1622 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetState() argument
1624 return hi2s->State; in HAL_I2S_GetState()
1633 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetError() argument
1635 return hi2s->ErrorCode; in HAL_I2S_GetError()
1656 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxCplt() local
1662 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in I2S_DMATxCplt()
1664 hi2s->TxXferCount = 0U; in I2S_DMATxCplt()
1665 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMATxCplt()
1669 hi2s->TxCpltCallback(hi2s); in I2S_DMATxCplt()
1671 HAL_I2S_TxCpltCallback(hi2s); in I2S_DMATxCplt()
1683 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxHalfCplt() local
1687 hi2s->TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1689 HAL_I2S_TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1701 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxCplt() local
1707 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in I2S_DMARxCplt()
1708 hi2s->RxXferCount = 0U; in I2S_DMARxCplt()
1709 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMARxCplt()
1713 hi2s->RxCpltCallback(hi2s); in I2S_DMARxCplt()
1715 HAL_I2S_RxCpltCallback(hi2s); in I2S_DMARxCplt()
1727 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxHalfCplt() local
1731 hi2s->RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1733 HAL_I2S_RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1745 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMAError() local
1748 CLEAR_BIT(hi2s->Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN)); in I2S_DMAError()
1749 hi2s->TxXferCount = 0U; in I2S_DMAError()
1750 hi2s->RxXferCount = 0U; in I2S_DMAError()
1752 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMAError()
1755 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in I2S_DMAError()
1758 hi2s->ErrorCallback(hi2s); in I2S_DMAError()
1760 HAL_I2S_ErrorCallback(hi2s); in I2S_DMAError()
1770 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s) in I2S_Transmit_IT() argument
1773 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in I2S_Transmit_IT()
1774 hi2s->pTxBuffPtr++; in I2S_Transmit_IT()
1775 hi2s->TxXferCount--; in I2S_Transmit_IT()
1777 if (hi2s->TxXferCount == 0U) in I2S_Transmit_IT()
1780 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in I2S_Transmit_IT()
1782 hi2s->State = HAL_I2S_STATE_READY; in I2S_Transmit_IT()
1785 hi2s->TxCpltCallback(hi2s); in I2S_Transmit_IT()
1787 HAL_I2S_TxCpltCallback(hi2s); in I2S_Transmit_IT()
1798 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s) in I2S_Receive_IT() argument
1801 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in I2S_Receive_IT()
1802 hi2s->pRxBuffPtr++; in I2S_Receive_IT()
1803 hi2s->RxXferCount--; in I2S_Receive_IT()
1805 if (hi2s->RxXferCount == 0U) in I2S_Receive_IT()
1808 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in I2S_Receive_IT()
1810 hi2s->State = HAL_I2S_STATE_READY; in I2S_Receive_IT()
1813 hi2s->RxCpltCallback(hi2s); in I2S_Receive_IT()
1815 HAL_I2S_RxCpltCallback(hi2s); in I2S_Receive_IT()
1829 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Flag… in I2S_WaitFlagStateUntilTimeout() argument
1838 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State) in I2S_WaitFlagStateUntilTimeout()
1845 hi2s->State = HAL_I2S_STATE_READY; in I2S_WaitFlagStateUntilTimeout()
1848 __HAL_UNLOCK(hi2s); in I2S_WaitFlagStateUntilTimeout()