AnsweredAssumed Answered

Outputting TDM stream to DAC's (TDM -> I2S)

Question asked by Didier on Mar 15, 2010
Latest reply on Mar 25, 2010 by DivyaS



I'm trying to send 4 different sinewaves in TDM format to have it output on the DAC's.

Sport 4 I use as transmitting my TDM signal (4 timeslots = 4 blocks of different data = 4 sinewaves).

Sport 3 I use for receiving my TDM signal. I read my receive buffers and store the data from my TDM stream separately in 4 blocks. These 4 blocks I then send to the DAC's.

I routed SPORT4_DA_O to SPORT3_DA_I (used to be external with wire) at the moment internally and used the same PCG_CLK and FS for both sports for sync, etc. Both Sports are in multichannel mode and activated for 4 channels.

The problem is that when I check my signals from my DAC's with the scope I do see a sinewave on each DAC with the correct frequency and all, but after 7 secs there's a distortion in the sinewave for about 4 secs (where the frequency of the sinewave also changes and becomes unstable) and then it's back to normal again for another 7 secs, then 4 secs distorted sinewave again, etc.

I have tried to change the FS_Divider and CLK_Divider and other things, but without a succesfull result. i also tried using semaphores (but perhaps not using them correctly).

I'm quite sure it's a timing issue. It's as if I'm reading my receive buffer too fast/slow. I'm using DMA chaining as well by the way.

Or could it be because I'm using PCG for TDM (sport4 & 3) and CLK + FS from codec for sport 1 & 2.

See my attachments for an example for DAC 4.


Could anyone help me out?


Message was edited by: Didier