Lines Matching refs:hi2s

212 static void               I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
213 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
214 static uint32_t I2S_GetClockFreq(I2S_HandleTypeDef *hi2s);
215 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Fla…
262 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s) in HAL_I2S_Init() argument
271 if (hi2s == NULL) in HAL_I2S_Init()
277 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_Init()
278 assert_param(IS_I2S_MODE(hi2s->Init.Mode)); in HAL_I2S_Init()
279 assert_param(IS_I2S_STANDARD(hi2s->Init.Standard)); in HAL_I2S_Init()
280 assert_param(IS_I2S_DATA_FORMAT(hi2s->Init.DataFormat)); in HAL_I2S_Init()
281 assert_param(IS_I2S_MCLK_OUTPUT(hi2s->Init.MCLKOutput)); in HAL_I2S_Init()
282 assert_param(IS_I2S_AUDIO_FREQ(hi2s->Init.AudioFreq)); in HAL_I2S_Init()
283 assert_param(IS_I2S_CPOL(hi2s->Init.CPOL)); in HAL_I2S_Init()
284 assert_param(IS_I2S_CLOCKSOURCE(hi2s->Init.ClockSource)); in HAL_I2S_Init()
286 if (hi2s->State == HAL_I2S_STATE_RESET) in HAL_I2S_Init()
289 hi2s->Lock = HAL_UNLOCKED; in HAL_I2S_Init()
293hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_Init()
294hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_Init()
295hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_Init()
296hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_Init()
297hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_Init()
299 if (hi2s->MspInitCallback == NULL) in HAL_I2S_Init()
301 hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit */ in HAL_I2S_Init()
305 hi2s->MspInitCallback(hi2s); in HAL_I2S_Init()
308 HAL_I2S_MspInit(hi2s); in HAL_I2S_Init()
312 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_Init()
316 CLEAR_BIT(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \ in HAL_I2S_Init()
319 hi2s->Instance->I2SPR = 0x0002U; in HAL_I2S_Init()
323 if (hi2s->Init.AudioFreq != I2S_AUDIOFREQ_DEFAULT) in HAL_I2S_Init()
326 if (hi2s->Init.DataFormat == I2S_DATAFORMAT_16B) in HAL_I2S_Init()
338 if (hi2s->Init.Standard <= I2S_STANDARD_LSB) in HAL_I2S_Init()
346 if (hi2s->Init.ClockSource == I2S_CLOCK_EXTERNAL) in HAL_I2S_Init()
354 i2sclk = I2S_GetClockFreq(hi2s); in HAL_I2S_Init()
358 if (hi2s->Init.MCLKOutput == I2S_MCLKOUTPUT_ENABLE) in HAL_I2S_Init()
361 if (hi2s->Init.DataFormat != I2S_DATAFORMAT_16B) in HAL_I2S_Init()
363 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
367 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
373 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
399 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_PRESCALER); in HAL_I2S_Init()
406hi2s->Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->Init.MCL… in HAL_I2S_Init()
410 MODIFY_REG(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ in HAL_I2S_Init()
414 (SPI_I2SCFGR_I2SMOD | hi2s->Init.Mode | \ in HAL_I2S_Init()
415 hi2s->Init.Standard | hi2s->Init.DataFormat | \ in HAL_I2S_Init()
416 hi2s->Init.CPOL)); in HAL_I2S_Init()
419 …if ((hi2s->Init.Standard == I2S_STANDARD_PCM_SHORT) || ((hi2s->Init.Standard == I2S_STANDARD_PCM_L… in HAL_I2S_Init()
422 SET_BIT(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN); in HAL_I2S_Init()
426 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Init()
427 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
438 HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_DeInit() argument
441 if (hi2s == NULL) in HAL_I2S_DeInit()
447 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_DeInit()
449 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_DeInit()
452 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DeInit()
455 if (hi2s->MspDeInitCallback == NULL) in HAL_I2S_DeInit()
457 hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2S_DeInit()
461 hi2s->MspDeInitCallback(hi2s); in HAL_I2S_DeInit()
464 HAL_I2S_MspDeInit(hi2s); in HAL_I2S_DeInit()
467 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_DeInit()
468 hi2s->State = HAL_I2S_STATE_RESET; in HAL_I2S_DeInit()
471 __HAL_UNLOCK(hi2s); in HAL_I2S_DeInit()
482 __weak void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspInit() argument
485 UNUSED(hi2s); in HAL_I2S_MspInit()
498 __weak void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspDeInit() argument
501 UNUSED(hi2s); in HAL_I2S_MspDeInit()
518 HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Callb… in HAL_I2S_RegisterCallback() argument
526 hi2s->ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK; in HAL_I2S_RegisterCallback()
531 __HAL_LOCK(hi2s); in HAL_I2S_RegisterCallback()
533 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_RegisterCallback()
538 hi2s->TxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
542 hi2s->RxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
546 hi2s->TxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
550 hi2s->RxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
554 hi2s->ErrorCallback = pCallback; in HAL_I2S_RegisterCallback()
558 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
562 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
567 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
574 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_RegisterCallback()
579 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
583 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
588 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
598 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
605 __HAL_UNLOCK(hi2s); in HAL_I2S_RegisterCallback()
617 HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Cal… in HAL_I2S_UnRegisterCallback() argument
622 __HAL_LOCK(hi2s); in HAL_I2S_UnRegisterCallback()
624 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_UnRegisterCallback()
629hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_UnRegisterCallback()
633hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_UnRegisterCallback()
637hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
641hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
645hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_UnRegisterCallback()
649hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
653hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
658 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
665 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_UnRegisterCallback()
670hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
674hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
679 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
689 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
696 __HAL_UNLOCK(hi2s); in HAL_I2S_UnRegisterCallback()
761 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_… in HAL_I2S_Transmit() argument
771 __HAL_LOCK(hi2s); in HAL_I2S_Transmit()
773 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit()
775 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
780 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit()
781 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit()
782 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit()
784 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit()
788 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit()
789 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit()
793 hi2s->TxXferSize = Size; in HAL_I2S_Transmit()
794 hi2s->TxXferCount = Size; in HAL_I2S_Transmit()
797 tmpreg_cfgr = hi2s->Instance->I2SCFGR; in HAL_I2S_Transmit()
800 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit()
803 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit()
807 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
810 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
811 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
812 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
816 while (hi2s->TxXferCount > 0U) in HAL_I2S_Transmit()
818 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in HAL_I2S_Transmit()
819 hi2s->pTxBuffPtr++; in HAL_I2S_Transmit()
820 hi2s->TxXferCount--; in HAL_I2S_Transmit()
823 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
826 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
827 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
828 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
833 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_UDR) == SET) in HAL_I2S_Transmit()
836 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_Transmit()
839 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_Transmit()
848 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
851 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
852 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
853 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
858 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
859 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
880 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t… in HAL_I2S_Receive() argument
890 __HAL_LOCK(hi2s); in HAL_I2S_Receive()
892 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive()
894 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
899 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive()
900 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive()
901 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive()
903 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive()
907 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive()
908 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive()
912 hi2s->RxXferSize = Size; in HAL_I2S_Receive()
913 hi2s->RxXferCount = Size; in HAL_I2S_Receive()
917 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive()
920 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive()
924 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive()
928 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
932 while (hi2s->RxXferCount > 0U) in HAL_I2S_Receive()
935 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK) in HAL_I2S_Receive()
938 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Receive()
939 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
940 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
944 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in HAL_I2S_Receive()
945 hi2s->pRxBuffPtr++; in HAL_I2S_Receive()
946 hi2s->RxXferCount--; in HAL_I2S_Receive()
949 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET) in HAL_I2S_Receive()
952 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
955 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_Receive()
959 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
960 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
978 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_IT() argument
988 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_IT()
990 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_IT()
992 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
997 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_IT()
998 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_IT()
999 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_IT()
1001 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_IT()
1005 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_IT()
1006 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_IT()
1010 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_IT()
1011 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_IT()
1015 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_Transmit_IT()
1018 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit_IT()
1021 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_IT()
1024 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
1044 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_IT() argument
1054 __HAL_LOCK(hi2s); in HAL_I2S_Receive_IT()
1056 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_IT()
1058 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1063 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_IT()
1064 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_IT()
1065 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_IT()
1067 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_IT()
1071 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_IT()
1072 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_IT()
1076 hi2s->RxXferSize = Size; in HAL_I2S_Receive_IT()
1077 hi2s->RxXferCount = Size; in HAL_I2S_Receive_IT()
1081 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_Receive_IT()
1084 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive_IT()
1087 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_IT()
1090 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1108 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_DMA() argument
1118 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_DMA()
1120 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_DMA()
1122 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1127 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_DMA()
1128 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_DMA()
1129 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_DMA()
1131 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_DMA()
1135 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_DMA()
1136 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_DMA()
1140 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_DMA()
1141 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_DMA()
1145 hi2s->hdmatx->XferHalfCpltCallback = I2S_DMATxHalfCplt; in HAL_I2S_Transmit_DMA()
1148 hi2s->hdmatx->XferCpltCallback = I2S_DMATxCplt; in HAL_I2S_Transmit_DMA()
1151 hi2s->hdmatx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Transmit_DMA()
1154 if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmatx, in HAL_I2S_Transmit_DMA()
1155 (uint32_t)hi2s->pTxBuffPtr, in HAL_I2S_Transmit_DMA()
1156 (uint32_t)&hi2s->Instance->DR, in HAL_I2S_Transmit_DMA()
1157 hi2s->TxXferSize)) in HAL_I2S_Transmit_DMA()
1160 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Transmit_DMA()
1161 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit_DMA()
1163 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1168 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Transmit_DMA()
1171 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_DMA()
1175 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_I2S_Transmit_DMA()
1178 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_Transmit_DMA()
1181 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1199 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_DMA() argument
1209 __HAL_LOCK(hi2s); in HAL_I2S_Receive_DMA()
1211 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_DMA()
1213 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1218 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_DMA()
1219 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_DMA()
1220 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_DMA()
1222 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_DMA()
1226 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_DMA()
1227 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_DMA()
1231 hi2s->RxXferSize = Size; in HAL_I2S_Receive_DMA()
1232 hi2s->RxXferCount = Size; in HAL_I2S_Receive_DMA()
1236 hi2s->hdmarx->XferHalfCpltCallback = I2S_DMARxHalfCplt; in HAL_I2S_Receive_DMA()
1239 hi2s->hdmarx->XferCpltCallback = I2S_DMARxCplt; in HAL_I2S_Receive_DMA()
1242 hi2s->hdmarx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Receive_DMA()
1245 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive_DMA()
1249 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive_DMA()
1253 …if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, (uint32_t)hi2s->pRxBuf… in HAL_I2S_Receive_DMA()
1254 hi2s->RxXferSize)) in HAL_I2S_Receive_DMA()
1257 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Receive_DMA()
1258 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive_DMA()
1260 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1265 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Receive_DMA()
1268 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_DMA()
1272 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_I2S_Receive_DMA()
1275 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_Receive_DMA()
1278 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1288 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAPause() argument
1291 __HAL_LOCK(hi2s); in HAL_I2S_DMAPause()
1293 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAPause()
1296 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAPause()
1298 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAPause()
1301 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAPause()
1309 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAPause()
1320 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAResume() argument
1323 __HAL_LOCK(hi2s); in HAL_I2S_DMAResume()
1325 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAResume()
1328 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAResume()
1330 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAResume()
1333 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAResume()
1341 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_DMAResume()
1344 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_DMAResume()
1348 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAResume()
1359 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAStop() argument
1368 if ((hi2s->Init.Mode == I2S_MODE_MASTER_TX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_TX)) in HAL_I2S_DMAStop()
1371 if (hi2s->hdmatx != NULL) in HAL_I2S_DMAStop()
1374 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmatx)) in HAL_I2S_DMAStop()
1376 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1382 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1385 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1386 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1391 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1394 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1395 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1400 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1403 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_DMAStop()
1406 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAStop()
1410 else if ((hi2s->Init.Mode == I2S_MODE_MASTER_RX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_RX)) in HAL_I2S_DMAStop()
1413 if (hi2s->hdmarx != NULL) in HAL_I2S_DMAStop()
1416 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmarx)) in HAL_I2S_DMAStop()
1418 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1424 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1427 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_DMAStop()
1430 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAStop()
1432 if (hi2s->Init.Mode == I2S_MODE_SLAVE_RX) in HAL_I2S_DMAStop()
1435 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX); in HAL_I2S_DMAStop()
1438 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1444 READ_REG((hi2s->Instance)->DR); in HAL_I2S_DMAStop()
1448 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1459 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s) in HAL_I2S_IRQHandler() argument
1461 uint32_t itsource = hi2s->Instance->CR2; in HAL_I2S_IRQHandler()
1462 uint32_t itflag = hi2s->Instance->SR; in HAL_I2S_IRQHandler()
1468 I2S_Receive_IT(hi2s); in HAL_I2S_IRQHandler()
1475 I2S_Transmit_IT(hi2s); in HAL_I2S_IRQHandler()
1486 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1489 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_IRQHandler()
1496 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1499 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_IRQHandler()
1503 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_IRQHandler()
1507 hi2s->ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1509 HAL_I2S_ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1520 __weak void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxHalfCpltCallback() argument
1523 UNUSED(hi2s); in HAL_I2S_TxHalfCpltCallback()
1536 __weak void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxCpltCallback() argument
1539 UNUSED(hi2s); in HAL_I2S_TxCpltCallback()
1552 __weak void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxHalfCpltCallback() argument
1555 UNUSED(hi2s); in HAL_I2S_RxHalfCpltCallback()
1568 __weak void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxCpltCallback() argument
1571 UNUSED(hi2s); in HAL_I2S_RxCpltCallback()
1584 __weak void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_ErrorCallback() argument
1587 UNUSED(hi2s); in HAL_I2S_ErrorCallback()
1619 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetState() argument
1621 return hi2s->State; in HAL_I2S_GetState()
1630 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetError() argument
1632 return hi2s->ErrorCode; in HAL_I2S_GetError()
1651 static uint32_t I2S_GetClockFreq(I2S_HandleTypeDef *hi2s) in I2S_GetClockFreq() argument
1662 switch (hi2s->Init.ClockSource) in I2S_GetClockFreq()
1710 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxCplt() local
1716 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in I2S_DMATxCplt()
1718 hi2s->TxXferCount = 0U; in I2S_DMATxCplt()
1719 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMATxCplt()
1723 hi2s->TxCpltCallback(hi2s); in I2S_DMATxCplt()
1725 HAL_I2S_TxCpltCallback(hi2s); in I2S_DMATxCplt()
1737 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxHalfCplt() local
1741 hi2s->TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1743 HAL_I2S_TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1755 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxCplt() local
1761 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in I2S_DMARxCplt()
1762 hi2s->RxXferCount = 0U; in I2S_DMARxCplt()
1763 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMARxCplt()
1767 hi2s->RxCpltCallback(hi2s); in I2S_DMARxCplt()
1769 HAL_I2S_RxCpltCallback(hi2s); in I2S_DMARxCplt()
1781 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxHalfCplt() local
1785 hi2s->RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1787 HAL_I2S_RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1799 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMAError() local
1802 CLEAR_BIT(hi2s->Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN)); in I2S_DMAError()
1803 hi2s->TxXferCount = 0U; in I2S_DMAError()
1804 hi2s->RxXferCount = 0U; in I2S_DMAError()
1806 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMAError()
1809 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in I2S_DMAError()
1812 hi2s->ErrorCallback(hi2s); in I2S_DMAError()
1814 HAL_I2S_ErrorCallback(hi2s); in I2S_DMAError()
1824 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s) in I2S_Transmit_IT() argument
1827 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in I2S_Transmit_IT()
1828 hi2s->pTxBuffPtr++; in I2S_Transmit_IT()
1829 hi2s->TxXferCount--; in I2S_Transmit_IT()
1831 if (hi2s->TxXferCount == 0U) in I2S_Transmit_IT()
1834 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in I2S_Transmit_IT()
1836 hi2s->State = HAL_I2S_STATE_READY; in I2S_Transmit_IT()
1839 hi2s->TxCpltCallback(hi2s); in I2S_Transmit_IT()
1841 HAL_I2S_TxCpltCallback(hi2s); in I2S_Transmit_IT()
1852 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s) in I2S_Receive_IT() argument
1855 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in I2S_Receive_IT()
1856 hi2s->pRxBuffPtr++; in I2S_Receive_IT()
1857 hi2s->RxXferCount--; in I2S_Receive_IT()
1859 if (hi2s->RxXferCount == 0U) in I2S_Receive_IT()
1862 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in I2S_Receive_IT()
1864 hi2s->State = HAL_I2S_STATE_READY; in I2S_Receive_IT()
1867 hi2s->RxCpltCallback(hi2s); in I2S_Receive_IT()
1869 HAL_I2S_RxCpltCallback(hi2s); in I2S_Receive_IT()
1883 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Flag… in I2S_WaitFlagStateUntilTimeout() argument
1892 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State) in I2S_WaitFlagStateUntilTimeout()
1899 hi2s->State = HAL_I2S_STATE_READY; in I2S_WaitFlagStateUntilTimeout()
1902 __HAL_UNLOCK(hi2s); in I2S_WaitFlagStateUntilTimeout()