Lines Matching refs:hsai

257 static void SAI_FillFifo(SAI_HandleTypeDef *hsai);
258 static uint32_t SAI_InterruptFlag(const SAI_HandleTypeDef *hsai, SAI_ModeTypedef mode);
259 static HAL_StatusTypeDef SAI_InitI2S(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize,…
260 static HAL_StatusTypeDef SAI_InitPCM(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize,…
262 static HAL_StatusTypeDef SAI_Disable(SAI_HandleTypeDef *hsai);
263 static void SAI_Transmit_IT8Bit(SAI_HandleTypeDef *hsai);
264 static void SAI_Transmit_IT16Bit(SAI_HandleTypeDef *hsai);
265 static void SAI_Transmit_IT32Bit(SAI_HandleTypeDef *hsai);
266 static void SAI_Receive_IT8Bit(SAI_HandleTypeDef *hsai);
267 static void SAI_Receive_IT16Bit(SAI_HandleTypeDef *hsai);
268 static void SAI_Receive_IT32Bit(SAI_HandleTypeDef *hsai);
329 HAL_StatusTypeDef HAL_SAI_InitProtocol(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasiz… in HAL_SAI_InitProtocol() argument
342 status = SAI_InitI2S(hsai, protocol, datasize, nbslot); in HAL_SAI_InitProtocol()
346 status = SAI_InitPCM(hsai, protocol, datasize, nbslot); in HAL_SAI_InitProtocol()
355 status = HAL_SAI_Init(hsai); in HAL_SAI_InitProtocol()
368 HAL_StatusTypeDef HAL_SAI_Init(SAI_HandleTypeDef *hsai) in HAL_SAI_Init() argument
376 if (hsai == NULL) in HAL_SAI_Init()
382 assert_param(IS_SAI_ALL_INSTANCE(hsai->Instance)); in HAL_SAI_Init()
385 assert_param(IS_SAI_AUDIO_FREQUENCY(hsai->Init.AudioFrequency)); in HAL_SAI_Init()
386 assert_param(IS_SAI_BLOCK_PROTOCOL(hsai->Init.Protocol)); in HAL_SAI_Init()
387 assert_param(IS_SAI_BLOCK_MODE(hsai->Init.AudioMode)); in HAL_SAI_Init()
388 assert_param(IS_SAI_BLOCK_DATASIZE(hsai->Init.DataSize)); in HAL_SAI_Init()
389 assert_param(IS_SAI_BLOCK_FIRST_BIT(hsai->Init.FirstBit)); in HAL_SAI_Init()
390 assert_param(IS_SAI_BLOCK_CLOCK_STROBING(hsai->Init.ClockStrobing)); in HAL_SAI_Init()
391 assert_param(IS_SAI_BLOCK_SYNCHRO(hsai->Init.Synchro)); in HAL_SAI_Init()
392 assert_param(IS_SAI_BLOCK_MCK_OUTPUT(hsai->Init.MckOutput)); in HAL_SAI_Init()
393 assert_param(IS_SAI_BLOCK_OUTPUT_DRIVE(hsai->Init.OutputDrive)); in HAL_SAI_Init()
394 assert_param(IS_SAI_BLOCK_NODIVIDER(hsai->Init.NoDivider)); in HAL_SAI_Init()
395 assert_param(IS_SAI_BLOCK_FIFO_THRESHOLD(hsai->Init.FIFOThreshold)); in HAL_SAI_Init()
396 assert_param(IS_SAI_MONO_STEREO_MODE(hsai->Init.MonoStereoMode)); in HAL_SAI_Init()
397 assert_param(IS_SAI_BLOCK_COMPANDING_MODE(hsai->Init.CompandingMode)); in HAL_SAI_Init()
398 assert_param(IS_SAI_BLOCK_TRISTATE_MANAGEMENT(hsai->Init.TriState)); in HAL_SAI_Init()
399 assert_param(IS_SAI_BLOCK_SYNCEXT(hsai->Init.SynchroExt)); in HAL_SAI_Init()
400 assert_param(IS_SAI_BLOCK_MCK_OVERSAMPLING(hsai->Init.MckOverSampling)); in HAL_SAI_Init()
403 assert_param(IS_SAI_BLOCK_FRAME_LENGTH(hsai->FrameInit.FrameLength)); in HAL_SAI_Init()
404 assert_param(IS_SAI_BLOCK_ACTIVE_FRAME(hsai->FrameInit.ActiveFrameLength)); in HAL_SAI_Init()
405 assert_param(IS_SAI_BLOCK_FS_DEFINITION(hsai->FrameInit.FSDefinition)); in HAL_SAI_Init()
406 assert_param(IS_SAI_BLOCK_FS_POLARITY(hsai->FrameInit.FSPolarity)); in HAL_SAI_Init()
407 assert_param(IS_SAI_BLOCK_FS_OFFSET(hsai->FrameInit.FSOffset)); in HAL_SAI_Init()
410 assert_param(IS_SAI_BLOCK_FIRSTBIT_OFFSET(hsai->SlotInit.FirstBitOffset)); in HAL_SAI_Init()
411 assert_param(IS_SAI_BLOCK_SLOT_SIZE(hsai->SlotInit.SlotSize)); in HAL_SAI_Init()
412 assert_param(IS_SAI_BLOCK_SLOT_NUMBER(hsai->SlotInit.SlotNumber)); in HAL_SAI_Init()
413 assert_param(IS_SAI_SLOT_ACTIVE(hsai->SlotInit.SlotActive)); in HAL_SAI_Init()
416 assert_param(IS_FUNCTIONAL_STATE(hsai->Init.PdmInit.Activation)); in HAL_SAI_Init()
417 if (hsai->Init.PdmInit.Activation == ENABLE) in HAL_SAI_Init()
419 assert_param(IS_SAI_PDM_MIC_PAIRS_NUMBER(hsai->Init.PdmInit.MicPairsNbr)); in HAL_SAI_Init()
420 assert_param(IS_SAI_PDM_CLOCK_ENABLE(hsai->Init.PdmInit.ClockEnable)); in HAL_SAI_Init()
424 if (((hsai->Instance != SAI1_Block_A) && (hsai->Instance != SAI4_Block_A)) || in HAL_SAI_Init()
425 (hsai->Init.AudioMode != SAI_MODEMASTER_RX) || in HAL_SAI_Init()
426 (hsai->Init.Protocol != SAI_FREE_PROTOCOL)) in HAL_SAI_Init()
431 if ((hsai->Instance != SAI1_Block_A) || in HAL_SAI_Init()
432 (hsai->Init.AudioMode != SAI_MODEMASTER_RX) || in HAL_SAI_Init()
433 (hsai->Init.Protocol != SAI_FREE_PROTOCOL)) in HAL_SAI_Init()
441 if ((hsai->Instance == SAI1_Block_A) || (hsai->Instance == SAI1_Block_B)) in HAL_SAI_Init()
445 else if ((hsai->Instance == SAI2_Block_A) || (hsai->Instance == SAI2_Block_B)) in HAL_SAI_Init()
450 else if ((hsai->Instance == SAI3_Block_A) || (hsai->Instance == SAI3_Block_B)) in HAL_SAI_Init()
456 else if ((hsai->Instance == SAI4_Block_A) || (hsai->Instance == SAI4_Block_B)) in HAL_SAI_Init()
466 if (hsai->State == HAL_SAI_STATE_RESET) in HAL_SAI_Init()
469 hsai->Lock = HAL_UNLOCKED; in HAL_SAI_Init()
473 hsai->RxCpltCallback = HAL_SAI_RxCpltCallback; in HAL_SAI_Init()
474 hsai->RxHalfCpltCallback = HAL_SAI_RxHalfCpltCallback; in HAL_SAI_Init()
475 hsai->TxCpltCallback = HAL_SAI_TxCpltCallback; in HAL_SAI_Init()
476 hsai->TxHalfCpltCallback = HAL_SAI_TxHalfCpltCallback; in HAL_SAI_Init()
477 hsai->ErrorCallback = HAL_SAI_ErrorCallback; in HAL_SAI_Init()
480 if (hsai->MspInitCallback == NULL) in HAL_SAI_Init()
482 hsai->MspInitCallback = HAL_SAI_MspInit; in HAL_SAI_Init()
484 hsai->MspInitCallback(hsai); in HAL_SAI_Init()
487 HAL_SAI_MspInit(hsai); in HAL_SAI_Init()
492 if (SAI_Disable(hsai) != HAL_OK) in HAL_SAI_Init()
497 hsai->State = HAL_SAI_STATE_BUSY; in HAL_SAI_Init()
501 switch (hsai->Init.SynchroExt) in HAL_SAI_Init()
517 switch (hsai->Init.Synchro) in HAL_SAI_Init()
552 if (hsai->Init.AudioFrequency != SAI_AUDIO_FREQUENCY_MCKDIV) in HAL_SAI_Init()
558 if ((hsai->Instance == SAI1_Block_A) || (hsai->Instance == SAI1_Block_B)) in HAL_SAI_Init()
562 if ((hsai->Instance == SAI2_Block_A) || (hsai->Instance == SAI2_Block_B)) in HAL_SAI_Init()
567 if ((hsai->Instance == SAI3_Block_A) || (hsai->Instance == SAI3_Block_B)) in HAL_SAI_Init()
573 if ((hsai->Instance == SAI4_Block_A) || (hsai->Instance == SAI4_Block_B)) in HAL_SAI_Init()
584 if (hsai->Init.NoDivider == SAI_MASTERDIVIDER_DISABLE) in HAL_SAI_Init()
589 if (hsai->Init.Protocol == SAI_SPDIF_PROTOCOL) in HAL_SAI_Init()
594 else if (hsai->Init.Protocol == SAI_AC97_PROTOCOL) in HAL_SAI_Init()
602 tmpframelength = hsai->FrameInit.FrameLength; in HAL_SAI_Init()
606 tmpval = (freq * 10U) / (hsai->Init.AudioFrequency * tmpframelength); in HAL_SAI_Init()
612 tmposr = (hsai->Init.MckOverSampling == SAI_MCK_OVERSAMPLING_ENABLE) ? 2U : 1U; in HAL_SAI_Init()
614 tmpval = (freq * 10U) / (hsai->Init.AudioFrequency * tmposr * 256U); in HAL_SAI_Init()
616 hsai->Init.Mckdiv = tmpval / 10U; in HAL_SAI_Init()
621 hsai->Init.Mckdiv += 1U; in HAL_SAI_Init()
625 if (hsai->Init.Protocol == SAI_SPDIF_PROTOCOL) in HAL_SAI_Init()
627 hsai->Init.Mckdiv = hsai->Init.Mckdiv >> 1; in HAL_SAI_Init()
631 assert_param(IS_SAI_BLOCK_MASTER_DIVIDER(hsai->Init.Mckdiv)); in HAL_SAI_Init()
634 if ((hsai->Init.AudioMode == SAI_MODEMASTER_TX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) in HAL_SAI_Init()
637 ckstr_bits = (hsai->Init.ClockStrobing == SAI_CLOCKSTROBING_RISINGEDGE) ? 0U : SAI_xCR1_CKSTR; in HAL_SAI_Init()
642 ckstr_bits = (hsai->Init.ClockStrobing == SAI_CLOCKSTROBING_RISINGEDGE) ? SAI_xCR1_CKSTR : 0U; in HAL_SAI_Init()
647 hsai->Instance->CR1 &= ~(SAI_xCR1_MODE | SAI_xCR1_PRTCFG | SAI_xCR1_DS | \ in HAL_SAI_Init()
653 hsai->Instance->CR1 |= (hsai->Init.AudioMode | hsai->Init.Protocol | \ in HAL_SAI_Init()
654 hsai->Init.DataSize | hsai->Init.FirstBit | \ in HAL_SAI_Init()
656 hsai->Init.MonoStereoMode | hsai->Init.OutputDrive | \ in HAL_SAI_Init()
657 hsai->Init.NoDivider | (hsai->Init.Mckdiv << 20) | \ in HAL_SAI_Init()
658 hsai->Init.MckOverSampling | hsai->Init.MckOutput); in HAL_SAI_Init()
661 hsai->Instance->CR2 &= ~(SAI_xCR2_FTH | SAI_xCR2_FFLUSH | SAI_xCR2_COMP | SAI_xCR2_CPL); in HAL_SAI_Init()
662hsai->Instance->CR2 |= (hsai->Init.FIFOThreshold | hsai->Init.CompandingMode | hsai->Init.TriState… in HAL_SAI_Init()
665 hsai->Instance->FRCR &= (~(SAI_xFRCR_FRL | SAI_xFRCR_FSALL | SAI_xFRCR_FSDEF | \ in HAL_SAI_Init()
667 hsai->Instance->FRCR |= ((hsai->FrameInit.FrameLength - 1U) | in HAL_SAI_Init()
668 hsai->FrameInit.FSOffset | in HAL_SAI_Init()
669 hsai->FrameInit.FSDefinition | in HAL_SAI_Init()
670 hsai->FrameInit.FSPolarity | in HAL_SAI_Init()
671 ((hsai->FrameInit.ActiveFrameLength - 1U) << 8)); in HAL_SAI_Init()
675 hsai->Instance->SLOTR &= (~(SAI_xSLOTR_FBOFF | SAI_xSLOTR_SLOTSZ | \ in HAL_SAI_Init()
678 hsai->Instance->SLOTR |= hsai->SlotInit.FirstBitOffset | hsai->SlotInit.SlotSize | \ in HAL_SAI_Init()
679 … (hsai->SlotInit.SlotActive << 16) | ((hsai->SlotInit.SlotNumber - 1U) << 8); in HAL_SAI_Init()
683 if ((hsai->Instance == SAI1_Block_A) || (hsai->Instance == SAI4_Block_A)) in HAL_SAI_Init()
685 if (hsai->Instance == SAI1_Block_A) in HAL_SAI_Init()
690 if (hsai->Init.PdmInit.Activation == ENABLE) in HAL_SAI_Init()
693 SaiBaseAddress->PDMCR = (hsai->Init.PdmInit.ClockEnable | in HAL_SAI_Init()
694 ((hsai->Init.PdmInit.MicPairsNbr - 1U) << SAI_PDMCR_MICNBR_Pos)); in HAL_SAI_Init()
700 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Init()
703 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Init()
706 __HAL_UNLOCK(hsai); in HAL_SAI_Init()
717 HAL_StatusTypeDef HAL_SAI_DeInit(SAI_HandleTypeDef *hsai) in HAL_SAI_DeInit() argument
722 if (hsai == NULL) in HAL_SAI_DeInit()
727 hsai->State = HAL_SAI_STATE_BUSY; in HAL_SAI_DeInit()
730 hsai->Instance->IMR = 0; in HAL_SAI_DeInit()
731 hsai->Instance->CLRFR = 0xFFFFFFFFU; in HAL_SAI_DeInit()
734 if (SAI_Disable(hsai) != HAL_OK) in HAL_SAI_DeInit()
737 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_DeInit()
740 __HAL_UNLOCK(hsai); in HAL_SAI_DeInit()
746 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in HAL_SAI_DeInit()
750 if ((hsai->Instance == SAI1_Block_A) || (hsai->Instance == SAI4_Block_A)) in HAL_SAI_DeInit()
752 if (hsai->Instance == SAI1_Block_A) in HAL_SAI_DeInit()
757 SaiBaseAddress = (hsai->Instance == SAI1_Block_A) ? SAI1 : SAI4; in HAL_SAI_DeInit()
771 if (hsai->MspDeInitCallback == NULL) in HAL_SAI_DeInit()
773 hsai->MspDeInitCallback = HAL_SAI_MspDeInit; in HAL_SAI_DeInit()
775 hsai->MspDeInitCallback(hsai); in HAL_SAI_DeInit()
777 HAL_SAI_MspDeInit(hsai); in HAL_SAI_DeInit()
781 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_DeInit()
784 hsai->State = HAL_SAI_STATE_RESET; in HAL_SAI_DeInit()
787 __HAL_UNLOCK(hsai); in HAL_SAI_DeInit()
798 __weak void HAL_SAI_MspInit(SAI_HandleTypeDef *hsai) in HAL_SAI_MspInit() argument
801 UNUSED(hsai); in HAL_SAI_MspInit()
814 __weak void HAL_SAI_MspDeInit(SAI_HandleTypeDef *hsai) in HAL_SAI_MspDeInit() argument
817 UNUSED(hsai); in HAL_SAI_MspDeInit()
841 HAL_StatusTypeDef HAL_SAI_RegisterCallback(SAI_HandleTypeDef *hsai, in HAL_SAI_RegisterCallback() argument
850 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_RegisterCallback()
856 if (HAL_SAI_STATE_READY == hsai->State) in HAL_SAI_RegisterCallback()
861 hsai->RxCpltCallback = pCallback; in HAL_SAI_RegisterCallback()
864 hsai->RxHalfCpltCallback = pCallback; in HAL_SAI_RegisterCallback()
867 hsai->TxCpltCallback = pCallback; in HAL_SAI_RegisterCallback()
870 hsai->TxHalfCpltCallback = pCallback; in HAL_SAI_RegisterCallback()
873 hsai->ErrorCallback = pCallback; in HAL_SAI_RegisterCallback()
876 hsai->MspInitCallback = pCallback; in HAL_SAI_RegisterCallback()
879 hsai->MspDeInitCallback = pCallback; in HAL_SAI_RegisterCallback()
883 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_RegisterCallback()
889 else if (HAL_SAI_STATE_RESET == hsai->State) in HAL_SAI_RegisterCallback()
894 hsai->MspInitCallback = pCallback; in HAL_SAI_RegisterCallback()
897 hsai->MspDeInitCallback = pCallback; in HAL_SAI_RegisterCallback()
901 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_RegisterCallback()
910 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_RegisterCallback()
933 HAL_StatusTypeDef HAL_SAI_UnRegisterCallback(SAI_HandleTypeDef *hsai, in HAL_SAI_UnRegisterCallback() argument
938 if (HAL_SAI_STATE_READY == hsai->State) in HAL_SAI_UnRegisterCallback()
943 hsai->RxCpltCallback = HAL_SAI_RxCpltCallback; in HAL_SAI_UnRegisterCallback()
946 hsai->RxHalfCpltCallback = HAL_SAI_RxHalfCpltCallback; in HAL_SAI_UnRegisterCallback()
949 hsai->TxCpltCallback = HAL_SAI_TxCpltCallback; in HAL_SAI_UnRegisterCallback()
952 hsai->TxHalfCpltCallback = HAL_SAI_TxHalfCpltCallback; in HAL_SAI_UnRegisterCallback()
955 hsai->ErrorCallback = HAL_SAI_ErrorCallback; in HAL_SAI_UnRegisterCallback()
958 hsai->MspInitCallback = HAL_SAI_MspInit; in HAL_SAI_UnRegisterCallback()
961 hsai->MspDeInitCallback = HAL_SAI_MspDeInit; in HAL_SAI_UnRegisterCallback()
965 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_UnRegisterCallback()
971 else if (HAL_SAI_STATE_RESET == hsai->State) in HAL_SAI_UnRegisterCallback()
976 hsai->MspInitCallback = HAL_SAI_MspInit; in HAL_SAI_UnRegisterCallback()
979 hsai->MspDeInitCallback = HAL_SAI_MspDeInit; in HAL_SAI_UnRegisterCallback()
983 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_UnRegisterCallback()
992 hsai->ErrorCode |= HAL_SAI_ERROR_INVALID_CALLBACK; in HAL_SAI_UnRegisterCallback()
1055 HAL_StatusTypeDef HAL_SAI_Transmit(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t… in HAL_SAI_Transmit() argument
1065 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Transmit()
1068 __HAL_LOCK(hsai); in HAL_SAI_Transmit()
1070 hsai->XferSize = Size; in HAL_SAI_Transmit()
1071 hsai->XferCount = Size; in HAL_SAI_Transmit()
1072 hsai->pBuffPtr = pData; in HAL_SAI_Transmit()
1073 hsai->State = HAL_SAI_STATE_BUSY_TX; in HAL_SAI_Transmit()
1074 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Transmit()
1077 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Transmit()
1080 SAI_FillFifo(hsai); in HAL_SAI_Transmit()
1082 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Transmit()
1085 while (hsai->XferCount > 0U) in HAL_SAI_Transmit()
1088 if ((hsai->Instance->SR & SAI_xSR_FLVL) != SAI_FIFOSTATUS_FULL) in HAL_SAI_Transmit()
1090 … if ((hsai->Init.DataSize == SAI_DATASIZE_8) && (hsai->Init.CompandingMode == SAI_NOCOMPANDING)) in HAL_SAI_Transmit()
1092 hsai->Instance->DR = *hsai->pBuffPtr; in HAL_SAI_Transmit()
1093 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1095 else if (hsai->Init.DataSize <= SAI_DATASIZE_16) in HAL_SAI_Transmit()
1097 temp = (uint32_t)(*hsai->pBuffPtr); in HAL_SAI_Transmit()
1098 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1099 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in HAL_SAI_Transmit()
1100 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1101 hsai->Instance->DR = temp; in HAL_SAI_Transmit()
1105 temp = (uint32_t)(*hsai->pBuffPtr); in HAL_SAI_Transmit()
1106 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1107 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in HAL_SAI_Transmit()
1108 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1109 temp |= ((uint32_t)(*hsai->pBuffPtr) << 16); in HAL_SAI_Transmit()
1110 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1111 temp |= ((uint32_t)(*hsai->pBuffPtr) << 24); in HAL_SAI_Transmit()
1112 hsai->pBuffPtr++; in HAL_SAI_Transmit()
1113 hsai->Instance->DR = temp; in HAL_SAI_Transmit()
1115 hsai->XferCount--; in HAL_SAI_Transmit()
1123 hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT; in HAL_SAI_Transmit()
1126 hsai->Instance->CLRFR = 0xFFFFFFFFU; in HAL_SAI_Transmit()
1130 (void) SAI_Disable(hsai); in HAL_SAI_Transmit()
1133 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in HAL_SAI_Transmit()
1136 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Transmit()
1139 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit()
1146 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Transmit()
1149 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit()
1168 HAL_StatusTypeDef HAL_SAI_Receive(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size, uint32_t … in HAL_SAI_Receive() argument
1178 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Receive()
1181 __HAL_LOCK(hsai); in HAL_SAI_Receive()
1183 hsai->pBuffPtr = pData; in HAL_SAI_Receive()
1184 hsai->XferSize = Size; in HAL_SAI_Receive()
1185 hsai->XferCount = Size; in HAL_SAI_Receive()
1186 hsai->State = HAL_SAI_STATE_BUSY_RX; in HAL_SAI_Receive()
1187 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Receive()
1190 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Receive()
1193 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Receive()
1197 while (hsai->XferCount > 0U) in HAL_SAI_Receive()
1199 if ((hsai->Instance->SR & SAI_xSR_FLVL) != SAI_FIFOSTATUS_EMPTY) in HAL_SAI_Receive()
1201 … if ((hsai->Init.DataSize == SAI_DATASIZE_8) && (hsai->Init.CompandingMode == SAI_NOCOMPANDING)) in HAL_SAI_Receive()
1203 *hsai->pBuffPtr = (uint8_t)hsai->Instance->DR; in HAL_SAI_Receive()
1204 hsai->pBuffPtr++; in HAL_SAI_Receive()
1206 else if (hsai->Init.DataSize <= SAI_DATASIZE_16) in HAL_SAI_Receive()
1208 temp = hsai->Instance->DR; in HAL_SAI_Receive()
1209 *hsai->pBuffPtr = (uint8_t)temp; in HAL_SAI_Receive()
1210 hsai->pBuffPtr++; in HAL_SAI_Receive()
1211 *hsai->pBuffPtr = (uint8_t)(temp >> 8); in HAL_SAI_Receive()
1212 hsai->pBuffPtr++; in HAL_SAI_Receive()
1216 temp = hsai->Instance->DR; in HAL_SAI_Receive()
1217 *hsai->pBuffPtr = (uint8_t)temp; in HAL_SAI_Receive()
1218 hsai->pBuffPtr++; in HAL_SAI_Receive()
1219 *hsai->pBuffPtr = (uint8_t)(temp >> 8); in HAL_SAI_Receive()
1220 hsai->pBuffPtr++; in HAL_SAI_Receive()
1221 *hsai->pBuffPtr = (uint8_t)(temp >> 16); in HAL_SAI_Receive()
1222 hsai->pBuffPtr++; in HAL_SAI_Receive()
1223 *hsai->pBuffPtr = (uint8_t)(temp >> 24); in HAL_SAI_Receive()
1224 hsai->pBuffPtr++; in HAL_SAI_Receive()
1226 hsai->XferCount--; in HAL_SAI_Receive()
1234 hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT; in HAL_SAI_Receive()
1237 hsai->Instance->CLRFR = 0xFFFFFFFFU; in HAL_SAI_Receive()
1241 (void) SAI_Disable(hsai); in HAL_SAI_Receive()
1244 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in HAL_SAI_Receive()
1247 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Receive()
1250 __HAL_UNLOCK(hsai); in HAL_SAI_Receive()
1257 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Receive()
1260 __HAL_UNLOCK(hsai); in HAL_SAI_Receive()
1278 HAL_StatusTypeDef HAL_SAI_Transmit_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size) in HAL_SAI_Transmit_IT() argument
1285 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Transmit_IT()
1288 __HAL_LOCK(hsai); in HAL_SAI_Transmit_IT()
1290 hsai->pBuffPtr = pData; in HAL_SAI_Transmit_IT()
1291 hsai->XferSize = Size; in HAL_SAI_Transmit_IT()
1292 hsai->XferCount = Size; in HAL_SAI_Transmit_IT()
1293 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Transmit_IT()
1294 hsai->State = HAL_SAI_STATE_BUSY_TX; in HAL_SAI_Transmit_IT()
1296 if ((hsai->Init.DataSize == SAI_DATASIZE_8) && (hsai->Init.CompandingMode == SAI_NOCOMPANDING)) in HAL_SAI_Transmit_IT()
1298 hsai->InterruptServiceRoutine = SAI_Transmit_IT8Bit; in HAL_SAI_Transmit_IT()
1300 else if (hsai->Init.DataSize <= SAI_DATASIZE_16) in HAL_SAI_Transmit_IT()
1302 hsai->InterruptServiceRoutine = SAI_Transmit_IT16Bit; in HAL_SAI_Transmit_IT()
1306 hsai->InterruptServiceRoutine = SAI_Transmit_IT32Bit; in HAL_SAI_Transmit_IT()
1310 SAI_FillFifo(hsai); in HAL_SAI_Transmit_IT()
1313 __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in HAL_SAI_Transmit_IT()
1316 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Transmit_IT()
1319 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Transmit_IT()
1322 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit_IT()
1340 HAL_StatusTypeDef HAL_SAI_Receive_IT(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size) in HAL_SAI_Receive_IT() argument
1347 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Receive_IT()
1350 __HAL_LOCK(hsai); in HAL_SAI_Receive_IT()
1352 hsai->pBuffPtr = pData; in HAL_SAI_Receive_IT()
1353 hsai->XferSize = Size; in HAL_SAI_Receive_IT()
1354 hsai->XferCount = Size; in HAL_SAI_Receive_IT()
1355 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Receive_IT()
1356 hsai->State = HAL_SAI_STATE_BUSY_RX; in HAL_SAI_Receive_IT()
1358 if ((hsai->Init.DataSize == SAI_DATASIZE_8) && (hsai->Init.CompandingMode == SAI_NOCOMPANDING)) in HAL_SAI_Receive_IT()
1360 hsai->InterruptServiceRoutine = SAI_Receive_IT8Bit; in HAL_SAI_Receive_IT()
1362 else if (hsai->Init.DataSize <= SAI_DATASIZE_16) in HAL_SAI_Receive_IT()
1364 hsai->InterruptServiceRoutine = SAI_Receive_IT16Bit; in HAL_SAI_Receive_IT()
1368 hsai->InterruptServiceRoutine = SAI_Receive_IT32Bit; in HAL_SAI_Receive_IT()
1372 __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in HAL_SAI_Receive_IT()
1375 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Receive_IT()
1378 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Receive_IT()
1382 __HAL_UNLOCK(hsai); in HAL_SAI_Receive_IT()
1398 HAL_StatusTypeDef HAL_SAI_DMAPause(SAI_HandleTypeDef *hsai) in HAL_SAI_DMAPause() argument
1401 __HAL_LOCK(hsai); in HAL_SAI_DMAPause()
1404 hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; in HAL_SAI_DMAPause()
1407 __HAL_UNLOCK(hsai); in HAL_SAI_DMAPause()
1418 HAL_StatusTypeDef HAL_SAI_DMAResume(SAI_HandleTypeDef *hsai) in HAL_SAI_DMAResume() argument
1421 __HAL_LOCK(hsai); in HAL_SAI_DMAResume()
1424 hsai->Instance->CR1 |= SAI_xCR1_DMAEN; in HAL_SAI_DMAResume()
1427 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_DMAResume()
1430 __HAL_SAI_ENABLE(hsai); in HAL_SAI_DMAResume()
1434 __HAL_UNLOCK(hsai); in HAL_SAI_DMAResume()
1445 HAL_StatusTypeDef HAL_SAI_DMAStop(SAI_HandleTypeDef *hsai) in HAL_SAI_DMAStop() argument
1450 __HAL_LOCK(hsai); in HAL_SAI_DMAStop()
1453 hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; in HAL_SAI_DMAStop()
1456 if ((hsai->State == HAL_SAI_STATE_BUSY_TX) && (hsai->hdmatx != NULL)) in HAL_SAI_DMAStop()
1458 if (HAL_DMA_Abort(hsai->hdmatx) != HAL_OK) in HAL_SAI_DMAStop()
1461 if (hsai->hdmatx->ErrorCode != HAL_DMA_ERROR_NO_XFER) in HAL_SAI_DMAStop()
1464 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_DMAStop()
1470 if ((hsai->State == HAL_SAI_STATE_BUSY_RX) && (hsai->hdmarx != NULL)) in HAL_SAI_DMAStop()
1472 if (HAL_DMA_Abort(hsai->hdmarx) != HAL_OK) in HAL_SAI_DMAStop()
1475 if (hsai->hdmarx->ErrorCode != HAL_DMA_ERROR_NO_XFER) in HAL_SAI_DMAStop()
1478 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_DMAStop()
1484 if (SAI_Disable(hsai) != HAL_OK) in HAL_SAI_DMAStop()
1490 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in HAL_SAI_DMAStop()
1493 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_DMAStop()
1496 __HAL_UNLOCK(hsai); in HAL_SAI_DMAStop()
1507 HAL_StatusTypeDef HAL_SAI_Abort(SAI_HandleTypeDef *hsai) in HAL_SAI_Abort() argument
1512 __HAL_LOCK(hsai); in HAL_SAI_Abort()
1515 if ((hsai->Instance->CR1 & SAI_xCR1_DMAEN) == SAI_xCR1_DMAEN) in HAL_SAI_Abort()
1518 hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; in HAL_SAI_Abort()
1521 if ((hsai->State == HAL_SAI_STATE_BUSY_TX) && (hsai->hdmatx != NULL)) in HAL_SAI_Abort()
1523 if (HAL_DMA_Abort(hsai->hdmatx) != HAL_OK) in HAL_SAI_Abort()
1526 if (hsai->hdmatx->ErrorCode != HAL_DMA_ERROR_NO_XFER) in HAL_SAI_Abort()
1529 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_Abort()
1535 if ((hsai->State == HAL_SAI_STATE_BUSY_RX) && (hsai->hdmarx != NULL)) in HAL_SAI_Abort()
1537 if (HAL_DMA_Abort(hsai->hdmarx) != HAL_OK) in HAL_SAI_Abort()
1540 if (hsai->hdmarx->ErrorCode != HAL_DMA_ERROR_NO_XFER) in HAL_SAI_Abort()
1543 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_Abort()
1550 hsai->Instance->IMR = 0; in HAL_SAI_Abort()
1551 hsai->Instance->CLRFR = 0xFFFFFFFFU; in HAL_SAI_Abort()
1554 if (SAI_Disable(hsai) != HAL_OK) in HAL_SAI_Abort()
1560 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in HAL_SAI_Abort()
1563 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_Abort()
1566 __HAL_UNLOCK(hsai); in HAL_SAI_Abort()
1579 HAL_StatusTypeDef HAL_SAI_Transmit_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size) in HAL_SAI_Transmit_DMA() argument
1588 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Transmit_DMA()
1591 __HAL_LOCK(hsai); in HAL_SAI_Transmit_DMA()
1593 hsai->pBuffPtr = pData; in HAL_SAI_Transmit_DMA()
1594 hsai->XferSize = Size; in HAL_SAI_Transmit_DMA()
1595 hsai->XferCount = Size; in HAL_SAI_Transmit_DMA()
1596 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Transmit_DMA()
1597 hsai->State = HAL_SAI_STATE_BUSY_TX; in HAL_SAI_Transmit_DMA()
1600 hsai->hdmatx->XferHalfCpltCallback = SAI_DMATxHalfCplt; in HAL_SAI_Transmit_DMA()
1603 hsai->hdmatx->XferCpltCallback = SAI_DMATxCplt; in HAL_SAI_Transmit_DMA()
1606 hsai->hdmatx->XferErrorCallback = SAI_DMAError; in HAL_SAI_Transmit_DMA()
1609 hsai->hdmatx->XferAbortCallback = NULL; in HAL_SAI_Transmit_DMA()
1612 …if (HAL_DMA_Start_IT(hsai->hdmatx, (uint32_t)hsai->pBuffPtr, (uint32_t)&hsai->Instance->DR, hsai->… in HAL_SAI_Transmit_DMA()
1614 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit_DMA()
1619 __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); in HAL_SAI_Transmit_DMA()
1622 hsai->Instance->CR1 |= SAI_xCR1_DMAEN; in HAL_SAI_Transmit_DMA()
1625 while ((hsai->Instance->SR & SAI_xSR_FLVL) == SAI_FIFOSTATUS_EMPTY) in HAL_SAI_Transmit_DMA()
1631 hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT; in HAL_SAI_Transmit_DMA()
1634 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit_DMA()
1641 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Transmit_DMA()
1644 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Transmit_DMA()
1648 __HAL_UNLOCK(hsai); in HAL_SAI_Transmit_DMA()
1666 HAL_StatusTypeDef HAL_SAI_Receive_DMA(SAI_HandleTypeDef *hsai, uint8_t *pData, uint16_t Size) in HAL_SAI_Receive_DMA() argument
1674 if (hsai->State == HAL_SAI_STATE_READY) in HAL_SAI_Receive_DMA()
1677 __HAL_LOCK(hsai); in HAL_SAI_Receive_DMA()
1679 hsai->pBuffPtr = pData; in HAL_SAI_Receive_DMA()
1680 hsai->XferSize = Size; in HAL_SAI_Receive_DMA()
1681 hsai->XferCount = Size; in HAL_SAI_Receive_DMA()
1682 hsai->ErrorCode = HAL_SAI_ERROR_NONE; in HAL_SAI_Receive_DMA()
1683 hsai->State = HAL_SAI_STATE_BUSY_RX; in HAL_SAI_Receive_DMA()
1686 hsai->hdmarx->XferHalfCpltCallback = SAI_DMARxHalfCplt; in HAL_SAI_Receive_DMA()
1689 hsai->hdmarx->XferCpltCallback = SAI_DMARxCplt; in HAL_SAI_Receive_DMA()
1692 hsai->hdmarx->XferErrorCallback = SAI_DMAError; in HAL_SAI_Receive_DMA()
1695 hsai->hdmarx->XferAbortCallback = NULL; in HAL_SAI_Receive_DMA()
1698 …if (HAL_DMA_Start_IT(hsai->hdmarx, (uint32_t)&hsai->Instance->DR, (uint32_t)hsai->pBuffPtr, hsai->… in HAL_SAI_Receive_DMA()
1700 __HAL_UNLOCK(hsai); in HAL_SAI_Receive_DMA()
1705 __HAL_SAI_ENABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); in HAL_SAI_Receive_DMA()
1708 hsai->Instance->CR1 |= SAI_xCR1_DMAEN; in HAL_SAI_Receive_DMA()
1711 if ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) == 0U) in HAL_SAI_Receive_DMA()
1714 __HAL_SAI_ENABLE(hsai); in HAL_SAI_Receive_DMA()
1718 __HAL_UNLOCK(hsai); in HAL_SAI_Receive_DMA()
1735 HAL_StatusTypeDef HAL_SAI_EnableTxMuteMode(SAI_HandleTypeDef *hsai, uint16_t val) in HAL_SAI_EnableTxMuteMode() argument
1739 if (hsai->State != HAL_SAI_STATE_RESET) in HAL_SAI_EnableTxMuteMode()
1741 CLEAR_BIT(hsai->Instance->CR2, SAI_xCR2_MUTEVAL | SAI_xCR2_MUTE); in HAL_SAI_EnableTxMuteMode()
1742 SET_BIT(hsai->Instance->CR2, SAI_xCR2_MUTE | (uint32_t)val); in HAL_SAI_EnableTxMuteMode()
1754 HAL_StatusTypeDef HAL_SAI_DisableTxMuteMode(SAI_HandleTypeDef *hsai) in HAL_SAI_DisableTxMuteMode() argument
1756 if (hsai->State != HAL_SAI_STATE_RESET) in HAL_SAI_DisableTxMuteMode()
1758 CLEAR_BIT(hsai->Instance->CR2, SAI_xCR2_MUTEVAL | SAI_xCR2_MUTE); in HAL_SAI_DisableTxMuteMode()
1772 HAL_StatusTypeDef HAL_SAI_EnableRxMuteMode(SAI_HandleTypeDef *hsai, SAIcallback callback, uint16_t … in HAL_SAI_EnableRxMuteMode() argument
1776 if (hsai->State != HAL_SAI_STATE_RESET) in HAL_SAI_EnableRxMuteMode()
1779 CLEAR_BIT(hsai->Instance->CR2, SAI_xCR2_MUTECNT); in HAL_SAI_EnableRxMuteMode()
1780 SET_BIT(hsai->Instance->CR2, (uint32_t)((uint32_t)counter << SAI_xCR2_MUTECNT_Pos)); in HAL_SAI_EnableRxMuteMode()
1781 hsai->mutecallback = callback; in HAL_SAI_EnableRxMuteMode()
1783 __HAL_SAI_ENABLE_IT(hsai, SAI_IT_MUTEDET); in HAL_SAI_EnableRxMuteMode()
1795 HAL_StatusTypeDef HAL_SAI_DisableRxMuteMode(SAI_HandleTypeDef *hsai) in HAL_SAI_DisableRxMuteMode() argument
1797 if (hsai->State != HAL_SAI_STATE_RESET) in HAL_SAI_DisableRxMuteMode()
1800 hsai->mutecallback = NULL; in HAL_SAI_DisableRxMuteMode()
1802 __HAL_SAI_DISABLE_IT(hsai, SAI_IT_MUTEDET); in HAL_SAI_DisableRxMuteMode()
1814 void HAL_SAI_IRQHandler(SAI_HandleTypeDef *hsai) in HAL_SAI_IRQHandler() argument
1816 if (hsai->State != HAL_SAI_STATE_RESET) in HAL_SAI_IRQHandler()
1818 uint32_t itflags = hsai->Instance->SR; in HAL_SAI_IRQHandler()
1819 uint32_t itsources = hsai->Instance->IMR; in HAL_SAI_IRQHandler()
1820 uint32_t cr1config = hsai->Instance->CR1; in HAL_SAI_IRQHandler()
1826 hsai->InterruptServiceRoutine(hsai); in HAL_SAI_IRQHandler()
1832 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_OVRUDR); in HAL_SAI_IRQHandler()
1834 tmperror = ((hsai->State == HAL_SAI_STATE_BUSY_RX) ? HAL_SAI_ERROR_OVR : HAL_SAI_ERROR_UDR); in HAL_SAI_IRQHandler()
1836 hsai->ErrorCode |= tmperror; in HAL_SAI_IRQHandler()
1839 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1841 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1848 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_MUTEDET); in HAL_SAI_IRQHandler()
1850 if (hsai->mutecallback != NULL) in HAL_SAI_IRQHandler()
1853 hsai->mutecallback(); in HAL_SAI_IRQHandler()
1860 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_AFSDET); in HAL_SAI_IRQHandler()
1863 hsai->ErrorCode |= HAL_SAI_ERROR_AFSDET; in HAL_SAI_IRQHandler()
1869 if (hsai->hdmatx != NULL) in HAL_SAI_IRQHandler()
1872 hsai->hdmatx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
1875 if (HAL_DMA_Abort_IT(hsai->hdmatx) != HAL_OK) in HAL_SAI_IRQHandler()
1878 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
1882 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1884 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1888 if (hsai->hdmarx != NULL) in HAL_SAI_IRQHandler()
1891 hsai->hdmarx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
1894 if (HAL_DMA_Abort_IT(hsai->hdmarx) != HAL_OK) in HAL_SAI_IRQHandler()
1897 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
1901 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1903 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1912 (void) HAL_SAI_Abort(hsai); in HAL_SAI_IRQHandler()
1916 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1918 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1926 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_LFSDET); in HAL_SAI_IRQHandler()
1929 hsai->ErrorCode |= HAL_SAI_ERROR_LFSDET; in HAL_SAI_IRQHandler()
1935 if (hsai->hdmatx != NULL) in HAL_SAI_IRQHandler()
1938 hsai->hdmatx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
1941 if (HAL_DMA_Abort_IT(hsai->hdmatx) != HAL_OK) in HAL_SAI_IRQHandler()
1944 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
1948 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1950 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1954 if (hsai->hdmarx != NULL) in HAL_SAI_IRQHandler()
1957 hsai->hdmarx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
1960 if (HAL_DMA_Abort_IT(hsai->hdmarx) != HAL_OK) in HAL_SAI_IRQHandler()
1963 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
1967 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1969 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1978 (void) HAL_SAI_Abort(hsai); in HAL_SAI_IRQHandler()
1982 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1984 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
1992 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_WCKCFG); in HAL_SAI_IRQHandler()
1995 hsai->ErrorCode |= HAL_SAI_ERROR_WCKCFG; in HAL_SAI_IRQHandler()
2001 if (hsai->hdmatx != NULL) in HAL_SAI_IRQHandler()
2004 hsai->hdmatx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
2007 if (HAL_DMA_Abort_IT(hsai->hdmatx) != HAL_OK) in HAL_SAI_IRQHandler()
2010 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
2014 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2016 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2020 if (hsai->hdmarx != NULL) in HAL_SAI_IRQHandler()
2023 hsai->hdmarx->XferAbortCallback = SAI_DMAAbort; in HAL_SAI_IRQHandler()
2026 if (HAL_DMA_Abort_IT(hsai->hdmarx) != HAL_OK) in HAL_SAI_IRQHandler()
2029 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in HAL_SAI_IRQHandler()
2033 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2035 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2044 hsai->Instance->IMR = 0U; in HAL_SAI_IRQHandler()
2045 hsai->Instance->CLRFR = 0xFFFFFFFFU; in HAL_SAI_IRQHandler()
2047 hsai->State = HAL_SAI_STATE_READY; in HAL_SAI_IRQHandler()
2050 hsai->XferCount = 0U; in HAL_SAI_IRQHandler()
2054 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2056 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2064 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_CNRDY); in HAL_SAI_IRQHandler()
2066 hsai->ErrorCode |= HAL_SAI_ERROR_CNREADY; in HAL_SAI_IRQHandler()
2069 hsai->ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2071 HAL_SAI_ErrorCallback(hsai); in HAL_SAI_IRQHandler()
2087 __weak void HAL_SAI_TxCpltCallback(SAI_HandleTypeDef *hsai) in HAL_SAI_TxCpltCallback() argument
2090 UNUSED(hsai); in HAL_SAI_TxCpltCallback()
2103 __weak void HAL_SAI_TxHalfCpltCallback(SAI_HandleTypeDef *hsai) in HAL_SAI_TxHalfCpltCallback() argument
2106 UNUSED(hsai); in HAL_SAI_TxHalfCpltCallback()
2119 __weak void HAL_SAI_RxCpltCallback(SAI_HandleTypeDef *hsai) in HAL_SAI_RxCpltCallback() argument
2122 UNUSED(hsai); in HAL_SAI_RxCpltCallback()
2135 __weak void HAL_SAI_RxHalfCpltCallback(SAI_HandleTypeDef *hsai) in HAL_SAI_RxHalfCpltCallback() argument
2138 UNUSED(hsai); in HAL_SAI_RxHalfCpltCallback()
2151 __weak void HAL_SAI_ErrorCallback(SAI_HandleTypeDef *hsai) in HAL_SAI_ErrorCallback() argument
2154 UNUSED(hsai); in HAL_SAI_ErrorCallback()
2186 HAL_SAI_StateTypeDef HAL_SAI_GetState(SAI_HandleTypeDef *hsai) in HAL_SAI_GetState() argument
2188 return hsai->State; in HAL_SAI_GetState()
2197 uint32_t HAL_SAI_GetError(SAI_HandleTypeDef *hsai) in HAL_SAI_GetError() argument
2199 return hsai->ErrorCode; in HAL_SAI_GetError()
2226 static HAL_StatusTypeDef SAI_InitI2S(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize,… in SAI_InitI2S() argument
2230 hsai->Init.Protocol = SAI_FREE_PROTOCOL; in SAI_InitI2S()
2231 hsai->Init.FirstBit = SAI_FIRSTBIT_MSB; in SAI_InitI2S()
2233 if ((hsai->Init.AudioMode == SAI_MODEMASTER_TX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) in SAI_InitI2S()
2236 hsai->Init.ClockStrobing = SAI_CLOCKSTROBING_FALLINGEDGE; in SAI_InitI2S()
2241 hsai->Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; in SAI_InitI2S()
2243 hsai->FrameInit.FSDefinition = SAI_FS_CHANNEL_IDENTIFICATION; in SAI_InitI2S()
2244 hsai->SlotInit.SlotActive = SAI_SLOTACTIVE_ALL; in SAI_InitI2S()
2245 hsai->SlotInit.FirstBitOffset = 0; in SAI_InitI2S()
2246 hsai->SlotInit.SlotNumber = nbslot; in SAI_InitI2S()
2256 hsai->FrameInit.FSPolarity = SAI_FS_ACTIVE_LOW; in SAI_InitI2S()
2257 hsai->FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; in SAI_InitI2S()
2262 hsai->FrameInit.FSPolarity = SAI_FS_ACTIVE_HIGH; in SAI_InitI2S()
2263 hsai->FrameInit.FSOffset = SAI_FS_FIRSTBIT; in SAI_InitI2S()
2270 hsai->Init.DataSize = SAI_DATASIZE_16; in SAI_InitI2S()
2271 hsai->FrameInit.FrameLength = 32U * (nbslot / 2U); in SAI_InitI2S()
2272 hsai->FrameInit.ActiveFrameLength = 16U * (nbslot / 2U); in SAI_InitI2S()
2273 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_16B; in SAI_InitI2S()
2276 hsai->Init.DataSize = SAI_DATASIZE_16; in SAI_InitI2S()
2277 hsai->FrameInit.FrameLength = 64U * (nbslot / 2U); in SAI_InitI2S()
2278 hsai->FrameInit.ActiveFrameLength = 32U * (nbslot / 2U); in SAI_InitI2S()
2279 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitI2S()
2282 hsai->Init.DataSize = SAI_DATASIZE_24; in SAI_InitI2S()
2283 hsai->FrameInit.FrameLength = 64U * (nbslot / 2U); in SAI_InitI2S()
2284 hsai->FrameInit.ActiveFrameLength = 32U * (nbslot / 2U); in SAI_InitI2S()
2285 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitI2S()
2288 hsai->Init.DataSize = SAI_DATASIZE_32; in SAI_InitI2S()
2289 hsai->FrameInit.FrameLength = 64U * (nbslot / 2U); in SAI_InitI2S()
2290 hsai->FrameInit.ActiveFrameLength = 32U * (nbslot / 2U); in SAI_InitI2S()
2291 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitI2S()
2301 hsai->SlotInit.FirstBitOffset = 16; in SAI_InitI2S()
2305 hsai->SlotInit.FirstBitOffset = 8; in SAI_InitI2S()
2321 static HAL_StatusTypeDef SAI_InitPCM(SAI_HandleTypeDef *hsai, uint32_t protocol, uint32_t datasize,… in SAI_InitPCM() argument
2325 hsai->Init.Protocol = SAI_FREE_PROTOCOL; in SAI_InitPCM()
2326 hsai->Init.FirstBit = SAI_FIRSTBIT_MSB; in SAI_InitPCM()
2328 if ((hsai->Init.AudioMode == SAI_MODEMASTER_TX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) in SAI_InitPCM()
2331 hsai->Init.ClockStrobing = SAI_CLOCKSTROBING_RISINGEDGE; in SAI_InitPCM()
2336 hsai->Init.ClockStrobing = SAI_CLOCKSTROBING_FALLINGEDGE; in SAI_InitPCM()
2338 hsai->FrameInit.FSDefinition = SAI_FS_STARTFRAME; in SAI_InitPCM()
2339 hsai->FrameInit.FSPolarity = SAI_FS_ACTIVE_HIGH; in SAI_InitPCM()
2340 hsai->FrameInit.FSOffset = SAI_FS_BEFOREFIRSTBIT; in SAI_InitPCM()
2341 hsai->SlotInit.FirstBitOffset = 0; in SAI_InitPCM()
2342 hsai->SlotInit.SlotNumber = nbslot; in SAI_InitPCM()
2343 hsai->SlotInit.SlotActive = SAI_SLOTACTIVE_ALL; in SAI_InitPCM()
2347 hsai->FrameInit.ActiveFrameLength = 1; in SAI_InitPCM()
2352 hsai->FrameInit.ActiveFrameLength = 13; in SAI_InitPCM()
2358 hsai->Init.DataSize = SAI_DATASIZE_16; in SAI_InitPCM()
2359 hsai->FrameInit.FrameLength = 16U * nbslot; in SAI_InitPCM()
2360 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_16B; in SAI_InitPCM()
2363 hsai->Init.DataSize = SAI_DATASIZE_16; in SAI_InitPCM()
2364 hsai->FrameInit.FrameLength = 32U * nbslot; in SAI_InitPCM()
2365 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitPCM()
2368 hsai->Init.DataSize = SAI_DATASIZE_24; in SAI_InitPCM()
2369 hsai->FrameInit.FrameLength = 32U * nbslot; in SAI_InitPCM()
2370 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitPCM()
2373 hsai->Init.DataSize = SAI_DATASIZE_32; in SAI_InitPCM()
2374 hsai->FrameInit.FrameLength = 32U * nbslot; in SAI_InitPCM()
2375 hsai->SlotInit.SlotSize = SAI_SLOTSIZE_32B; in SAI_InitPCM()
2391 static void SAI_FillFifo(SAI_HandleTypeDef *hsai) in SAI_FillFifo() argument
2396 while (((hsai->Instance->SR & SAI_xSR_FLVL) != SAI_FIFOSTATUS_FULL) && (hsai->XferCount > 0U)) in SAI_FillFifo()
2398 if ((hsai->Init.DataSize == SAI_DATASIZE_8) && (hsai->Init.CompandingMode == SAI_NOCOMPANDING)) in SAI_FillFifo()
2400 hsai->Instance->DR = *hsai->pBuffPtr; in SAI_FillFifo()
2401 hsai->pBuffPtr++; in SAI_FillFifo()
2403 else if (hsai->Init.DataSize <= SAI_DATASIZE_16) in SAI_FillFifo()
2405 temp = (uint32_t)(*hsai->pBuffPtr); in SAI_FillFifo()
2406 hsai->pBuffPtr++; in SAI_FillFifo()
2407 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in SAI_FillFifo()
2408 hsai->pBuffPtr++; in SAI_FillFifo()
2409 hsai->Instance->DR = temp; in SAI_FillFifo()
2413 temp = (uint32_t)(*hsai->pBuffPtr); in SAI_FillFifo()
2414 hsai->pBuffPtr++; in SAI_FillFifo()
2415 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in SAI_FillFifo()
2416 hsai->pBuffPtr++; in SAI_FillFifo()
2417 temp |= ((uint32_t)(*hsai->pBuffPtr) << 16); in SAI_FillFifo()
2418 hsai->pBuffPtr++; in SAI_FillFifo()
2419 temp |= ((uint32_t)(*hsai->pBuffPtr) << 24); in SAI_FillFifo()
2420 hsai->pBuffPtr++; in SAI_FillFifo()
2421 hsai->Instance->DR = temp; in SAI_FillFifo()
2423 hsai->XferCount--; in SAI_FillFifo()
2434 static uint32_t SAI_InterruptFlag(const SAI_HandleTypeDef *hsai, SAI_ModeTypedef mode) in SAI_InterruptFlag() argument
2443 if ((hsai->Init.Protocol == SAI_AC97_PROTOCOL) && in SAI_InterruptFlag()
2444 ((hsai->Init.AudioMode == SAI_MODESLAVE_RX) || (hsai->Init.AudioMode == SAI_MODEMASTER_RX))) in SAI_InterruptFlag()
2449 if ((hsai->Init.AudioMode == SAI_MODESLAVE_RX) || (hsai->Init.AudioMode == SAI_MODESLAVE_TX)) in SAI_InterruptFlag()
2467 static HAL_StatusTypeDef SAI_Disable(SAI_HandleTypeDef *hsai) in SAI_Disable() argument
2473 __HAL_SAI_DISABLE(hsai); in SAI_Disable()
2481 hsai->ErrorCode |= HAL_SAI_ERROR_TIMEOUT; in SAI_Disable()
2487 while ((hsai->Instance->CR1 & SAI_xCR1_SAIEN) != 0U); in SAI_Disable()
2498 static void SAI_Transmit_IT8Bit(SAI_HandleTypeDef *hsai) in SAI_Transmit_IT8Bit() argument
2500 if (hsai->XferCount == 0U) in SAI_Transmit_IT8Bit()
2504 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Transmit_IT8Bit()
2505 hsai->State = HAL_SAI_STATE_READY; in SAI_Transmit_IT8Bit()
2507 hsai->TxCpltCallback(hsai); in SAI_Transmit_IT8Bit()
2509 HAL_SAI_TxCpltCallback(hsai); in SAI_Transmit_IT8Bit()
2515 hsai->Instance->DR = *hsai->pBuffPtr; in SAI_Transmit_IT8Bit()
2516 hsai->pBuffPtr++; in SAI_Transmit_IT8Bit()
2517 hsai->XferCount--; in SAI_Transmit_IT8Bit()
2527 static void SAI_Transmit_IT16Bit(SAI_HandleTypeDef *hsai) in SAI_Transmit_IT16Bit() argument
2529 if (hsai->XferCount == 0U) in SAI_Transmit_IT16Bit()
2533 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Transmit_IT16Bit()
2534 hsai->State = HAL_SAI_STATE_READY; in SAI_Transmit_IT16Bit()
2536 hsai->TxCpltCallback(hsai); in SAI_Transmit_IT16Bit()
2538 HAL_SAI_TxCpltCallback(hsai); in SAI_Transmit_IT16Bit()
2545 temp = (uint32_t)(*hsai->pBuffPtr); in SAI_Transmit_IT16Bit()
2546 hsai->pBuffPtr++; in SAI_Transmit_IT16Bit()
2547 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in SAI_Transmit_IT16Bit()
2548 hsai->pBuffPtr++; in SAI_Transmit_IT16Bit()
2549 hsai->Instance->DR = temp; in SAI_Transmit_IT16Bit()
2550 hsai->XferCount--; in SAI_Transmit_IT16Bit()
2560 static void SAI_Transmit_IT32Bit(SAI_HandleTypeDef *hsai) in SAI_Transmit_IT32Bit() argument
2562 if (hsai->XferCount == 0U) in SAI_Transmit_IT32Bit()
2566 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Transmit_IT32Bit()
2567 hsai->State = HAL_SAI_STATE_READY; in SAI_Transmit_IT32Bit()
2569 hsai->TxCpltCallback(hsai); in SAI_Transmit_IT32Bit()
2571 HAL_SAI_TxCpltCallback(hsai); in SAI_Transmit_IT32Bit()
2578 temp = (uint32_t)(*hsai->pBuffPtr); in SAI_Transmit_IT32Bit()
2579 hsai->pBuffPtr++; in SAI_Transmit_IT32Bit()
2580 temp |= ((uint32_t)(*hsai->pBuffPtr) << 8); in SAI_Transmit_IT32Bit()
2581 hsai->pBuffPtr++; in SAI_Transmit_IT32Bit()
2582 temp |= ((uint32_t)(*hsai->pBuffPtr) << 16); in SAI_Transmit_IT32Bit()
2583 hsai->pBuffPtr++; in SAI_Transmit_IT32Bit()
2584 temp |= ((uint32_t)(*hsai->pBuffPtr) << 24); in SAI_Transmit_IT32Bit()
2585 hsai->pBuffPtr++; in SAI_Transmit_IT32Bit()
2586 hsai->Instance->DR = temp; in SAI_Transmit_IT32Bit()
2587 hsai->XferCount--; in SAI_Transmit_IT32Bit()
2597 static void SAI_Receive_IT8Bit(SAI_HandleTypeDef *hsai) in SAI_Receive_IT8Bit() argument
2600 *hsai->pBuffPtr = (uint8_t)hsai->Instance->DR; in SAI_Receive_IT8Bit()
2601 hsai->pBuffPtr++; in SAI_Receive_IT8Bit()
2602 hsai->XferCount--; in SAI_Receive_IT8Bit()
2605 if (hsai->XferCount == 0U) in SAI_Receive_IT8Bit()
2608 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Receive_IT8Bit()
2611 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_OVRUDR); in SAI_Receive_IT8Bit()
2613 hsai->State = HAL_SAI_STATE_READY; in SAI_Receive_IT8Bit()
2615 hsai->RxCpltCallback(hsai); in SAI_Receive_IT8Bit()
2617 HAL_SAI_RxCpltCallback(hsai); in SAI_Receive_IT8Bit()
2628 static void SAI_Receive_IT16Bit(SAI_HandleTypeDef *hsai) in SAI_Receive_IT16Bit() argument
2633 temp = hsai->Instance->DR; in SAI_Receive_IT16Bit()
2634 *hsai->pBuffPtr = (uint8_t)temp; in SAI_Receive_IT16Bit()
2635 hsai->pBuffPtr++; in SAI_Receive_IT16Bit()
2636 *hsai->pBuffPtr = (uint8_t)(temp >> 8); in SAI_Receive_IT16Bit()
2637 hsai->pBuffPtr++; in SAI_Receive_IT16Bit()
2638 hsai->XferCount--; in SAI_Receive_IT16Bit()
2641 if (hsai->XferCount == 0U) in SAI_Receive_IT16Bit()
2644 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Receive_IT16Bit()
2647 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_OVRUDR); in SAI_Receive_IT16Bit()
2649 hsai->State = HAL_SAI_STATE_READY; in SAI_Receive_IT16Bit()
2651 hsai->RxCpltCallback(hsai); in SAI_Receive_IT16Bit()
2653 HAL_SAI_RxCpltCallback(hsai); in SAI_Receive_IT16Bit()
2664 static void SAI_Receive_IT32Bit(SAI_HandleTypeDef *hsai) in SAI_Receive_IT32Bit() argument
2669 temp = hsai->Instance->DR; in SAI_Receive_IT32Bit()
2670 *hsai->pBuffPtr = (uint8_t)temp; in SAI_Receive_IT32Bit()
2671 hsai->pBuffPtr++; in SAI_Receive_IT32Bit()
2672 *hsai->pBuffPtr = (uint8_t)(temp >> 8); in SAI_Receive_IT32Bit()
2673 hsai->pBuffPtr++; in SAI_Receive_IT32Bit()
2674 *hsai->pBuffPtr = (uint8_t)(temp >> 16); in SAI_Receive_IT32Bit()
2675 hsai->pBuffPtr++; in SAI_Receive_IT32Bit()
2676 *hsai->pBuffPtr = (uint8_t)(temp >> 24); in SAI_Receive_IT32Bit()
2677 hsai->pBuffPtr++; in SAI_Receive_IT32Bit()
2678 hsai->XferCount--; in SAI_Receive_IT32Bit()
2681 if (hsai->XferCount == 0U) in SAI_Receive_IT32Bit()
2684 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_IT)); in SAI_Receive_IT32Bit()
2687 __HAL_SAI_CLEAR_FLAG(hsai, SAI_FLAG_OVRUDR); in SAI_Receive_IT32Bit()
2689 hsai->State = HAL_SAI_STATE_READY; in SAI_Receive_IT32Bit()
2691 hsai->RxCpltCallback(hsai); in SAI_Receive_IT32Bit()
2693 HAL_SAI_RxCpltCallback(hsai); in SAI_Receive_IT32Bit()
2706 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMATxCplt() local
2710 hsai->XferCount = 0; in SAI_DMATxCplt()
2713 hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); in SAI_DMATxCplt()
2716 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); in SAI_DMATxCplt()
2718 hsai->State = HAL_SAI_STATE_READY; in SAI_DMATxCplt()
2721 hsai->TxCpltCallback(hsai); in SAI_DMATxCplt()
2723 HAL_SAI_TxCpltCallback(hsai); in SAI_DMATxCplt()
2735 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMATxHalfCplt() local
2738 hsai->TxHalfCpltCallback(hsai); in SAI_DMATxHalfCplt()
2740 HAL_SAI_TxHalfCpltCallback(hsai); in SAI_DMATxHalfCplt()
2752 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMARxCplt() local
2757 hsai->Instance->CR1 &= (uint32_t)(~SAI_xCR1_DMAEN); in SAI_DMARxCplt()
2758 hsai->XferCount = 0; in SAI_DMARxCplt()
2761 __HAL_SAI_DISABLE_IT(hsai, SAI_InterruptFlag(hsai, SAI_MODE_DMA)); in SAI_DMARxCplt()
2763 hsai->State = HAL_SAI_STATE_READY; in SAI_DMARxCplt()
2766 hsai->RxCpltCallback(hsai); in SAI_DMARxCplt()
2768 HAL_SAI_RxCpltCallback(hsai); in SAI_DMARxCplt()
2780 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMARxHalfCplt() local
2783 hsai->RxHalfCpltCallback(hsai); in SAI_DMARxHalfCplt()
2785 HAL_SAI_RxHalfCpltCallback(hsai); in SAI_DMARxHalfCplt()
2797 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMAError() local
2803 hsai->ErrorCode |= HAL_SAI_ERROR_DMA; in SAI_DMAError()
2806 hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; in SAI_DMAError()
2810 (void) SAI_Disable(hsai); in SAI_DMAError()
2813 hsai->State = HAL_SAI_STATE_READY; in SAI_DMAError()
2816 hsai->XferCount = 0U; in SAI_DMAError()
2820 hsai->ErrorCallback(hsai); in SAI_DMAError()
2822 HAL_SAI_ErrorCallback(hsai); in SAI_DMAError()
2835 SAI_HandleTypeDef *hsai = (SAI_HandleTypeDef *)((DMA_HandleTypeDef *)hdma)->Parent; in SAI_DMAAbort() local
2838 hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN; in SAI_DMAAbort()
2841 hsai->Instance->IMR = 0U; in SAI_DMAAbort()
2842 hsai->Instance->CLRFR = 0xFFFFFFFFU; in SAI_DMAAbort()
2844 if (hsai->ErrorCode != HAL_SAI_ERROR_WCKCFG) in SAI_DMAAbort()
2848 (void) SAI_Disable(hsai); in SAI_DMAAbort()
2851 SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH); in SAI_DMAAbort()
2854 hsai->State = HAL_SAI_STATE_READY; in SAI_DMAAbort()
2857 hsai->XferCount = 0U; in SAI_DMAAbort()
2861 hsai->ErrorCallback(hsai); in SAI_DMAAbort()
2863 HAL_SAI_ErrorCallback(hsai); in SAI_DMAAbort()