How to add LRCLK high width in TDM, but not shift data timing

Sub forums for various specialist XMOS applications. e.g. USB audio, motor control and robotics.
Post Reply
susanyin0501
Active Member
Posts: 45
Joined: Thu Apr 20, 2017 9:00 am

How to add LRCLK high width in TDM, but not shift data timing

Post by susanyin0501 »

Dear all.

In our project, we need LRCLK high width 32BCLK, i fix the following code in deliver( ) of audio.xc,

LRCLK width changed to 32BCLKs width, but the stream data shift 32BCLKs too, please refer to attached file.

i'd like to just change LRCLK width, not shift data timing, on other words, there is data during LRCLK high,

How to do it? please help us, thanks!

#ifndef CODEC_MASTER
#ifdef I2S_MODE_TDM
if(frameCount == (I2S_CHANS_PER_FRAME-2))
p_lrclk <: 0xFFFFFFFF;
// p_lrclk <: 0x80000000;
else
p_lrclk <: 0x00000000;
#else
p_lrclk <: 0x7FFFFFFF;
#endif
#endif

index = 0;
#pragma xta endpoint "i2s_output_r"
#if (I2S_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT != 0)
/* Output "odd" channel to DAC (i.e. right) */
#pragma loop unroll
for(int i = 1; i < I2S_CHANS_DAC; i+=I2S_CHANS_PER_FRAME)
{
p_i2s_dac[index++] <: bitrev(samplesOut[frameCount + i]);
}
#endif

#ifndef CODEC_MASTER
doI2SClocks(divide);
#endif
Attachments
timing.png
(220.46 KiB) Not downloaded yet
timing.png
(220.46 KiB) Not downloaded yet


Post Reply