I2S Tx Complete callback is never called while the TX Half Complete callback is.
Hi There,
Im currently trying to move some basic I2S code over from a STM32F407 to a STMG030K8.
All the code is doing is using a circular DMA mode to transfer a buffer. As with any circular mode transfer, Im wanting to fill the buffer with new data in both the Half and Complete callbacks.
My code was working perfectly on the F407 but when moved over to the G030, only the Half Tx Complete callback is called repeatedly(checked with breakpoints and status LED's).
The only code I have added to the brand new project is the following:
HAL_I2S_Transmit_DMA(&hi2s1, (uint16_t *)outputBuf, 100);And the callbacks:
void HAL_I2S_TxCpltCallback(I2S_HandleTypeDef *hi2s){
}
void HAL_I2S_TxHalfCpltCallback(I2S_HandleTypeDef *hi2s){
}I have only initialised the single DMA channel for I2S_TX (SPI1_TX) and the I2S is the only peripheral currently initialised. The DMA settings i'm using are shown below in the image;
I understand that the F407 DMA and G030 DMA have differing features but from what I can tell, that shouldn't be effecting a basic transfer such as this. From a quick search online it seems that there was a similar issue in the F4xx firmware which has since been fixed.
Any help/tips as to why only the half complete callback is called would be appreciated.
I can provide a full project or ioc file if needed but it is a newly generated project with only the few additional code snippets mentioned above.
Thanks.
Kind Regards,
Brandon
