TAS2110EVM: Unable to play .wav file with STM32U5 + TAS2110EVM (Getting noise/corrupted audio)

Part Number: TAS2110EVM
Other Parts Discussed in Thread: TAS2110

Tool/software:

Hello,

I am trying to play a .wav file using an STM32U5 microcontroller with the TAS2110EVM amplifier board, but I am only getting noise or corrupted audio output.

Hardware Setup:

  • STM32U5 MCU (using SAI peripheral for I²S audio)

  • TAS2110EVM board

  • External 5V / 3A power supply for TAS2110EVM

  • Connected pins:

    • FSYNC, SCLK (SBCK), SDIN → to TAS2110 for I²S

    • SDA, SCL → I²C control interface

  • External speaker connected to TAS2110EVM

  • Checked SDZ pin → voltage is 1.8V (so device seems enabled)

Issue:

  • WAV parsing works fine.

  • TAS2110 initialization (via I²C) is successful.

  • Playback via HAL_SAI_Transmit_DMA() produces only noise/corrupted audio instead of the WAV file.

SAI Configuration:

hsai_BlockA1.Instance = SAI1_Block_A;
hsai_BlockA1.Init.AudioMode = SAI_MODEMASTER_TX;
hsai_BlockA1.Init.Synchro = SAI_ASYNCHRONOUS;
hsai_BlockA1.Init.Protocol = SAI_FREE_PROTOCOL;
hsai_BlockA1.Init.DataSize = SAI_DATASIZE_16; 
hsai_BlockA1.Init.FirstBit = SAI_FIRSTBIT_MSB; 
hsai_BlockA1.Init.ClockStrobing = SAI_CLOCKSTROBING_FALLINGEDGE; 
hsai_BlockA1.Init.OutputDrive = SAI_OUTPUTDRIVE_ENABLE;
hsai_BlockA1.Init.NoDivider = SAI_MASTERDIVIDER_ENABLE;
hsai_BlockA1.Init.FIFOThreshold = SAI_FIFOTHRESHOLD_1QF;
hsai_BlockA1.Init.AudioFrequency = SAI_AUDIO_FREQUENCY_44K;
hsai_BlockA1.Init.SynchroExt = SAI_SYNCEXT_DISABLE;
hsai_BlockA1.Init.MckOutput = SAI_MCK_OUTPUT_DISABLE;
hsai_BlockA1.Init.MonoStereoMode = SAI_MONOMODE;
hsai_BlockA1.Init.CompandingMode = SAI_NOCOMPANDING;
hsai_BlockA1.Init.TriState = SAI_OUTPUT_NOTRELEASED;

Example code:

if (tas2110_init(&tas_data) != 0) {
HAL_UART_Transmit(&huart1, (uint8_t*)"TAS2110 Init Failed\n", 20, 100);
Error_Handler();
}
tas2110_set_samplerate(&tas_data, wav_info.sample_rate);
tas2110_set_bitwidth(&tas_data, wav_info.bits_per_sample);
tas2110_set_dai_fmt(&tas_data, 0x0020);
tas2110_set_dai_tdm_slot(&tas_data, 1, 0, 1, wav_info.bits_per_sample);
tas2110_set_volume(&tas_data, 84);
TAS2110_ReadDVC(&tas_data);
tas2110_power_on(&tas_data);
tas2110_mute(&tas_data, false);

// Test tone
for (int i = 0; i < AUDIO_BUFFER_SIZE; i++) {
audio_buffer[i] = (int16_t)(3276 * sinf(2 * M_PI * 1000 * i / 44100.0f)); // Low amplitude
}
HAL_SAI_Transmit_DMA(&hsai_BlockA1, (uint8_t*)audio_buffer, AUDIO_BUFFER_SIZE);

Question:

  • Is there any specific I²S format requirement for TAS2110 (e.g., word length / frame sync polarity / slot config)?

  • Do I need to use MCLK along with BCLK/LRCLK/SDIN, or can TAS2110 derive clock internally?

  • Could this be related to mono vs stereo configuration?

Any guidance on correct I²S + TAS2110 configuration or pointers to a working reference would be very helpful.

Thanks in advance!

  • Hi Jinal,

    • You should set registers 0x06 through 0x09 according to the host processor configuration.
      I2S is usually using RX_OFFSET of 1. You can try changing some other settings such as RX_EDGE and FRAME_START to check if they have any improvement.
    • MCLK is not used, just need to provide BCLK and WCLK.
    • Are you sending data on both channels from the host? On TAS2110 you can select to play the data on either channel or combine them based on RX_SCFG and RX_SLOT_R and RX_SLOT_L

    Best regards,
    -Ivan Salazar
    Applications Engineer

  • Hi Ivan,
    Thanks for response.
    I have already configured registers 0x06 through 0x09 according to the host processor setup.


    My register write sequence is as follows:
    tas_write_reg(tas2110_data_t *tas, uint8_t page, uint8_t reg, uint8_t val) {
    uint8_t buf[2];

    // Set page
    buf[0] = 0x00; //TAS2110_PAGE_CTRL;
    buf[1] = page;
    HAL_I2C_Master_Transmit(tas->hi2c, tas->dev_addr, buf, sizeof(buf), HAL_MAX_DELAY);

    // Write register value
    buf[0] = reg;
    buf[1] = val;
    HAL_I2C_Master_Transmit(tas->hi2c, tas->dev_addr, buf, sizeof(buf), HAL_MAX_DELAY);
    }

    My initial configuration looks like this:
    tas_write_reg(tas, 0, 0x01, 0x01); // Reset
    HAL_Delay(10); // Short delay after reset

    // Set default power to shutdown
    tas_write_reg(tas, 0, 0x02, 0x02);

    // Default TDM / I2S config
    tas_write_reg(tas, 0, 0x06, 0x09);
    tas_write_reg(tas, 0, 0x07, 0x02);
    tas_write_reg(tas, 0, 0x03, 0x20);

    I am currently sending mono audio data from the host.
    Could you please suggest if I am missing any additional configuration (for RX_OFFSET, RX_EDGE, FRAME_START, or channel routing using RX_SCFG, RX_SLOT_R, RX_SLOT_L)?

    Thanks,
    Jinal

  • Hi Jinal,

    Can you please try playing a low amplitude sine tone, you can do 1kHz at -16dBFS, the resulting signal should be 1Vrms at the speaker.
    Then you can record the resulting sound, if the audio is not noisy try the same for a few increasing dBFS levels.

    Please share the recordings so we can analyze and understand if this is clipping kind of noise or some random distortion which can point to incorrect format settings.

    Best regards,
    -Ivan Salazar
    Applications Engineer

  • Hi  

    Thanks for your response.
    I am now able to get the actual sound, but it is noisy. Could you please suggest the possible reasons for the noise?

    Could this be related to the configuration?

    For reference, I have connected a common ground between the EVK board and my STM32 board.

  • Do you get noisy audio only after certain volume level?

    I'll have to circle back to my previous suggestions:

    Can you please try playing a low amplitude sine tone, you can do 1kHz at -16dBFS, the resulting signal should be 1Vrms at the speaker.
    Then you can record the resulting sound, if the audio is not noisy try the same for a few increasing dBFS levels.

    Please share the recordings so we can analyze and understand if this is clipping kind of noise or some random distortion which can point to incorrect format settings.

    Best regards,
    -Ivan Salazar
    Applications Engineer

  • Hi, 
    I’m still getting noise at all volume levels.

    As per your suggestion, I tried using a sine wave audio file, but the noise persists in that as well.
    I’ve attached both the recorded and the original sine wave audio files for your reference.

    Please let me know if any register updates or configuration changes are required.

    Also, when I play audio using the board’s MCU (XMOS), the output is almost proper.
    Could you please suggest what configuration might be missing?
    If possible, could you share the XMOS and TAS2110 configuration details?

  • You can use PPC3 to get the TAS2110 configuration, this is an example for default settings in CFG and H formats. You must add the power up command for register 0x02 at the end of the script.

    # ch1
    # CHECKSUM 0
    
    # -----------------------------------------------------------------------------
    # Reset
    # -----------------------------------------------------------------------------
    
    # Page 0
    w 98 00 00
    # Book 0
    w 98 7f 00
    # Page 0
    w 98 00 00
    
    # Reset Device
    w 98 01 01
    
    # 1mS Delay
    d 01
    
    #Test bits Page fd
    w 98 00 00
    w 98 7f 00
    w 98 00 fd
    #Password
    w 98 0d 0d
    w 98 19 80
    w 98 32 49
    w 98 3f 21
    w 98 51 c1
    
    # -----------------------------------------------------------------------------
    # Begin Device Memory
    # -----------------------------------------------------------------------------
    
    # Book 0 Page 0 (0x00) Dump
    w 98 00 00
    w 98 7f 00
    w 98 00 00
    w 98 0a 03
    w 98 35 84
    w 98 38 21
    w 98 40 b6
    
    # Book 0 Page 1 (0x01) Dump
    w 98 00 00
    w 98 7f 00
    w 98 00 01
    
    #Book 0 Page 2
    w 98 00 00
    w 98 7f 00
    w 98 00 02
    w 98 0c 40
    w 98 0d 00
    w 98 0e 00
    w 98 0f 00
    w 98 10 03
    w 98 11 4a
    w 98 12 51
    w 98 13 6c
    w 98 14 2d
    w 98 15 6a
    w 98 16 86
    w 98 17 6f
    w 98 18 47
    w 98 19 5c
    w 98 1a 28
    w 98 1b f6
    w 98 1c 16
    w 98 1d 66
    w 98 1e 66
    w 98 1f 66
    w 98 20 34
    w 98 21 cc
    w 98 22 cc
    w 98 23 cd
    w 98 24 10
    w 98 25 00
    w 98 26 00
    w 98 27 00
    w 98 28 2e
    w 98 29 66
    w 98 2a 66
    w 98 2b 66
    w 98 2c 2b
    w 98 2d 33
    w 98 2e 33
    w 98 2f 33
    w 98 30 7f
    w 98 31 fb
    w 98 32 b6
    w 98 33 14
    w 98 34 80
    w 98 35 04
    w 98 36 49
    w 98 37 ed
    w 98 38 7f
    w 98 39 f7
    w 98 3a 6c
    w 98 3b 28
    w 98 3c 3f
    w 98 3d ff
    w 98 3e 7e
    w 98 3f a3
    w 98 40 01
    w 98 41 01
    w 98 42 5b
    w 98 43 4c
    w 98 44 00
    w 98 45 00
    w 98 46 03
    w 98 47 1f
    w 98 48 02
    w 98 49 46
    w 98 4a b4
    w 98 4b e4
    w 98 4c e0
    w 98 4d 00
    w 98 4e 00
    w 98 4f 01
    w 98 50 6e
    w 98 51 d9
    w 98 52 eb
    w 98 53 a1
    w 98 54 00
    w 98 55 00
    w 98 56 00
    w 98 57 04
    w 98 58 08
    w 98 59 09
    w 98 5a bc
    w 98 5b c4
    w 98 5c 01
    w 98 5d c9
    w 98 5e 24
    w 98 5f 92
    w 98 60 00
    w 98 61 12
    w 98 62 49
    w 98 63 25
    w 98 64 00
    w 98 65 20
    w 98 66 c4
    w 98 67 9c
    w 98 6c 00
    w 98 6d 00
    w 98 6e 12
    w 98 6f c0
    w 98 70 7f
    w 98 71 fb
    w 98 72 b6
    w 98 73 14
    w 98 74 80
    w 98 75 04
    w 98 76 49
    w 98 77 ed
    w 98 78 7f
    w 98 79 f7
    w 98 7a 6c
    w 98 7b 28
    w 98 7c 72
    w 98 7d 14
    w 98 7e 82
    w 98 7f c0
    
    #Book 0 Page 4
    w 98 00 00
    w 98 7f 00
    w 98 00 04
    w 98 58 00
    w 98 59 00
    w 98 5a 00
    w 98 5b 64
    w 98 5c 40
    w 98 5d bd
    w 98 5e b7
    w 98 5f c0
    w 98 60 39
    w 98 61 80
    w 98 62 00
    w 98 63 00
    w 98 64 2d
    w 98 65 6a
    w 98 66 86
    w 98 67 6f
    w 98 68 02
    w 98 69 46
    w 98 6a b4
    w 98 6b e4
    
    #Book 100 Page 8
    w 98 00 00
    w 98 7f 64
    w 98 00 08
    w 98 1c 50
    w 98 1d 17
    w 98 1e 01
    w 98 1f c0
    
    #Book 100 Page 7
    w 98 00 00
    w 98 7f 64
    w 98 00 07
    w 98 38 2f
    w 98 39 33
    w 98 3a 33
    w 98 3b 33
    w 98 3c 00
    w 98 3d 00
    w 98 3e 00
    w 98 3f 00
    w 98 40 04
    w 98 41 cc
    w 98 42 cc
    w 98 43 cd
    w 98 48 09
    w 98 49 99
    w 98 4a 99
    w 98 4b 9a
    w 98 4c 00
    w 98 4d 00
    w 98 4e 00
    w 98 4f 00
    
    #Book 100 Page 18
    w 98 00 00
    w 98 7f 64
    w 98 00 12
    w 98 10 1e
    w 98 11 2e
    w 98 12 14
    w 98 13 7b
    w 98 14 21
    w 98 15 3d
    w 98 16 70
    w 98 17 a4
    w 98 18 24
    w 98 19 4c
    w 98 1a cc
    w 98 1b cd
    w 98 1c 27
    w 98 1d 5c
    w 98 1e 28
    w 98 1f f6
    w 98 20 2a
    w 98 21 6b
    w 98 22 85
    w 98 23 1f
    w 98 24 2d
    w 98 25 7a
    w 98 26 e1
    w 98 27 48
    w 98 28 30
    w 98 29 8a
    w 98 2a 3d
    w 98 2b 71
    w 98 2c 33
    w 98 2d 99
    w 98 2e 99
    w 98 2f 9a
    w 98 30 36
    w 98 31 a8
    w 98 32 f5
    w 98 33 c3
    w 98 34 39
    w 98 35 b8
    w 98 36 51
    w 98 37 ec
    w 98 38 3c
    w 98 39 c7
    w 98 3a ae
    w 98 3b 14
    w 98 3c 3f
    w 98 3d d7
    w 98 3e 0a
    w 98 3f 3d
    w 98 50 1c
    w 98 51 94
    w 98 52 7a
    w 98 53 e1
    w 98 54 1f
    w 98 55 a3
    w 98 56 d7
    w 98 57 0a
    w 98 58 22
    w 98 59 b3
    w 98 5a 33
    w 98 5b 33
    w 98 5c 25
    w 98 5d c2
    w 98 5e 8f
    w 98 5f 5c
    w 98 60 28
    w 98 61 d1
    w 98 62 eb
    w 98 63 85
    w 98 64 2b
    w 98 65 e1
    w 98 66 47
    w 98 67 ae
    w 98 68 2e
    w 98 69 f0
    w 98 6a a3
    w 98 6b d7
    w 98 6c 32
    w 98 6d 00
    w 98 6e 00
    w 98 6f 00
    w 98 70 35
    w 98 71 0f
    w 98 72 5c
    w 98 73 29
    w 98 74 38
    w 98 75 1e
    w 98 76 b8
    w 98 77 52
    w 98 78 3b
    w 98 79 2e
    w 98 7a 14
    w 98 7b 7b
    w 98 7c 3e
    w 98 7d 3d
    w 98 7e 70
    w 98 7f a4
    

    typedef unsigned char cfg_u8;
    typedef union {
        struct {
            cfg_u8 offset;
            cfg_u8 value;
        };
        struct {
            cfg_u8 command;
            cfg_u8 param;
        };
    } cfg_reg;
    
    #define CFG_META_SWITCH (255)
    #define CFG_META_DELAY  (254)
    #define CFG_META_BURST  (253)
    
    /* Example C code */
    /*
        // Externally implemented function that can write n-bytes to the device
        // PCM51xx and TAS5766 targets require the high bit (0x80) of the I2C register to be set on multiple writes.
        // Refer to the device data sheet for more information.
        extern int i2c_write(unsigned char *data, int n);
        // Externally implemented function that delays execution by n milliseconds
        extern int delay(int n);
        // Example implementation.  Call like:
        //     transmit_registers(registers_ch1, sizeof(registers_ch1)/sizeof(registers_ch1[0]));
        void transmit_registers(cfg_reg *r, int n)
        {
            int i = 0;
            while (i < n) {
                switch (r[i].command) {
                case CFG_META_SWITCH:
                    // Used in legacy applications.  Ignored here.
                    break;
                case CFG_META_DELAY:
                    delay(r[i].param);
                    break;
                case CFG_META_BURST:
                    i2c_write((unsigned char *)&r[i+1], r[i].param);
                    i +=  (r[i].param / 2) + 1;
                    break;
                default:
                    i2c_write((unsigned char *)&r[i], 1);
                    break;
                }
                i++;
            }
        }
     */
    
    cfg_reg registers_ch1[] = {
    #define CHECKSUM (0)
    
    // -----------------------------------------------------------------------------
    // Reset
    // -----------------------------------------------------------------------------
    
    // Page 0
        { 0x00, 0x00 },
    // Book 0
        { 0x7f, 0x00 },
    // Page 0
        { 0x00, 0x00 },
    
    // Reset Device
        { 0x01, 0x01 },
    
    // 1mS Delay
        { CFG_META_DELAY, 0x01 },
    
    //Test bits Page fd
        { 0x00, 0x00 },
        { 0x7f, 0x00 },
        { 0x00, 0xfd },
    //Password
        { 0x0d, 0x0d },
        { 0x19, 0x80 },
        { 0x32, 0x49 },
        { 0x3f, 0x21 },
        { 0x51, 0xc1 },
    
    // -----------------------------------------------------------------------------
    // Begin Device Memory
    // -----------------------------------------------------------------------------
    
    // Book 0 Page 0 (0x00) Dump
        { 0x00, 0x00 },
        { 0x7f, 0x00 },
        { 0x00, 0x00 },
        { 0x0a, 0x03 },
        { 0x35, 0x84 },
        { 0x38, 0x21 },
        { 0x40, 0xb6 },
    
    // Book 0 Page 1 (0x01) Dump
        { 0x00, 0x00 },
        { 0x7f, 0x00 },
        { 0x00, 0x01 },
    
    //Book 0 Page 2
        { 0x00, 0x00 },
        { 0x7f, 0x00 },
        { 0x00, 0x02 },
        { 0x0c, 0x40 },
        { 0x0d, 0x00 },
        { 0x0e, 0x00 },
        { 0x0f, 0x00 },
        { 0x10, 0x03 },
        { 0x11, 0x4a },
        { 0x12, 0x51 },
        { 0x13, 0x6c },
        { 0x14, 0x2d },
        { 0x15, 0x6a },
        { 0x16, 0x86 },
        { 0x17, 0x6f },
        { 0x18, 0x47 },
        { 0x19, 0x5c },
        { 0x1a, 0x28 },
        { 0x1b, 0xf6 },
        { 0x1c, 0x16 },
        { 0x1d, 0x66 },
        { 0x1e, 0x66 },
        { 0x1f, 0x66 },
        { 0x20, 0x34 },
        { 0x21, 0xcc },
        { 0x22, 0xcc },
        { 0x23, 0xcd },
        { 0x24, 0x10 },
        { 0x25, 0x00 },
        { 0x26, 0x00 },
        { 0x27, 0x00 },
        { 0x28, 0x2e },
        { 0x29, 0x66 },
        { 0x2a, 0x66 },
        { 0x2b, 0x66 },
        { 0x2c, 0x2b },
        { 0x2d, 0x33 },
        { 0x2e, 0x33 },
        { 0x2f, 0x33 },
        { 0x30, 0x7f },
        { 0x31, 0xfb },
        { 0x32, 0xb6 },
        { 0x33, 0x14 },
        { 0x34, 0x80 },
        { 0x35, 0x04 },
        { 0x36, 0x49 },
        { 0x37, 0xed },
        { 0x38, 0x7f },
        { 0x39, 0xf7 },
        { 0x3a, 0x6c },
        { 0x3b, 0x28 },
        { 0x3c, 0x3f },
        { 0x3d, 0xff },
        { 0x3e, 0x7e },
        { 0x3f, 0xa3 },
        { 0x40, 0x01 },
        { 0x41, 0x01 },
        { 0x42, 0x5b },
        { 0x43, 0x4c },
        { 0x44, 0x00 },
        { 0x45, 0x00 },
        { 0x46, 0x03 },
        { 0x47, 0x1f },
        { 0x48, 0x02 },
        { 0x49, 0x46 },
        { 0x4a, 0xb4 },
        { 0x4b, 0xe4 },
        { 0x4c, 0xe0 },
        { 0x4d, 0x00 },
        { 0x4e, 0x00 },
        { 0x4f, 0x01 },
        { 0x50, 0x6e },
        { 0x51, 0xd9 },
        { 0x52, 0xeb },
        { 0x53, 0xa1 },
        { 0x54, 0x00 },
        { 0x55, 0x00 },
        { 0x56, 0x00 },
        { 0x57, 0x04 },
        { 0x58, 0x08 },
        { 0x59, 0x09 },
        { 0x5a, 0xbc },
        { 0x5b, 0xc4 },
        { 0x5c, 0x01 },
        { 0x5d, 0xc9 },
        { 0x5e, 0x24 },
        { 0x5f, 0x92 },
        { 0x60, 0x00 },
        { 0x61, 0x12 },
        { 0x62, 0x49 },
        { 0x63, 0x25 },
        { 0x64, 0x00 },
        { 0x65, 0x20 },
        { 0x66, 0xc4 },
        { 0x67, 0x9c },
        { 0x6c, 0x00 },
        { 0x6d, 0x00 },
        { 0x6e, 0x12 },
        { 0x6f, 0xc0 },
        { 0x70, 0x7f },
        { 0x71, 0xfb },
        { 0x72, 0xb6 },
        { 0x73, 0x14 },
        { 0x74, 0x80 },
        { 0x75, 0x04 },
        { 0x76, 0x49 },
        { 0x77, 0xed },
        { 0x78, 0x7f },
        { 0x79, 0xf7 },
        { 0x7a, 0x6c },
        { 0x7b, 0x28 },
        { 0x7c, 0x72 },
        { 0x7d, 0x14 },
        { 0x7e, 0x82 },
        { 0x7f, 0xc0 },
    
    //Book 0 Page 4
        { 0x00, 0x00 },
        { 0x7f, 0x00 },
        { 0x00, 0x04 },
        { 0x58, 0x00 },
        { 0x59, 0x00 },
        { 0x5a, 0x00 },
        { 0x5b, 0x64 },
        { 0x5c, 0x40 },
        { 0x5d, 0xbd },
        { 0x5e, 0xb7 },
        { 0x5f, 0xc0 },
        { 0x60, 0x39 },
        { 0x61, 0x80 },
        { 0x62, 0x00 },
        { 0x63, 0x00 },
        { 0x64, 0x2d },
        { 0x65, 0x6a },
        { 0x66, 0x86 },
        { 0x67, 0x6f },
        { 0x68, 0x02 },
        { 0x69, 0x46 },
        { 0x6a, 0xb4 },
        { 0x6b, 0xe4 },
    
    //Book 100 Page 8
        { 0x00, 0x00 },
        { 0x7f, 0x64 },
        { 0x00, 0x08 },
        { 0x1c, 0x50 },
        { 0x1d, 0x17 },
        { 0x1e, 0x01 },
        { 0x1f, 0xc0 },
    
    //Book 100 Page 7
        { 0x00, 0x00 },
        { 0x7f, 0x64 },
        { 0x00, 0x07 },
        { 0x38, 0x2f },
        { 0x39, 0x33 },
        { 0x3a, 0x33 },
        { 0x3b, 0x33 },
        { 0x3c, 0x00 },
        { 0x3d, 0x00 },
        { 0x3e, 0x00 },
        { 0x3f, 0x00 },
        { 0x40, 0x04 },
        { 0x41, 0xcc },
        { 0x42, 0xcc },
        { 0x43, 0xcd },
        { 0x48, 0x09 },
        { 0x49, 0x99 },
        { 0x4a, 0x99 },
        { 0x4b, 0x9a },
        { 0x4c, 0x00 },
        { 0x4d, 0x00 },
        { 0x4e, 0x00 },
        { 0x4f, 0x00 },
    
    //Book 100 Page 18
        { 0x00, 0x00 },
        { 0x7f, 0x64 },
        { 0x00, 0x12 },
        { 0x10, 0x1e },
        { 0x11, 0x2e },
        { 0x12, 0x14 },
        { 0x13, 0x7b },
        { 0x14, 0x21 },
        { 0x15, 0x3d },
        { 0x16, 0x70 },
        { 0x17, 0xa4 },
        { 0x18, 0x24 },
        { 0x19, 0x4c },
        { 0x1a, 0xcc },
        { 0x1b, 0xcd },
        { 0x1c, 0x27 },
        { 0x1d, 0x5c },
        { 0x1e, 0x28 },
        { 0x1f, 0xf6 },
        { 0x20, 0x2a },
        { 0x21, 0x6b },
        { 0x22, 0x85 },
        { 0x23, 0x1f },
        { 0x24, 0x2d },
        { 0x25, 0x7a },
        { 0x26, 0xe1 },
        { 0x27, 0x48 },
        { 0x28, 0x30 },
        { 0x29, 0x8a },
        { 0x2a, 0x3d },
        { 0x2b, 0x71 },
        { 0x2c, 0x33 },
        { 0x2d, 0x99 },
        { 0x2e, 0x99 },
        { 0x2f, 0x9a },
        { 0x30, 0x36 },
        { 0x31, 0xa8 },
        { 0x32, 0xf5 },
        { 0x33, 0xc3 },
        { 0x34, 0x39 },
        { 0x35, 0xb8 },
        { 0x36, 0x51 },
        { 0x37, 0xec },
        { 0x38, 0x3c },
        { 0x39, 0xc7 },
        { 0x3a, 0xae },
        { 0x3b, 0x14 },
        { 0x3c, 0x3f },
        { 0x3d, 0xd7 },
        { 0x3e, 0x0a },
        { 0x3f, 0x3d },
        { 0x50, 0x1c },
        { 0x51, 0x94 },
        { 0x52, 0x7a },
        { 0x53, 0xe1 },
        { 0x54, 0x1f },
        { 0x55, 0xa3 },
        { 0x56, 0xd7 },
        { 0x57, 0x0a },
        { 0x58, 0x22 },
        { 0x59, 0xb3 },
        { 0x5a, 0x33 },
        { 0x5b, 0x33 },
        { 0x5c, 0x25 },
        { 0x5d, 0xc2 },
        { 0x5e, 0x8f },
        { 0x5f, 0x5c },
        { 0x60, 0x28 },
        { 0x61, 0xd1 },
        { 0x62, 0xeb },
        { 0x63, 0x85 },
        { 0x64, 0x2b },
        { 0x65, 0xe1 },
        { 0x66, 0x47 },
        { 0x67, 0xae },
        { 0x68, 0x2e },
        { 0x69, 0xf0 },
        { 0x6a, 0xa3 },
        { 0x6b, 0xd7 },
        { 0x6c, 0x32 },
        { 0x6d, 0x00 },
        { 0x6e, 0x00 },
        { 0x6f, 0x00 },
        { 0x70, 0x35 },
        { 0x71, 0x0f },
        { 0x72, 0x5c },
        { 0x73, 0x29 },
        { 0x74, 0x38 },
        { 0x75, 0x1e },
        { 0x76, 0xb8 },
        { 0x77, 0x52 },
        { 0x78, 0x3b },
        { 0x79, 0x2e },
        { 0x7a, 0x14 },
        { 0x7b, 0x7b },
        { 0x7c, 0x3e },
        { 0x7d, 0x3d },
        { 0x7e, 0x70 },
        { 0x7f, 0xa4 },
    
    };
    

    XMOS works in TDM 8CH format by default. SBCLK = 12.288MHz, FSYNC = 48kHz.

    I would suggest checking your host clocks, make sure the frequency of these clocks is correct and stable.

    You can use the Auto Detect features on registers 0x06 for Sample Rate Auto Detect and register 0x38 for SBCLK to FSYNC Ratio Auto Detect.

    Best regards,
    -Ivan Salazar
    Applications Engineer

  • Hi,

    Thanks for your response.

    We captured the audio waveform using both the EVK board (with XMOS MCU) and our external setup based on STM32U5. We noticed that the waveforms are quite different, even though the same input audio data is used in both cases.

    Could you please suggest what might be causing this behavior?
    Is it possible that the noisy audio is related to the clock or FSYNC signal integrity or alignment?

    Additionally, we are configuring the sample rate using register 0x06, but we couldn’t find any details about register 0x38 in the datasheet (Copyright © 2019, Texas Instruments Incorporated – Submit Documentation Feedback).

    Please find attached the captured waveforms for both the EVK and STM32 setups.

    Thanks,
    Jinal

    5148.waveform.zip


  • Hello,

    Are you using the same script on both devices? One thing you can try is bridging the I2S pins from the EVM to your board and see if the output matches the EVM. Then we can confirm if audio input is the issue. We'll also review the captures in parallel. 

    Regards,
    Sydney Northcutt

  • Hi,

    I am connecting the I²S pins from the EVM to our MCU board in the same way. However, it seems that the XMOS MCU on the EVM is operating in TDM mode, while our STM32 MCU is configured for I²S protocol.

    Could you please suggest the correct configuration required for the I²S protocol to ensure proper audio playback with the TAS2110?

    For more details, please refer to the attached waveform captures.

    Thank you

    Jinal

  • Hi,

    Is it possible to play audio using the I²S protocol through the PPC3 tool?
    Currently, it seems that the TAS2110 operates in TDM mode during audio playback.

    Have you had a chance to review the waveform I shared earlier?

    Thanks,

    Jinal

  • Hi Jinal,

    Apologies for the delayed response, both Ivan/Sydney are out of office.

    Currently you cannot play audio using I2S through PPC3, but you can connect the STM32 I2S signals to the TAS2110 which supports I2S. 

    Let me catch up on the rest of this post and I will provide more feedback as soon as possible. 

    Regards,

    Sebastian

  • Hi  ,  ,  
    Just following up on the post below — could you please provide an update or any insights regarding the issue we reported?

    Thanks,
    Jinal

  • Hi Jinal,

    Both Ivan and Sydney are out of office today. Sydney will be able to support when she gets back to office tomorrow. Sorry again for the delay.