Hello,
We are working on TI's OMAPL138/C6748 to create a basic input to output audio application, using EDMA and double buffering.
We implemented stereo audio channel sorting with double buffers using the EDMA.
The audio is sampled by the McASP, copied and sorted using the EDMA to ping-pong buffers, and when a buffer is full a hardware interrupt by the EDMA to the CPU is triggered. The HWI then posts a SWI to do the processing on the buffers.
We managed to get a clean input to output loop-back when the input buffer is copied directly to the output buffer.
However, when adding more work in the processing stage, the output is corrupted and it sounds like we have a constant "ticking" on top of the input signal.
The extra work doesn't even have to manipulate the data itself - we can add a dummy loop that does nothing, and the output will still get corrupted.
We have established that this is not an issue of overlapping processing periods between the two buffers by setting a GPIO pin high whenever processing occurs and then monitoring this pin. It looks like processing time is much shorter than the time it takes to fill another buffer.
BTW, Analysing the frequency of these tick sounds we find that it is at the exact frequency as that of filling a buffer - i.e. a tick is generated once a buffer.
Printing the input and output buffers we see that one sample (usually the first) is "corrupted" - its' value isn't as expected (using an input sinusoidal waveform).
Do you have any ideas for debugging the issue?
Thanks,
Lee and Matan