Lines Matching refs:hi2s

211 static void               I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
212 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
213 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Fla…
260 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s) in HAL_I2S_Init() argument
269 if (hi2s == NULL) in HAL_I2S_Init()
275 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_Init()
276 assert_param(IS_I2S_MODE(hi2s->Init.Mode)); in HAL_I2S_Init()
277 assert_param(IS_I2S_STANDARD(hi2s->Init.Standard)); in HAL_I2S_Init()
278 assert_param(IS_I2S_DATA_FORMAT(hi2s->Init.DataFormat)); in HAL_I2S_Init()
279 assert_param(IS_I2S_MCLK_OUTPUT(hi2s->Init.MCLKOutput)); in HAL_I2S_Init()
280 assert_param(IS_I2S_AUDIO_FREQ(hi2s->Init.AudioFreq)); in HAL_I2S_Init()
281 assert_param(IS_I2S_CPOL(hi2s->Init.CPOL)); in HAL_I2S_Init()
283 if (hi2s->State == HAL_I2S_STATE_RESET) in HAL_I2S_Init()
286 hi2s->Lock = HAL_UNLOCKED; in HAL_I2S_Init()
290hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_Init()
291hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_Init()
292hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_Init()
293hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_Init()
294hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_Init()
296 if (hi2s->MspInitCallback == NULL) in HAL_I2S_Init()
298 hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit */ in HAL_I2S_Init()
302 hi2s->MspInitCallback(hi2s); in HAL_I2S_Init()
305 HAL_I2S_MspInit(hi2s); in HAL_I2S_Init()
309 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_Init()
313 CLEAR_BIT(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \ in HAL_I2S_Init()
316 hi2s->Instance->I2SPR = 0x0002U; in HAL_I2S_Init()
320 if (hi2s->Init.AudioFreq != I2S_AUDIOFREQ_DEFAULT) in HAL_I2S_Init()
323 if (hi2s->Init.DataFormat == I2S_DATAFORMAT_16B) in HAL_I2S_Init()
335 if (hi2s->Init.Standard <= I2S_STANDARD_LSB) in HAL_I2S_Init()
343 if (hi2s->Instance == SPI2) in HAL_I2S_Init()
359 if (hi2s->Init.MCLKOutput == I2S_MCLKOUTPUT_ENABLE) in HAL_I2S_Init()
362 if (hi2s->Init.DataFormat != I2S_DATAFORMAT_16B) in HAL_I2S_Init()
364 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
368 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
374 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
400 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_PRESCALER); in HAL_I2S_Init()
407hi2s->Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->Init.MCL… in HAL_I2S_Init()
411 MODIFY_REG(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ in HAL_I2S_Init()
415 (SPI_I2SCFGR_I2SMOD | hi2s->Init.Mode | \ in HAL_I2S_Init()
416 hi2s->Init.Standard | hi2s->Init.DataFormat | \ in HAL_I2S_Init()
417 hi2s->Init.CPOL)); in HAL_I2S_Init()
420 …if ((hi2s->Init.Standard == I2S_STANDARD_PCM_SHORT) || ((hi2s->Init.Standard == I2S_STANDARD_PCM_L… in HAL_I2S_Init()
423 SET_BIT(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN); in HAL_I2S_Init()
427 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Init()
428 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
439 HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_DeInit() argument
442 if (hi2s == NULL) in HAL_I2S_DeInit()
448 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_DeInit()
450 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_DeInit()
453 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DeInit()
456 if (hi2s->MspDeInitCallback == NULL) in HAL_I2S_DeInit()
458 hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2S_DeInit()
462 hi2s->MspDeInitCallback(hi2s); in HAL_I2S_DeInit()
465 HAL_I2S_MspDeInit(hi2s); in HAL_I2S_DeInit()
468 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_DeInit()
469 hi2s->State = HAL_I2S_STATE_RESET; in HAL_I2S_DeInit()
472 __HAL_UNLOCK(hi2s); in HAL_I2S_DeInit()
483 __weak void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspInit() argument
486 UNUSED(hi2s); in HAL_I2S_MspInit()
499 __weak void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspDeInit() argument
502 UNUSED(hi2s); in HAL_I2S_MspDeInit()
519 HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Callb… in HAL_I2S_RegisterCallback() argument
527 hi2s->ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK; in HAL_I2S_RegisterCallback()
532 __HAL_LOCK(hi2s); in HAL_I2S_RegisterCallback()
534 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_RegisterCallback()
539 hi2s->TxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
543 hi2s->RxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
547 hi2s->TxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
551 hi2s->RxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
555 hi2s->ErrorCallback = pCallback; in HAL_I2S_RegisterCallback()
559 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
563 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
568 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
575 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_RegisterCallback()
580 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
584 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
589 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
599 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
606 __HAL_UNLOCK(hi2s); in HAL_I2S_RegisterCallback()
618 HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Cal… in HAL_I2S_UnRegisterCallback() argument
623 __HAL_LOCK(hi2s); in HAL_I2S_UnRegisterCallback()
625 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_UnRegisterCallback()
630hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_UnRegisterCallback()
634hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_UnRegisterCallback()
638hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
642hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
646hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_UnRegisterCallback()
650hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
654hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
659 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
666 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_UnRegisterCallback()
671hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
675hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
680 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
690 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
697 __HAL_UNLOCK(hi2s); in HAL_I2S_UnRegisterCallback()
762 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_… in HAL_I2S_Transmit() argument
771 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit()
777 __HAL_LOCK(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
889 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive()
895 __HAL_LOCK(hi2s); in HAL_I2S_Receive()
898 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive()
899 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive()
900 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive()
902 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive()
906 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive()
907 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive()
911 hi2s->RxXferSize = Size; in HAL_I2S_Receive()
912 hi2s->RxXferCount = Size; in HAL_I2S_Receive()
916 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive()
919 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive()
923 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive()
927 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
931 while (hi2s->RxXferCount > 0U) in HAL_I2S_Receive()
934 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK) in HAL_I2S_Receive()
937 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Receive()
938 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
939 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
943 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in HAL_I2S_Receive()
944 hi2s->pRxBuffPtr++; in HAL_I2S_Receive()
945 hi2s->RxXferCount--; in HAL_I2S_Receive()
948 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET) in HAL_I2S_Receive()
951 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
954 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_Receive()
958 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
959 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
977 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_IT() argument
986 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_IT()
992 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_IT()
995 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_IT()
996 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_IT()
997 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_IT()
999 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_IT()
1003 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_IT()
1004 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_IT()
1008 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_IT()
1009 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_IT()
1012 __HAL_UNLOCK(hi2s); 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()
1043 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_IT() argument
1052 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_IT()
1058 __HAL_LOCK(hi2s); in HAL_I2S_Receive_IT()
1061 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_IT()
1062 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_IT()
1063 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_IT()
1065 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_IT()
1069 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_IT()
1070 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_IT()
1074 hi2s->RxXferSize = Size; in HAL_I2S_Receive_IT()
1075 hi2s->RxXferCount = Size; in HAL_I2S_Receive_IT()
1078 __HAL_UNLOCK(hi2s); 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()
1107 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_DMA() argument
1116 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_DMA()
1122 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_DMA()
1125 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_DMA()
1126 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_DMA()
1127 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_DMA()
1129 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_DMA()
1133 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_DMA()
1134 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_DMA()
1138 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_DMA()
1139 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_DMA()
1143 hi2s->hdmatx->XferHalfCpltCallback = I2S_DMATxHalfCplt; in HAL_I2S_Transmit_DMA()
1146 hi2s->hdmatx->XferCpltCallback = I2S_DMATxCplt; in HAL_I2S_Transmit_DMA()
1149 hi2s->hdmatx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Transmit_DMA()
1152 if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmatx, in HAL_I2S_Transmit_DMA()
1153 (uint32_t)hi2s->pTxBuffPtr, in HAL_I2S_Transmit_DMA()
1154 (uint32_t)&hi2s->Instance->DR, in HAL_I2S_Transmit_DMA()
1155 hi2s->TxXferSize)) in HAL_I2S_Transmit_DMA()
1158 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Transmit_DMA()
1159 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit_DMA()
1161 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1165 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1168 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_I2S_Transmit_DMA()
1171 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_Transmit_DMA()
1175 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Transmit_DMA()
1178 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_DMA()
1198 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_DMA() argument
1207 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_DMA()
1213 __HAL_LOCK(hi2s); in HAL_I2S_Receive_DMA()
1216 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_DMA()
1217 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_DMA()
1218 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_DMA()
1220 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_DMA()
1224 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_DMA()
1225 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_DMA()
1229 hi2s->RxXferSize = Size; in HAL_I2S_Receive_DMA()
1230 hi2s->RxXferCount = Size; in HAL_I2S_Receive_DMA()
1234 hi2s->hdmarx->XferHalfCpltCallback = I2S_DMARxHalfCplt; in HAL_I2S_Receive_DMA()
1237 hi2s->hdmarx->XferCpltCallback = I2S_DMARxCplt; in HAL_I2S_Receive_DMA()
1240 hi2s->hdmarx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Receive_DMA()
1243 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive_DMA()
1247 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive_DMA()
1251 …if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, (uint32_t)hi2s->pRxBuf… in HAL_I2S_Receive_DMA()
1252 hi2s->RxXferSize)) in HAL_I2S_Receive_DMA()
1255 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Receive_DMA()
1256 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive_DMA()
1258 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1262 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1265 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_I2S_Receive_DMA()
1268 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_Receive_DMA()
1272 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Receive_DMA()
1275 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_DMA()
1287 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAPause() argument
1290 __HAL_LOCK(hi2s); in HAL_I2S_DMAPause()
1292 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAPause()
1295 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAPause()
1297 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAPause()
1300 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAPause()
1308 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAPause()
1319 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAResume() argument
1322 __HAL_LOCK(hi2s); in HAL_I2S_DMAResume()
1324 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAResume()
1327 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAResume()
1329 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAResume()
1332 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAResume()
1340 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_DMAResume()
1343 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_DMAResume()
1347 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAResume()
1358 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAStop() argument
1367 if ((hi2s->Init.Mode == I2S_MODE_MASTER_TX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_TX)) in HAL_I2S_DMAStop()
1370 if (hi2s->hdmatx != NULL) in HAL_I2S_DMAStop()
1373 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmatx)) in HAL_I2S_DMAStop()
1375 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1381 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1384 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1385 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1390 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1393 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1394 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1399 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1402 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_DMAStop()
1405 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAStop()
1409 else if ((hi2s->Init.Mode == I2S_MODE_MASTER_RX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_RX)) in HAL_I2S_DMAStop()
1412 if (hi2s->hdmarx != NULL) in HAL_I2S_DMAStop()
1415 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmarx)) in HAL_I2S_DMAStop()
1417 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1423 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1426 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_DMAStop()
1429 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAStop()
1431 if (hi2s->Init.Mode == I2S_MODE_SLAVE_RX) in HAL_I2S_DMAStop()
1434 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX); in HAL_I2S_DMAStop()
1437 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1443 READ_REG((hi2s->Instance)->DR); in HAL_I2S_DMAStop()
1447 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1458 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s) in HAL_I2S_IRQHandler() argument
1460 uint32_t itsource = hi2s->Instance->CR2; in HAL_I2S_IRQHandler()
1461 uint32_t itflag = hi2s->Instance->SR; in HAL_I2S_IRQHandler()
1467 I2S_Receive_IT(hi2s); in HAL_I2S_IRQHandler()
1474 I2S_Transmit_IT(hi2s); in HAL_I2S_IRQHandler()
1485 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1488 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_IRQHandler()
1495 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1498 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_IRQHandler()
1502 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_IRQHandler()
1506 hi2s->ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1508 HAL_I2S_ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1519 __weak void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxHalfCpltCallback() argument
1522 UNUSED(hi2s); in HAL_I2S_TxHalfCpltCallback()
1535 __weak void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxCpltCallback() argument
1538 UNUSED(hi2s); in HAL_I2S_TxCpltCallback()
1551 __weak void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxHalfCpltCallback() argument
1554 UNUSED(hi2s); in HAL_I2S_RxHalfCpltCallback()
1567 __weak void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxCpltCallback() argument
1570 UNUSED(hi2s); in HAL_I2S_RxCpltCallback()
1583 __weak void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_ErrorCallback() argument
1586 UNUSED(hi2s); in HAL_I2S_ErrorCallback()
1618 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetState() argument
1620 return hi2s->State; in HAL_I2S_GetState()
1629 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetError() argument
1631 return hi2s->ErrorCode; in HAL_I2S_GetError()
1652 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxCplt() local
1658 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in I2S_DMATxCplt()
1660 hi2s->TxXferCount = 0U; in I2S_DMATxCplt()
1661 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMATxCplt()
1665 hi2s->TxCpltCallback(hi2s); in I2S_DMATxCplt()
1667 HAL_I2S_TxCpltCallback(hi2s); in I2S_DMATxCplt()
1679 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxHalfCplt() local
1683 hi2s->TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1685 HAL_I2S_TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1697 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxCplt() local
1703 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in I2S_DMARxCplt()
1704 hi2s->RxXferCount = 0U; in I2S_DMARxCplt()
1705 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMARxCplt()
1709 hi2s->RxCpltCallback(hi2s); in I2S_DMARxCplt()
1711 HAL_I2S_RxCpltCallback(hi2s); in I2S_DMARxCplt()
1723 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxHalfCplt() local
1727 hi2s->RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1729 HAL_I2S_RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1741 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMAError() local
1744 CLEAR_BIT(hi2s->Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN)); in I2S_DMAError()
1745 hi2s->TxXferCount = 0U; in I2S_DMAError()
1746 hi2s->RxXferCount = 0U; in I2S_DMAError()
1748 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMAError()
1751 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in I2S_DMAError()
1754 hi2s->ErrorCallback(hi2s); in I2S_DMAError()
1756 HAL_I2S_ErrorCallback(hi2s); in I2S_DMAError()
1766 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s) in I2S_Transmit_IT() argument
1769 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in I2S_Transmit_IT()
1770 hi2s->pTxBuffPtr++; in I2S_Transmit_IT()
1771 hi2s->TxXferCount--; in I2S_Transmit_IT()
1773 if (hi2s->TxXferCount == 0U) in I2S_Transmit_IT()
1776 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in I2S_Transmit_IT()
1778 hi2s->State = HAL_I2S_STATE_READY; in I2S_Transmit_IT()
1781 hi2s->TxCpltCallback(hi2s); in I2S_Transmit_IT()
1783 HAL_I2S_TxCpltCallback(hi2s); in I2S_Transmit_IT()
1794 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s) in I2S_Receive_IT() argument
1797 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in I2S_Receive_IT()
1798 hi2s->pRxBuffPtr++; in I2S_Receive_IT()
1799 hi2s->RxXferCount--; in I2S_Receive_IT()
1801 if (hi2s->RxXferCount == 0U) in I2S_Receive_IT()
1804 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in I2S_Receive_IT()
1806 hi2s->State = HAL_I2S_STATE_READY; in I2S_Receive_IT()
1809 hi2s->RxCpltCallback(hi2s); in I2S_Receive_IT()
1811 HAL_I2S_RxCpltCallback(hi2s); in I2S_Receive_IT()
1825 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Flag… in I2S_WaitFlagStateUntilTimeout() argument
1834 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State) in I2S_WaitFlagStateUntilTimeout()
1841 hi2s->State = HAL_I2S_STATE_READY; in I2S_WaitFlagStateUntilTimeout()
1844 __HAL_UNLOCK(hi2s); in I2S_WaitFlagStateUntilTimeout()