I cannot find DMA interrupts initialization in steps, or, better, an example for BF70x processors.
It seems me, that it is more complicated than in BF5xx case.
Bug fix. The following lines are missing in the SPORT0_RX_interrupt_handler:
if (*pREG_DMA1_STAT & ENUM_DMA_STAT_IRQDONE) *pREG_DMA1_STAT = ENUM_DMA_STAT_IRQDONE;
The attached version BF706_Audio_Filter_v2 should be correct.
thanks a lot for the shared example code, it works nicely on the BF706-EZmini.
One issue I couldn't figure out is using the compiler optimization. If switched on (I tried from 25% to 100%) audio is lost and the code seems to hang in the idle() loop.
Using "static volatile int32_t audio_buffer[BUFFER_SIZE]" (audio processing buffer) doesn't help, the code doesn't allow to have "static int32_t SP0A_buffer[BUFFER_SIZE]" (DMA TX buffer) and "static int32_t SP0B_buffer[BUFFER_SIZE]" ( DMA RX buffer) to be volatile.
Any suggestion to avoid audio muting when optimizing the code. Seems to be a general Blackfin CC problem though.