Lines Matching refs:hi2s

221 static void               I2S_Transmit_IT(I2S_HandleTypeDef *hi2s);
222 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s);
223 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Fla…
270 HAL_StatusTypeDef HAL_I2S_Init(I2S_HandleTypeDef *hi2s) in HAL_I2S_Init() argument
279 if (hi2s == NULL) in HAL_I2S_Init()
285 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_Init()
286 assert_param(IS_I2S_MODE(hi2s->Init.Mode)); in HAL_I2S_Init()
287 assert_param(IS_I2S_STANDARD(hi2s->Init.Standard)); in HAL_I2S_Init()
288 assert_param(IS_I2S_DATA_FORMAT(hi2s->Init.DataFormat)); in HAL_I2S_Init()
289 assert_param(IS_I2S_MCLK_OUTPUT(hi2s->Init.MCLKOutput)); in HAL_I2S_Init()
290 assert_param(IS_I2S_AUDIO_FREQ(hi2s->Init.AudioFreq)); in HAL_I2S_Init()
291 assert_param(IS_I2S_CPOL(hi2s->Init.CPOL)); in HAL_I2S_Init()
293 if (hi2s->State == HAL_I2S_STATE_RESET) in HAL_I2S_Init()
296 hi2s->Lock = HAL_UNLOCKED; in HAL_I2S_Init()
300hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_Init()
301hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_Init()
302hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_Init()
303hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_Init()
304hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_Init()
306 if (hi2s->MspInitCallback == NULL) in HAL_I2S_Init()
308 hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit */ in HAL_I2S_Init()
312 hi2s->MspInitCallback(hi2s); in HAL_I2S_Init()
315 HAL_I2S_MspInit(hi2s); in HAL_I2S_Init()
319 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_Init()
323 CLEAR_BIT(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CKPOL | \ in HAL_I2S_Init()
326 hi2s->Instance->I2SPR = 0x0002U; in HAL_I2S_Init()
330 if (hi2s->Init.AudioFreq != I2S_AUDIOFREQ_DEFAULT) in HAL_I2S_Init()
333 if (hi2s->Init.DataFormat == I2S_DATAFORMAT_16B) in HAL_I2S_Init()
345 if (hi2s->Init.Standard <= I2S_STANDARD_LSB) in HAL_I2S_Init()
352 if (hi2s->Instance == SPI2) in HAL_I2S_Init()
357 else if (hi2s->Instance == SPI3) in HAL_I2S_Init()
368 if (hi2s->Init.MCLKOutput == I2S_MCLKOUTPUT_ENABLE) in HAL_I2S_Init()
371 if (hi2s->Init.DataFormat != I2S_DATAFORMAT_16B) in HAL_I2S_Init()
373 tmp = (uint32_t)(((((i2sclk / (packetlength * 4U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
377 tmp = (uint32_t)(((((i2sclk / (packetlength * 8U)) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
383 tmp = (uint32_t)(((((i2sclk / packetlength) * 10U) / hi2s->Init.AudioFreq)) + 5U); in HAL_I2S_Init()
409 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_PRESCALER); in HAL_I2S_Init()
416hi2s->Instance->I2SPR = (uint32_t)((uint32_t)i2sdiv | (uint32_t)(i2sodd | (uint32_t)hi2s->Init.MCL… in HAL_I2S_Init()
420 MODIFY_REG(hi2s->Instance->I2SCFGR, (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ in HAL_I2S_Init()
424 (SPI_I2SCFGR_I2SMOD | hi2s->Init.Mode | \ in HAL_I2S_Init()
425 hi2s->Init.Standard | hi2s->Init.DataFormat | \ in HAL_I2S_Init()
426 hi2s->Init.CPOL)); in HAL_I2S_Init()
429 …if ((hi2s->Init.Standard == I2S_STANDARD_PCM_SHORT) || ((hi2s->Init.Standard == I2S_STANDARD_PCM_L… in HAL_I2S_Init()
432 SET_BIT(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_ASTRTEN); in HAL_I2S_Init()
436 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Init()
437 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Init()
448 HAL_StatusTypeDef HAL_I2S_DeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_DeInit() argument
451 if (hi2s == NULL) in HAL_I2S_DeInit()
457 assert_param(IS_I2S_ALL_INSTANCE(hi2s->Instance)); in HAL_I2S_DeInit()
459 hi2s->State = HAL_I2S_STATE_BUSY; in HAL_I2S_DeInit()
462 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DeInit()
465 if (hi2s->MspDeInitCallback == NULL) in HAL_I2S_DeInit()
467 hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit */ in HAL_I2S_DeInit()
471 hi2s->MspDeInitCallback(hi2s); in HAL_I2S_DeInit()
474 HAL_I2S_MspDeInit(hi2s); in HAL_I2S_DeInit()
477 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_DeInit()
478 hi2s->State = HAL_I2S_STATE_RESET; in HAL_I2S_DeInit()
481 __HAL_UNLOCK(hi2s); in HAL_I2S_DeInit()
492 __weak void HAL_I2S_MspInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspInit() argument
495 UNUSED(hi2s); in HAL_I2S_MspInit()
508 __weak void HAL_I2S_MspDeInit(I2S_HandleTypeDef *hi2s) in HAL_I2S_MspDeInit() argument
511 UNUSED(hi2s); in HAL_I2S_MspDeInit()
528 HAL_StatusTypeDef HAL_I2S_RegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Callb… in HAL_I2S_RegisterCallback() argument
536 hi2s->ErrorCode |= HAL_I2S_ERROR_INVALID_CALLBACK; in HAL_I2S_RegisterCallback()
541 __HAL_LOCK(hi2s); in HAL_I2S_RegisterCallback()
543 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_RegisterCallback()
548 hi2s->TxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
552 hi2s->RxCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
556 hi2s->TxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
560 hi2s->RxHalfCpltCallback = pCallback; in HAL_I2S_RegisterCallback()
564 hi2s->ErrorCallback = pCallback; in HAL_I2S_RegisterCallback()
568 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
572 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
577 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
584 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_RegisterCallback()
589 hi2s->MspInitCallback = pCallback; in HAL_I2S_RegisterCallback()
593 hi2s->MspDeInitCallback = pCallback; in HAL_I2S_RegisterCallback()
598 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
608 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_RegisterCallback()
615 __HAL_UNLOCK(hi2s); in HAL_I2S_RegisterCallback()
627 HAL_StatusTypeDef HAL_I2S_UnRegisterCallback(I2S_HandleTypeDef *hi2s, HAL_I2S_CallbackIDTypeDef Cal… in HAL_I2S_UnRegisterCallback() argument
632 __HAL_LOCK(hi2s); in HAL_I2S_UnRegisterCallback()
634 if (HAL_I2S_STATE_READY == hi2s->State) in HAL_I2S_UnRegisterCallback()
639hi2s->TxCpltCallback = HAL_I2S_TxCpltCallback; /* Legacy weak TxCpltCallback … in HAL_I2S_UnRegisterCallback()
643hi2s->RxCpltCallback = HAL_I2S_RxCpltCallback; /* Legacy weak RxCpltCallback … in HAL_I2S_UnRegisterCallback()
647hi2s->TxHalfCpltCallback = HAL_I2S_TxHalfCpltCallback; /* Legacy weak TxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
651hi2s->RxHalfCpltCallback = HAL_I2S_RxHalfCpltCallback; /* Legacy weak RxHalfCpltCallback … in HAL_I2S_UnRegisterCallback()
655hi2s->ErrorCallback = HAL_I2S_ErrorCallback; /* Legacy weak ErrorCallback … in HAL_I2S_UnRegisterCallback()
659hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
663hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
668 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
675 else if (HAL_I2S_STATE_RESET == hi2s->State) in HAL_I2S_UnRegisterCallback()
680hi2s->MspInitCallback = HAL_I2S_MspInit; /* Legacy weak MspInit … in HAL_I2S_UnRegisterCallback()
684hi2s->MspDeInitCallback = HAL_I2S_MspDeInit; /* Legacy weak MspDeInit … in HAL_I2S_UnRegisterCallback()
689 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
699 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_INVALID_CALLBACK); in HAL_I2S_UnRegisterCallback()
706 __HAL_UNLOCK(hi2s); in HAL_I2S_UnRegisterCallback()
771 HAL_StatusTypeDef HAL_I2S_Transmit(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_… in HAL_I2S_Transmit() argument
780 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit()
786 __HAL_LOCK(hi2s); in HAL_I2S_Transmit()
789 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit()
790 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit()
791 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit()
793 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit()
797 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit()
798 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit()
802 hi2s->TxXferSize = Size; in HAL_I2S_Transmit()
803 hi2s->TxXferCount = Size; in HAL_I2S_Transmit()
806 tmpreg_cfgr = hi2s->Instance->I2SCFGR; in HAL_I2S_Transmit()
809 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit()
812 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit()
816 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
819 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
820 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
821 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
825 while (hi2s->TxXferCount > 0U) in HAL_I2S_Transmit()
827 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in HAL_I2S_Transmit()
828 hi2s->pTxBuffPtr++; in HAL_I2S_Transmit()
829 hi2s->TxXferCount--; in HAL_I2S_Transmit()
832 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
835 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
836 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
837 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
842 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_UDR) == SET) in HAL_I2S_Transmit()
845 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_Transmit()
848 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_Transmit()
857 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, Timeout) != HAL_OK) in HAL_I2S_Transmit()
860 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Transmit()
861 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
862 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
867 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit()
868 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit()
889 HAL_StatusTypeDef HAL_I2S_Receive(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size, uint32_t… in HAL_I2S_Receive() argument
898 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive()
904 __HAL_LOCK(hi2s); in HAL_I2S_Receive()
907 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive()
908 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive()
909 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive()
911 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive()
915 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive()
916 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive()
920 hi2s->RxXferSize = Size; in HAL_I2S_Receive()
921 hi2s->RxXferCount = Size; in HAL_I2S_Receive()
925 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive()
928 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive()
932 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive()
936 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
940 while (hi2s->RxXferCount > 0U) in HAL_I2S_Receive()
943 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_RXNE, SET, Timeout) != HAL_OK) in HAL_I2S_Receive()
946 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_Receive()
947 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
948 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
952 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in HAL_I2S_Receive()
953 hi2s->pRxBuffPtr++; in HAL_I2S_Receive()
954 hi2s->RxXferCount--; in HAL_I2S_Receive()
957 if (__HAL_I2S_GET_FLAG(hi2s, I2S_FLAG_OVR) == SET) in HAL_I2S_Receive()
960 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive()
963 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_Receive()
967 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive()
968 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive()
986 HAL_StatusTypeDef HAL_I2S_Transmit_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_IT() argument
995 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_IT()
1001 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_IT()
1004 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_IT()
1005 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_IT()
1006 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_IT()
1008 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_IT()
1012 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_IT()
1013 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_IT()
1017 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_IT()
1018 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_IT()
1021 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_IT()
1024 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_Transmit_IT()
1027 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Transmit_IT()
1030 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_IT()
1052 HAL_StatusTypeDef HAL_I2S_Receive_IT(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_IT() argument
1061 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_IT()
1067 __HAL_LOCK(hi2s); in HAL_I2S_Receive_IT()
1070 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_IT()
1071 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_IT()
1072 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_IT()
1074 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_IT()
1078 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_IT()
1079 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_IT()
1083 hi2s->RxXferSize = Size; in HAL_I2S_Receive_IT()
1084 hi2s->RxXferCount = Size; in HAL_I2S_Receive_IT()
1087 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_IT()
1090 __HAL_I2S_ENABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_Receive_IT()
1093 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SE) != SPI_I2SCFGR_I2SE) in HAL_I2S_Receive_IT()
1096 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_IT()
1116 HAL_StatusTypeDef HAL_I2S_Transmit_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Transmit_DMA() argument
1125 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Transmit_DMA()
1131 __HAL_LOCK(hi2s); in HAL_I2S_Transmit_DMA()
1134 hi2s->State = HAL_I2S_STATE_BUSY_TX; in HAL_I2S_Transmit_DMA()
1135 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Transmit_DMA()
1136 hi2s->pTxBuffPtr = pData; in HAL_I2S_Transmit_DMA()
1138 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Transmit_DMA()
1142 hi2s->TxXferSize = (Size << 1U); in HAL_I2S_Transmit_DMA()
1143 hi2s->TxXferCount = (Size << 1U); in HAL_I2S_Transmit_DMA()
1147 hi2s->TxXferSize = Size; in HAL_I2S_Transmit_DMA()
1148 hi2s->TxXferCount = Size; in HAL_I2S_Transmit_DMA()
1152 hi2s->hdmatx->XferHalfCpltCallback = I2S_DMATxHalfCplt; in HAL_I2S_Transmit_DMA()
1155 hi2s->hdmatx->XferCpltCallback = I2S_DMATxCplt; in HAL_I2S_Transmit_DMA()
1158 hi2s->hdmatx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Transmit_DMA()
1161 if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmatx, in HAL_I2S_Transmit_DMA()
1162 (uint32_t)hi2s->pTxBuffPtr, in HAL_I2S_Transmit_DMA()
1163 (uint32_t)&hi2s->Instance->DR, in HAL_I2S_Transmit_DMA()
1164 hi2s->TxXferSize)) in HAL_I2S_Transmit_DMA()
1167 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Transmit_DMA()
1168 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Transmit_DMA()
1170 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1174 __HAL_UNLOCK(hi2s); in HAL_I2S_Transmit_DMA()
1177 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_TXDMAEN)) in HAL_I2S_Transmit_DMA()
1180 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_Transmit_DMA()
1184 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Transmit_DMA()
1187 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Transmit_DMA()
1207 HAL_StatusTypeDef HAL_I2S_Receive_DMA(I2S_HandleTypeDef *hi2s, uint16_t *pData, uint16_t Size) in HAL_I2S_Receive_DMA() argument
1216 if (hi2s->State != HAL_I2S_STATE_READY) in HAL_I2S_Receive_DMA()
1222 __HAL_LOCK(hi2s); in HAL_I2S_Receive_DMA()
1225 hi2s->State = HAL_I2S_STATE_BUSY_RX; in HAL_I2S_Receive_DMA()
1226 hi2s->ErrorCode = HAL_I2S_ERROR_NONE; in HAL_I2S_Receive_DMA()
1227 hi2s->pRxBuffPtr = pData; in HAL_I2S_Receive_DMA()
1229 tmpreg_cfgr = hi2s->Instance->I2SCFGR & (SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN); in HAL_I2S_Receive_DMA()
1233 hi2s->RxXferSize = (Size << 1U); in HAL_I2S_Receive_DMA()
1234 hi2s->RxXferCount = (Size << 1U); in HAL_I2S_Receive_DMA()
1238 hi2s->RxXferSize = Size; in HAL_I2S_Receive_DMA()
1239 hi2s->RxXferCount = Size; in HAL_I2S_Receive_DMA()
1243 hi2s->hdmarx->XferHalfCpltCallback = I2S_DMARxHalfCplt; in HAL_I2S_Receive_DMA()
1246 hi2s->hdmarx->XferCpltCallback = I2S_DMARxCplt; in HAL_I2S_Receive_DMA()
1249 hi2s->hdmarx->XferErrorCallback = I2S_DMAError; in HAL_I2S_Receive_DMA()
1252 if ((hi2s->Instance->I2SCFGR & SPI_I2SCFGR_I2SCFG) == I2S_MODE_MASTER_RX) in HAL_I2S_Receive_DMA()
1256 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_Receive_DMA()
1260 …if (HAL_OK != HAL_DMA_Start_IT(hi2s->hdmarx, (uint32_t)&hi2s->Instance->DR, (uint32_t)hi2s->pRxBuf… in HAL_I2S_Receive_DMA()
1261 hi2s->RxXferSize)) in HAL_I2S_Receive_DMA()
1264 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_Receive_DMA()
1265 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_Receive_DMA()
1267 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1271 __HAL_UNLOCK(hi2s); in HAL_I2S_Receive_DMA()
1274 if (HAL_IS_BIT_CLR(hi2s->Instance->CR2, SPI_CR2_RXDMAEN)) in HAL_I2S_Receive_DMA()
1277 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_Receive_DMA()
1281 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_Receive_DMA()
1284 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_Receive_DMA()
1296 HAL_StatusTypeDef HAL_I2S_DMAPause(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAPause() argument
1299 __HAL_LOCK(hi2s); in HAL_I2S_DMAPause()
1301 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAPause()
1304 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAPause()
1306 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAPause()
1309 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAPause()
1317 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAPause()
1328 HAL_StatusTypeDef HAL_I2S_DMAResume(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAResume() argument
1331 __HAL_LOCK(hi2s); in HAL_I2S_DMAResume()
1333 if (hi2s->State == HAL_I2S_STATE_BUSY_TX) in HAL_I2S_DMAResume()
1336 SET_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAResume()
1338 else if (hi2s->State == HAL_I2S_STATE_BUSY_RX) in HAL_I2S_DMAResume()
1341 SET_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAResume()
1349 if (HAL_IS_BIT_CLR(hi2s->Instance->I2SCFGR, SPI_I2SCFGR_I2SE)) in HAL_I2S_DMAResume()
1352 __HAL_I2S_ENABLE(hi2s); in HAL_I2S_DMAResume()
1356 __HAL_UNLOCK(hi2s); in HAL_I2S_DMAResume()
1367 HAL_StatusTypeDef HAL_I2S_DMAStop(I2S_HandleTypeDef *hi2s) in HAL_I2S_DMAStop() argument
1376 if ((hi2s->Init.Mode == I2S_MODE_MASTER_TX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_TX)) in HAL_I2S_DMAStop()
1379 if (hi2s->hdmatx != NULL) in HAL_I2S_DMAStop()
1382 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmatx)) in HAL_I2S_DMAStop()
1384 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1390 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_TXE, SET, 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 if (I2S_WaitFlagStateUntilTimeout(hi2s, I2S_FLAG_BSY, RESET, I2S_TIMEOUT_FLAG) != HAL_OK) in HAL_I2S_DMAStop()
1402 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_TIMEOUT); in HAL_I2S_DMAStop()
1403 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1408 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1411 __HAL_I2S_CLEAR_UDRFLAG(hi2s); in HAL_I2S_DMAStop()
1414 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in HAL_I2S_DMAStop()
1418 else if ((hi2s->Init.Mode == I2S_MODE_MASTER_RX) || (hi2s->Init.Mode == I2S_MODE_SLAVE_RX)) in HAL_I2S_DMAStop()
1421 if (hi2s->hdmarx != NULL) in HAL_I2S_DMAStop()
1424 if (HAL_OK != HAL_DMA_Abort(hi2s->hdmarx)) in HAL_I2S_DMAStop()
1426 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in HAL_I2S_DMAStop()
1432 __HAL_I2S_DISABLE(hi2s); in HAL_I2S_DMAStop()
1435 __HAL_I2S_CLEAR_OVRFLAG(hi2s); in HAL_I2S_DMAStop()
1438 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in HAL_I2S_DMAStop()
1440 if (hi2s->Init.Mode == I2S_MODE_SLAVE_RX) in HAL_I2S_DMAStop()
1443 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_BUSY_LINE_RX); in HAL_I2S_DMAStop()
1446 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1452 READ_REG((hi2s->Instance)->DR); in HAL_I2S_DMAStop()
1456 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_DMAStop()
1467 void HAL_I2S_IRQHandler(I2S_HandleTypeDef *hi2s) in HAL_I2S_IRQHandler() argument
1469 uint32_t itsource = hi2s->Instance->CR2; in HAL_I2S_IRQHandler()
1470 uint32_t itflag = hi2s->Instance->SR; in HAL_I2S_IRQHandler()
1476 I2S_Receive_IT(hi2s); in HAL_I2S_IRQHandler()
1483 I2S_Transmit_IT(hi2s); in HAL_I2S_IRQHandler()
1494 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1497 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_OVR); in HAL_I2S_IRQHandler()
1504 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in HAL_I2S_IRQHandler()
1507 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_UDR); in HAL_I2S_IRQHandler()
1511 hi2s->State = HAL_I2S_STATE_READY; in HAL_I2S_IRQHandler()
1515 hi2s->ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1517 HAL_I2S_ErrorCallback(hi2s); in HAL_I2S_IRQHandler()
1528 __weak void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxHalfCpltCallback() argument
1531 UNUSED(hi2s); in HAL_I2S_TxHalfCpltCallback()
1544 __weak void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_TxCpltCallback() argument
1547 UNUSED(hi2s); in HAL_I2S_TxCpltCallback()
1560 __weak void HAL_I2S_RxHalfCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxHalfCpltCallback() argument
1563 UNUSED(hi2s); in HAL_I2S_RxHalfCpltCallback()
1576 __weak void HAL_I2S_RxCpltCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_RxCpltCallback() argument
1579 UNUSED(hi2s); in HAL_I2S_RxCpltCallback()
1592 __weak void HAL_I2S_ErrorCallback(I2S_HandleTypeDef *hi2s) in HAL_I2S_ErrorCallback() argument
1595 UNUSED(hi2s); in HAL_I2S_ErrorCallback()
1627 HAL_I2S_StateTypeDef HAL_I2S_GetState(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetState() argument
1629 return hi2s->State; in HAL_I2S_GetState()
1638 uint32_t HAL_I2S_GetError(I2S_HandleTypeDef *hi2s) in HAL_I2S_GetError() argument
1640 return hi2s->ErrorCode; in HAL_I2S_GetError()
1661 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxCplt() local
1667 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_TXDMAEN); in I2S_DMATxCplt()
1669 hi2s->TxXferCount = 0U; in I2S_DMATxCplt()
1670 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMATxCplt()
1674 hi2s->TxCpltCallback(hi2s); in I2S_DMATxCplt()
1676 HAL_I2S_TxCpltCallback(hi2s); in I2S_DMATxCplt()
1688 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMATxHalfCplt() local
1692 hi2s->TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1694 HAL_I2S_TxHalfCpltCallback(hi2s); in I2S_DMATxHalfCplt()
1706 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxCplt() local
1712 CLEAR_BIT(hi2s->Instance->CR2, SPI_CR2_RXDMAEN); in I2S_DMARxCplt()
1713 hi2s->RxXferCount = 0U; in I2S_DMARxCplt()
1714 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMARxCplt()
1718 hi2s->RxCpltCallback(hi2s); in I2S_DMARxCplt()
1720 HAL_I2S_RxCpltCallback(hi2s); in I2S_DMARxCplt()
1732 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMARxHalfCplt() local
1736 hi2s->RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1738 HAL_I2S_RxHalfCpltCallback(hi2s); in I2S_DMARxHalfCplt()
1750 …I2S_HandleTypeDef *hi2s = (I2S_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; /* Derogation … in I2S_DMAError() local
1753 CLEAR_BIT(hi2s->Instance->CR2, (SPI_CR2_RXDMAEN | SPI_CR2_TXDMAEN)); in I2S_DMAError()
1754 hi2s->TxXferCount = 0U; in I2S_DMAError()
1755 hi2s->RxXferCount = 0U; in I2S_DMAError()
1757 hi2s->State = HAL_I2S_STATE_READY; in I2S_DMAError()
1760 SET_BIT(hi2s->ErrorCode, HAL_I2S_ERROR_DMA); in I2S_DMAError()
1763 hi2s->ErrorCallback(hi2s); in I2S_DMAError()
1765 HAL_I2S_ErrorCallback(hi2s); in I2S_DMAError()
1775 static void I2S_Transmit_IT(I2S_HandleTypeDef *hi2s) in I2S_Transmit_IT() argument
1778 hi2s->Instance->DR = (*hi2s->pTxBuffPtr); in I2S_Transmit_IT()
1779 hi2s->pTxBuffPtr++; in I2S_Transmit_IT()
1780 hi2s->TxXferCount--; in I2S_Transmit_IT()
1782 if (hi2s->TxXferCount == 0U) in I2S_Transmit_IT()
1785 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_TXE | I2S_IT_ERR)); in I2S_Transmit_IT()
1787 hi2s->State = HAL_I2S_STATE_READY; in I2S_Transmit_IT()
1790 hi2s->TxCpltCallback(hi2s); in I2S_Transmit_IT()
1792 HAL_I2S_TxCpltCallback(hi2s); in I2S_Transmit_IT()
1803 static void I2S_Receive_IT(I2S_HandleTypeDef *hi2s) in I2S_Receive_IT() argument
1806 (*hi2s->pRxBuffPtr) = (uint16_t)hi2s->Instance->DR; in I2S_Receive_IT()
1807 hi2s->pRxBuffPtr++; in I2S_Receive_IT()
1808 hi2s->RxXferCount--; in I2S_Receive_IT()
1810 if (hi2s->RxXferCount == 0U) in I2S_Receive_IT()
1813 __HAL_I2S_DISABLE_IT(hi2s, (I2S_IT_RXNE | I2S_IT_ERR)); in I2S_Receive_IT()
1815 hi2s->State = HAL_I2S_STATE_READY; in I2S_Receive_IT()
1818 hi2s->RxCpltCallback(hi2s); in I2S_Receive_IT()
1820 HAL_I2S_RxCpltCallback(hi2s); in I2S_Receive_IT()
1834 static HAL_StatusTypeDef I2S_WaitFlagStateUntilTimeout(I2S_HandleTypeDef *hi2s, uint32_t Flag, Flag… in I2S_WaitFlagStateUntilTimeout() argument
1843 while (((__HAL_I2S_GET_FLAG(hi2s, Flag)) ? SET : RESET) != State) in I2S_WaitFlagStateUntilTimeout()
1850 hi2s->State = HAL_I2S_STATE_READY; in I2S_WaitFlagStateUntilTimeout()
1853 __HAL_UNLOCK(hi2s); in I2S_WaitFlagStateUntilTimeout()