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