DSPRelated.com
Forums

Stereo I2S on ADSP-21369 and ADSP-21375

Started by raph...@gmx.de January 13, 2009
Hi,

my development project uses two DSPs: The ADSP-21375 and the ADSP-21369. For both of them I've the evaluation boards here on my desk. On both DSPs I want to send my own audio data to the codec therefore, I used the blockthrough examples but wihtout success. My output data are stored in two floating point arrays: fLeft and fRight. Now let's look into the processBlock()-routine. How do I have to copy and convert the data in order to get the right outputs.
With my try I've only one channel running while on the other channel I only have crackling.
I'm using VisualDSP 5 and I'm programming in C.
Every help and hint is hardly welcome!

Raphael
Howdy Raphael,

First thing to check is the voltage on the inputs to the codec.
Your code might be right - one channel might not be connected!

Second thing to check is how you store the data, you might have
a pointer for the second channel heading to a non-existing area
of ram, or you may be trying to read from the wrong place.

One way to isolate the problem is to put fake data into the buffers
and make sure you can play that out. A simple sine wave is a good
place to start. If both channels play a sine, then your pointers
are probably correct - if not you know where to start looking.

Patience, persistence, truth,
Dr. mike

On Tue, 13 Jan 2009 r...@gmx.de wrote:

> Hi,
>
> my development project uses two DSPs: The ADSP-21375 and the ADSP-21369. For both of them I've the evaluation boards here on my desk. On both DSPs I want to send my own audio data to the codec therefore, I used the blockthrough examples but wihtout success. My output data are stored in two floating point arrays: fLeft and fRight. Now let's look into the processBlock()-routine. How do I have to copy and convert the data in order to get the right outputs.
> With my try I've only one channel running while on the other channel I only have crackling.
> I'm using VisualDSP 5 and I'm programming in C.
> Every help and hint is hardly welcome!
>
> Raphael
>
Hi Mike,

well, I'm using the evaluation boards from Analog Devices and the blockthrough example is working=>the codec is ok.
Te next step was that I tried to play the left channel on both output channels. Even that does not work.

Raphael
As I recall, there is in error in the pass-through code that causes the
channels to swap L-R.

I will look into it.

Tom
On Tue, 13 Jan 2009 r...@gmx.de wrote:

> Hi Mike,
>
> well, I'm using the evaluation boards from Analog Devices and the blockthrough example is working=>the codec is ok.
> Te next step was that I tried to play the left channel on both output channels. Even that does not work.

So you get the left on the left ok, but left->right gets noise? Sounds
like a pointer problem to me. It could also be a DMA structure problem -
wrong data in the DMA block can do the same thing.

Try brute force - do a linear saw tooth and just increment. Make sure you
understand how to set up the codec and all it's guts, then work on the DMA
part, then work on the data transfer in->out. Finding the bug is hard,
fixing it will be trivial!

Patience, persistence, truth,
Dr. mike