Lines Matching refs:hi2s
212 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
213 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
214 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Fla…
261 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s) in HAL_I2S_Init() argument
270 if (hi2s == NULL) in HAL_I2S_Init()
276 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_Init()
277 assert_param(IS_I2S_MODE(hi2s->Init.Mode)); in HAL_I2S_Init()
278 assert_param(IS_I2S_STANDARD(hi2s->Init.Standard)); in HAL_I2S_Init()
279 assert_param(IS_I2S_DATA_FORMAT(hi2s->Init.DataFormat)); in HAL_I2S_Init()
280 assert_param(IS_I2S_MCLK_OUTPUT(hi2s->Init.MCLKOutput)); in HAL_I2S_Init()
281 assert_param(IS_I2S_AUDIO_FREQ(hi2s->Init.AudioFreq)); in HAL_I2S_Init()
282 assert_param(IS_I2S_CPOL(hi2s->Init.CPOL)); in HAL_I2S_Init()
283 assert_param(IS_I2S_CLOCKSOURCE(hi2s->Init.ClockSource)); in HAL_I2S_Init()
285 if (hi2s->State == HAL_I2S_STATE_RESET) in HAL_I2S_Init()
288 hi2s->Lock = HAL_UNLOCKED; in HAL_I2S_Init()
292 …hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_Init()
293 …hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_Init()
294 …hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_Init()
295 …hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_Init()
296 …hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_Init()
298 if (hi2s->MspInitCallback == NULL) in HAL_I2S_Init()
300 hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit */ in HAL_I2S_Init()
304 hi2s->MspInitCallback(hi2s); in HAL_I2S_Init()
307 HAL_I2S_MspInit(hi2s); in HAL_I2S_Init()
311 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_Init()
315 CLEAR_BIT(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \ in HAL_I2S_Init()
318 hi2s->Instance->I2SPR = 0x0002U; in HAL_I2S_Init()
322 if (hi2s->Init.AudioFreq != I2S_AUDIOFREQ_DEFAULT) in HAL_I2S_Init()
325 if (hi2s->Init.DataFormat == I2S_DATAFORMAT_16B) in HAL_I2S_Init()
337 if (hi2s->Init.Standard <= I2S_STANDARD_LSB) in HAL_I2S_Init()
345 if (hi2s->Init.ClockSource == I2S_CLOCK_EXTERNAL) in HAL_I2S_Init()
361 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
387 if (hi2s->Init.MCLKOutput == I2S_MCLKOUTPUT_ENABLE) in HAL_I2S_Init()
390 if (hi2s->Init.DataFormat != I2S_DATAFORMAT_16B) in HAL_I2S_Init()
392 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
396 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
402 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
428 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_PRESCALER); in HAL_I2S_Init()
435 …hi2s->Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->Init.MCL… in HAL_I2S_Init()
439 MODIFY_REG(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ in HAL_I2S_Init()
443 (SPI_I2SCFGR_I2SMOD | hi2s->Init.Mode | \ in HAL_I2S_Init()
444 hi2s->Init.Standard | hi2s->Init.DataFormat | \ in HAL_I2S_Init()
445 hi2s->Init.CPOL)); in HAL_I2S_Init()
448 …if ((hi2s->Init.Standard == I2S_STANDARD_PCM_SHORT) || ((hi2s->Init.Standard == I2S_STANDARD_PCM_L… in HAL_I2S_Init()
451 SET_BIT(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN); in HAL_I2S_Init()
455 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Init()
456 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
467 HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_DeInit() argument
470 if (hi2s == NULL) in HAL_I2S_DeInit()
476 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_DeInit()
478 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_DeInit()
481 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DeInit()
484 if (hi2s->MspDeInitCallback == NULL) in HAL_I2S_DeInit()
486 hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2S_DeInit()
490 hi2s->MspDeInitCallback(hi2s); in HAL_I2S_DeInit()
493 HAL_I2S_MspDeInit(hi2s); in HAL_I2S_DeInit()
496 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_DeInit()
497 hi2s->State = HAL_I2S_STATE_RESET; in HAL_I2S_DeInit()
500 __HAL_UNLOCK(hi2s); in HAL_I2S_DeInit()
511 __weak void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspInit() argument
514 UNUSED(hi2s); in HAL_I2S_MspInit()
527 __weak void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspDeInit() argument
530 UNUSED(hi2s); in HAL_I2S_MspDeInit()
547 HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Callb… in HAL_I2S_RegisterCallback() argument
555 hi2s->ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK; in HAL_I2S_RegisterCallback()
560 __HAL_LOCK(hi2s); in HAL_I2S_RegisterCallback()
562 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_RegisterCallback()
567 hi2s->TxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
571 hi2s->RxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
575 hi2s->TxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
579 hi2s->RxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
583 hi2s->ErrorCallback = pCallback; in HAL_I2S_RegisterCallback()
587 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
591 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
596 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
603 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_RegisterCallback()
608 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
612 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
617 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
627 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
634 __HAL_UNLOCK(hi2s); in HAL_I2S_RegisterCallback()
646 HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Cal… in HAL_I2S_UnRegisterCallback() argument
651 __HAL_LOCK(hi2s); in HAL_I2S_UnRegisterCallback()
653 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_UnRegisterCallback()
658 …hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_UnRegisterCallback()
662 …hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_UnRegisterCallback()
666 …hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
670 …hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
674 …hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_UnRegisterCallback()
678 …hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
682 …hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
687 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
694 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_UnRegisterCallback()
699 …hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
703 …hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
708 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
718 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
725 __HAL_UNLOCK(hi2s); in HAL_I2S_UnRegisterCallback()
790 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_… in HAL_I2S_Transmit() argument
799 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit()
805 __HAL_LOCK(hi2s); in HAL_I2S_Transmit()
808 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit()
809 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit()
810 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit()
812 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit()
816 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit()
817 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit()
821 hi2s->TxXferSize = Size; in HAL_I2S_Transmit()
822 hi2s->TxXferCount = Size; in HAL_I2S_Transmit()
825 tmpreg_cfgr = hi2s->Instance->I2SCFGR; in HAL_I2S_Transmit()
828 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit()
831 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit()
835 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
838 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
839 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
840 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
844 while (hi2s->TxXferCount > 0U) in HAL_I2S_Transmit()
846 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in HAL_I2S_Transmit()
847 hi2s->pTxBuffPtr++; in HAL_I2S_Transmit()
848 hi2s->TxXferCount--; in HAL_I2S_Transmit()
851 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, 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 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_UDR) == SET) in HAL_I2S_Transmit()
864 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_Transmit()
867 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_Transmit()
876 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
879 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
880 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
881 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
886 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
887 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
908 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t… in HAL_I2S_Receive() argument
917 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive()
923 __HAL_LOCK(hi2s); in HAL_I2S_Receive()
926 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive()
927 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive()
928 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive()
930 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive()
934 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive()
935 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive()
939 hi2s->RxXferSize = Size; in HAL_I2S_Receive()
940 hi2s->RxXferCount = Size; in HAL_I2S_Receive()
944 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive()
947 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive()
951 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive()
955 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
959 while (hi2s->RxXferCount > 0U) in HAL_I2S_Receive()
962 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK) in HAL_I2S_Receive()
965 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Receive()
966 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
967 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
971 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in HAL_I2S_Receive()
972 hi2s->pRxBuffPtr++; in HAL_I2S_Receive()
973 hi2s->RxXferCount--; in HAL_I2S_Receive()
976 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET) in HAL_I2S_Receive()
979 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
982 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_Receive()
986 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
987 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
1005 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_IT() argument
1014 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_IT()
1020 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_IT()
1023 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_IT()
1024 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_IT()
1025 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_IT()
1027 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_IT()
1031 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_IT()
1032 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_IT()
1036 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_IT()
1037 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_IT()
1040 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
1043 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_Transmit_IT()
1046 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit_IT()
1049 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_IT()
1071 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_IT() argument
1080 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_IT()
1086 __HAL_LOCK(hi2s); in HAL_I2S_Receive_IT()
1089 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_IT()
1090 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_IT()
1091 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_IT()
1093 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_IT()
1097 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_IT()
1098 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_IT()
1102 hi2s->RxXferSize = Size; in HAL_I2S_Receive_IT()
1103 hi2s->RxXferCount = Size; in HAL_I2S_Receive_IT()
1106 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1109 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_Receive_IT()
1112 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive_IT()
1115 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_IT()
1135 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_DMA() argument
1144 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_DMA()
1150 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_DMA()
1153 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_DMA()
1154 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_DMA()
1155 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_DMA()
1157 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_DMA()
1161 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_DMA()
1162 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_DMA()
1166 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_DMA()
1167 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_DMA()
1171 hi2s->hdmatx->XferHalfCpltCallback = I2S_DMATxHalfCplt; in HAL_I2S_Transmit_DMA()
1174 hi2s->hdmatx->XferCpltCallback = I2S_DMATxCplt; in HAL_I2S_Transmit_DMA()
1177 hi2s->hdmatx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Transmit_DMA()
1180 if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmatx, in HAL_I2S_Transmit_DMA()
1181 (uint32_t)hi2s->pTxBuffPtr, in HAL_I2S_Transmit_DMA()
1182 (uint32_t)&hi2s->Instance->DR, in HAL_I2S_Transmit_DMA()
1183 hi2s->TxXferSize)) in HAL_I2S_Transmit_DMA()
1186 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Transmit_DMA()
1187 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit_DMA()
1189 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1193 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1196 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_I2S_Transmit_DMA()
1199 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_Transmit_DMA()
1203 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Transmit_DMA()
1206 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_DMA()
1226 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_DMA() argument
1235 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_DMA()
1241 __HAL_LOCK(hi2s); in HAL_I2S_Receive_DMA()
1244 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_DMA()
1245 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_DMA()
1246 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_DMA()
1248 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_DMA()
1252 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_DMA()
1253 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_DMA()
1257 hi2s->RxXferSize = Size; in HAL_I2S_Receive_DMA()
1258 hi2s->RxXferCount = Size; in HAL_I2S_Receive_DMA()
1262 hi2s->hdmarx->XferHalfCpltCallback = I2S_DMARxHalfCplt; in HAL_I2S_Receive_DMA()
1265 hi2s->hdmarx->XferCpltCallback = I2S_DMARxCplt; in HAL_I2S_Receive_DMA()
1268 hi2s->hdmarx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Receive_DMA()
1271 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive_DMA()
1275 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive_DMA()
1279 …if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, (uint32_t)hi2s->pRxBuf… in HAL_I2S_Receive_DMA()
1280 hi2s->RxXferSize)) in HAL_I2S_Receive_DMA()
1283 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Receive_DMA()
1284 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive_DMA()
1286 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1290 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1293 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_I2S_Receive_DMA()
1296 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_Receive_DMA()
1300 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Receive_DMA()
1303 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_DMA()
1315 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAPause() argument
1318 __HAL_LOCK(hi2s); in HAL_I2S_DMAPause()
1320 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAPause()
1323 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAPause()
1325 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAPause()
1328 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAPause()
1336 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAPause()
1347 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAResume() argument
1350 __HAL_LOCK(hi2s); in HAL_I2S_DMAResume()
1352 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAResume()
1355 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAResume()
1357 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAResume()
1360 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAResume()
1368 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_DMAResume()
1371 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_DMAResume()
1375 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAResume()
1386 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAStop() argument
1395 if ((hi2s->Init.Mode == I2S_MODE_MASTER_TX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_TX)) in HAL_I2S_DMAStop()
1398 if (hi2s->hdmatx != NULL) in HAL_I2S_DMAStop()
1401 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmatx)) in HAL_I2S_DMAStop()
1403 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1409 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1412 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1413 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1418 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1421 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1422 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1427 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1430 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_DMAStop()
1433 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAStop()
1437 else if ((hi2s->Init.Mode == I2S_MODE_MASTER_RX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_RX)) in HAL_I2S_DMAStop()
1440 if (hi2s->hdmarx != NULL) in HAL_I2S_DMAStop()
1443 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmarx)) in HAL_I2S_DMAStop()
1445 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1451 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1454 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_DMAStop()
1457 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAStop()
1459 if (hi2s->Init.Mode == I2S_MODE_SLAVE_RX) in HAL_I2S_DMAStop()
1462 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX); in HAL_I2S_DMAStop()
1465 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1471 READ_REG((hi2s->Instance)->DR); in HAL_I2S_DMAStop()
1475 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1486 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s) in HAL_I2S_IRQHandler() argument
1488 uint32_t itsource = hi2s->Instance->CR2; in HAL_I2S_IRQHandler()
1489 uint32_t itflag = hi2s->Instance->SR; in HAL_I2S_IRQHandler()
1495 I2S_Receive_IT(hi2s); in HAL_I2S_IRQHandler()
1502 I2S_Transmit_IT(hi2s); in HAL_I2S_IRQHandler()
1513 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1516 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_IRQHandler()
1523 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1526 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_IRQHandler()
1530 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_IRQHandler()
1534 hi2s->ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1536 HAL_I2S_ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1547 __weak void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxHalfCpltCallback() argument
1550 UNUSED(hi2s); in HAL_I2S_TxHalfCpltCallback()
1563 __weak void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxCpltCallback() argument
1566 UNUSED(hi2s); in HAL_I2S_TxCpltCallback()
1579 __weak void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxHalfCpltCallback() argument
1582 UNUSED(hi2s); in HAL_I2S_RxHalfCpltCallback()
1595 __weak void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxCpltCallback() argument
1598 UNUSED(hi2s); in HAL_I2S_RxCpltCallback()
1611 __weak void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_ErrorCallback() argument
1614 UNUSED(hi2s); in HAL_I2S_ErrorCallback()
1646 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetState() argument
1648 return hi2s->State; in HAL_I2S_GetState()
1657 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetError() argument
1659 return hi2s->ErrorCode; in HAL_I2S_GetError()
1680 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxCplt() local
1686 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in I2S_DMATxCplt()
1688 hi2s->TxXferCount = 0U; in I2S_DMATxCplt()
1689 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMATxCplt()
1693 hi2s->TxCpltCallback(hi2s); in I2S_DMATxCplt()
1695 HAL_I2S_TxCpltCallback(hi2s); in I2S_DMATxCplt()
1707 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxHalfCplt() local
1711 hi2s->TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1713 HAL_I2S_TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1725 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxCplt() local
1731 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in I2S_DMARxCplt()
1732 hi2s->RxXferCount = 0U; in I2S_DMARxCplt()
1733 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMARxCplt()
1737 hi2s->RxCpltCallback(hi2s); in I2S_DMARxCplt()
1739 HAL_I2S_RxCpltCallback(hi2s); in I2S_DMARxCplt()
1751 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxHalfCplt() local
1755 hi2s->RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1757 HAL_I2S_RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1769 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMAError() local
1772 CLEAR_BIT(hi2s->Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN)); in I2S_DMAError()
1773 hi2s->TxXferCount = 0U; in I2S_DMAError()
1774 hi2s->RxXferCount = 0U; in I2S_DMAError()
1776 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMAError()
1779 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in I2S_DMAError()
1782 hi2s->ErrorCallback(hi2s); in I2S_DMAError()
1784 HAL_I2S_ErrorCallback(hi2s); in I2S_DMAError()
1794 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s) in I2S_Transmit_IT() argument
1797 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in I2S_Transmit_IT()
1798 hi2s->pTxBuffPtr++; in I2S_Transmit_IT()
1799 hi2s->TxXferCount--; in I2S_Transmit_IT()
1801 if (hi2s->TxXferCount == 0U) in I2S_Transmit_IT()
1804 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in I2S_Transmit_IT()
1806 hi2s->State = HAL_I2S_STATE_READY; in I2S_Transmit_IT()
1809 hi2s->TxCpltCallback(hi2s); in I2S_Transmit_IT()
1811 HAL_I2S_TxCpltCallback(hi2s); in I2S_Transmit_IT()
1822 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s) in I2S_Receive_IT() argument
1825 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in I2S_Receive_IT()
1826 hi2s->pRxBuffPtr++; in I2S_Receive_IT()
1827 hi2s->RxXferCount--; in I2S_Receive_IT()
1829 if (hi2s->RxXferCount == 0U) in I2S_Receive_IT()
1832 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in I2S_Receive_IT()
1834 hi2s->State = HAL_I2S_STATE_READY; in I2S_Receive_IT()
1837 hi2s->RxCpltCallback(hi2s); in I2S_Receive_IT()
1839 HAL_I2S_RxCpltCallback(hi2s); in I2S_Receive_IT()
1853 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Flag… in I2S_WaitFlagStateUntilTimeout() argument
1862 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State) in I2S_WaitFlagStateUntilTimeout()
1869 hi2s->State = HAL_I2S_STATE_READY; in I2S_WaitFlagStateUntilTimeout()
1872 __HAL_UNLOCK(hi2s); in I2S_WaitFlagStateUntilTimeout()