This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DMA PING PONG BUFFER

Hi, i have a problem:

I'm using C5515 eZdsp and i'm acquiring a signal from the codec using ping pong buffer as in Audio Filter demo.

I configured Codec in Mono mode, so the signals come only from Left channel.

I modified Audio Filter Demo code like this ( here is my code snippet that uses the Dsplib fir function:

    while(1)
    {
                if (CurrentRxL_DMAChannel ==2)
                {
                    buff_copy(&RcvL1[0],&Buffer[0],XMIT_BUFF_SIZE);
                    fir((DATA*)&Buffer[0],&filter_coeffs[0],(DATA*)&Buffer[0],&dbuffer[0],XMIT_BUFF_SIZE,67);
                    buff_copy(&Buffer[0],&FilterOutL1[0], XMIT_BUFF_SIZE);
               }
                else
                {
                    buff_copy(&RcvL2[0],&Buffer[0],XMIT_BUFF_SIZE);
                    fir((DATA*)&Buffer[0],&filter_coeffs[0],(DATA*)&Buffer[0],&dbuffer[0],XMIT_BUFF_SIZE,67);
                    buff_copy(&Buffer[0],&FilterOutL2[0], XMIT_BUFF_SIZE);
                }
            }

}

What's the problem: every time I switch the Dma channel the signal, seen with a scope, presents a glitch.

So, What can i do? 

I have also disabled Right channel from in the DMA interrupt enable:

void enable_dma_int(void)
{
    // interrupt order: TxL -> TxR -> RxL -> RxR
    // enable only TxR (channel 1) and RxR (channel 3).
    //DMA_MSK = 0x00F0;     // enable DMA1, channel 3 and channel 1 interrupts
    DMA_MSK = 0x0005;     // enable DMA interrupts
    DMA_IFR = 0xFFFF;     // clear interrupt flags
}

Any idea? 

Thanks a lot in advance, every suggestion is very appreciated

Regards,

Paolo