TDM Slot Noise

Am using Griffin SC589 to receive A2B data over Sport0B. A2B data is coming from Accelerometer sensors (14 bit data from each accel) to Griffin Sport via TDM lines. Total 4 accels are connected on the wire.

Sport is configured for 48KHz Frame Sync, 25 MHz Clock, Right Justified Sign fill with 32 bit word Length (TDM16 D32) or Right Justified Sign fill with 16 bit word Length (TDM32 D16) 

TDM is configured as TDM32 Data 16  to Sport 0B. However I could hear some extra noise of 10db on Sport Slot 1,2 and 3 (last accel sensor data coming on Slot 1,2,3) and also on Slot 4,5,6 (last before accel).

When i configure the same TDM for TDM16 Data 32, am seeing issue is only with Slot 1,2,3 ( last accel).

Also when i reduce the accel number from 4 to 3, then issue moves from Accel 4 to 3 while configured as TDM 16 Data 32. This shows issue is not with accel sensor but always staying with starting slots of Sport.

There is no noise if TDM is probed at master A2B transceiver which drives data to Sport 0B DMA. This also confirms there is a problem in data sampling or the way data clocks into Sport DMA.

My question is, do we need to take care of any bit delay while sampling sport incoming data as actual data from accel is just 14 bits. Since Sport is configured for 32 bit length while using TDM16 data 32, am doing left shifting to get correct data at DSP.

// Configure SPORT0B (receive) for Multichannel (TDM) mode
SPORT_MODECONFIG(0,B,ENUM_SPORT_CTL_RX); // SPORT0B is a receiver
SPORT_CLOCKCONFIG(0,B,ENUM_SPORT_CTL_CLK_RISE_EDGE,ENUM_SPORT_CTL_EDGE_FS,ENUM_SPORT_CTL_FS_REQ); // rising-edge sampling, edge sensitive Fs, Fs required
#ifdef USE_TDM32_DATA16_A2B1
SPORT_DATACONFIG(0,B,16,ENUM_SPORT_CTL_RJUSTIFY_SFILL); //16-bit word length, right-justified with sign fill
#else
SPORT_DATACONFIG(0,B,32,ENUM_SPORT_CTL_RJUSTIFY_SFILL); //32-bit word length, right-justified with sign fill
#endif

/*
** Select the multi-channel mode of the SPORT
*/

SPORT_MULTICHANNELCONFIG(0,B,16,0,ENUM_SPORT_MCTL_EN ); // 16 slots/channels, 0-bit delay between Fs and channel 1 (MFD = 1), multi-channel enable

SPORT_MULTICHANNELSELECT(0,B,SLOT_MASK(A2B1_TOTAL_SLOTS) ); // channel slot mask (1-enable)
SPORT_SPMUX(0,B,ENUM_SPORT_CTL2_A_CTL2_CLK_MUX_EN,ENUM_SPORT_CTL2_A_CTL2_FS_MUX_EN );

In short data before Sport0B looks good but data after sampled into DMA buffer have extra noise on beginning slots. What could be wrong? Can you suggest.

  • 0
    •  Analog Employees 
    on Aug 11, 2021 10:04 AM

    Hi Varun,

    Apologies for the delay. Were you able to get going?

    Can you please share more information on below points to assist you better on this.

    1) Can you please share the clock configurations of your system?
    2) Can you please check with changing sample or driving edges on SPORT with respect to A2B.
    3) Can you explain the setup? Is it possible for you share a simple block diagram?

    Regards,
    Anand Selvaraj.