[HAL][SAI] Improve audio quality (avoid potential glitch)
diff --git a/Src/stm32wbxx_hal_sai.c b/Src/stm32wbxx_hal_sai.c
index 33b9b86..f6ad077 100644
--- a/Src/stm32wbxx_hal_sai.c
+++ b/Src/stm32wbxx_hal_sai.c
@@ -1343,6 +1343,12 @@
/* Process Locked */
__HAL_LOCK(hsai);
+ /* Disable SAI peripheral */
+ if (SAI_Disable(hsai) != HAL_OK)
+ {
+ status = HAL_ERROR;
+ }
+
/* Disable the SAI DMA request */
hsai->Instance->CR1 &= ~SAI_xCR1_DMAEN;
@@ -1362,12 +1368,6 @@
(void) HAL_DMA_Abort(hsai->hdmarx);
}
- /* Disable SAI peripheral */
- if (SAI_Disable(hsai) != HAL_OK)
- {
- status = HAL_ERROR;
- }
-
/* Flush the fifo */
SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH);
@@ -1393,6 +1393,12 @@
/* Process Locked */
__HAL_LOCK(hsai);
+ /* Disable SAI peripheral */
+ if (SAI_Disable(hsai) != HAL_OK)
+ {
+ status = HAL_ERROR;
+ }
+
/* Check SAI DMA is enabled or not */
if ((hsai->Instance->CR1 & SAI_xCR1_DMAEN) == SAI_xCR1_DMAEN)
{
@@ -1420,12 +1426,6 @@
hsai->Instance->IMR = 0;
hsai->Instance->CLRFR = 0xFFFFFFFFU;
- /* Disable SAI peripheral */
- if (SAI_Disable(hsai) != HAL_OK)
- {
- status = HAL_ERROR;
- }
-
/* Flush the fifo */
SET_BIT(hsai->Instance->CR2, SAI_xCR2_FFLUSH);