Closed lukasnee closed 3 years ago
Hi @lukasnee,
Thank you for this report. If the issue is systematically reproducible on your side, would you please give us more details on how to reproduce it and if possible share the project so that we can reproduce the same behavior and give you an answer.
With regards,
Hi @lukasnee,
Any update regarding this issue to move this discussion forward?
With regards,
I don't understand what is unclear. If you try to use full duplex ("TxRx") I2S in DMA Circular mode, you won't get a dma complete callback as you would expect. On the other hand, half complete callback fires which makes this bug really sneaky. Look at the code, this must have been an overlook. I also found a video where someone else discovered the same issue and there's also a thread in forum
Hi @lukasnee,
Thank you for this detailed report. Please allow me to close this thread as answer has been posted within the pull request #15.
With regards,
Problem in: https://github.com/STMicroelectronics/STM32CubeF3/blob/master/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal_i2s_ex.c
in function
static void I2SEx_TxRxDMACplt(DMA_HandleTypeDef *hdma)
I think this callback logic (theres two copies of it inside the function):
is missing outside the scope of:
I discovered this problem when trying to set up I2S full duplex DMA in circular mode on NUCLEO-F303RE. I found that this callback:
void HAL_I2SEx_TxRxHalfCpltCallback(I2S_HandleTypeDef *hi2s)
was being called periodically (as expected), but this one:void HAL_I2SEx_TxRxCpltCallback(I2S_HandleTypeDef *hi2s)
was not.This is how i fixed it:
My problem was actually fixed.