This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TAS5825M: Multi Device PWM Phase Sync

Part Number: TAS5825M

Hi,

I'm designing an amplifier module with 2 tas5825m chips. To reduce EMI I want to use the multi device phase sync. Therefore I implemented the sync sequence as mentioned in the datasheet. The whole init sequence of the amps is as follows:

1. Load the basic config from PPC3 software (exported as c header) to both amps, set to play mode --> That is working without any problems.

2. Halt i2s clocks.

3. config phase shift of amp1 and amp2 via i2c

- amp1: reg 0x6a is set to 0x03 = 0 deg phase

- amp2: reg 0x6a is set to 0x07 = 45 deg phase

4. set amps to Hiz mode (write 0x02 to reg 0x03)

5. restart i2s clocks

The data is send and acked correctly via i2c (see the screenshot of the scope below):

The code I use:

#define PHASE_CTRL_REG	0x6a
#define PHASE0		0x03
#define PHASE45		0x07

uint8_t mode_HiZ[] = {0x03, 0x02};
uint8_t phase_amp1[] = {PHASE_CTRL_REG, PHASE0};
uint8_t phase_amp2[] = {PHASE_CTRL_REG, PHASE45};

void tas5825M_pwm_phase_sync(void)
{	
	//halt i2s clocks
	i2s_clock_unit_disable(&i2s_instance, I2S_CLOCK_UNIT_0);
	
	//config phase shift of amp 1
	i2c_send(AMP1_ADDR, phase_amp1, 2);
	//config phase shift of amp 2
	i2c_send(AMP2_ADDR, phase_amp2, 2);
	
	//set amp1 to HiZ
	i2c_send(AMP1_ADDR, mode_HiZ, 2);
	//set amp2 to HiZ
	i2c_send(AMP2_ADDR, mode_HiZ, 2);
	
	//restart i2s clocks
	i2s_clock_unit_enable(&i2s_instance, I2S_CLOCK_UNIT_0);
}

The third signal (pink) on the scope screenshots is the i2s bitclock (bclk). If I zoom out a bit, you can see that it is halted before the config sequence via i2c begins and is restarted afterwards:

The playback is working. That shows to me, that the internal sync sequence must have run through. Otherwise the amps would be in HiZ mode and not in play mode.

But when I check the phase of the outputs (before the inductors), they aren't in phase with a 45° offset. I tried it a few times and never got a stable phase shift (see scope shots below):

I use 768 kHz switching frequency of the pwm. Is a phase sync only possible with 384 kHz?

Is there any known issue with the multi device pwm phase sync using the i2s clocks? Do I have to modify my sequence?

Kind regards,

Markus

  • Hi Markus,

    I checked 768kHz PWM sync with EVM, and two devices output PWM could be secessfully configured to 45 / 90 degree.

    As for your system, several things to check:

    1. whether two amps share the same BLCK and FRAME clock?

    2. add book / page switch during PWM sync configuration. During play mode PWM check stage, readback Book0/Page0/Regiser6Ah of two amps to confirm value.

    3. add time delay. Halt I2S, delay 20ms, configure PWM sync, Set into Hiz, delay 20ms, provide back I2S, delay 20ms, set into play mode.

    Your result seems not correctly configure into PWM sync mode. So the phase is random

    Regards,

    Matthew

  • Hi Matthew,

    thank's for your quick reply.

    The write sequence before the pwm sync sequence writes to book 0 and page 0. Therefore I don't need to set it again.

    Your hint "set into play mode" solved the problem. That doesn't stand in the sequence described in the datasheet. The sequence in the datasheet implies that the amp sets itself to play mode after the pwm sync ran trough.

    I added 5 ms of delay after every step to guarantee a stable operation. Now everything is working fine.

    Kind regards,

    Markus