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.

TLV320AIC3120: About Audio signal path setting & Class-D Driver Output power down

Part Number: TLV320AIC3120

Hello Expert,

I have some question.

 Our customer wants to control on/off intersection of Speaker and HPOUT signal path.
At this time, whenever Class-D Driver and HPOUT Driver are turned on/off at the intersection, Power Up/Down setting is also performed.
Page 1 / Register 32 / bit 7:7 of the Class-D Driver was changed to "0" intermittently, and speaker output is not work.
However, there is no problem in Page 1 / Register 31 / bit 7:7 of HPOUT Driver.

1. Is there a case where the bit 7:7 = '0' is automatically changed even though the Class-D Driver's Page 1 / Register 32 / bit 7:7 = '1" is set?

2. When our customer wants to control on/off intersection of Speaker and HPOUT signal path, please send the register setting sequence that can be set most simply in text file or excel file.
In my opinion, if I set Power Up of the Class-D Driver and HPOUT Driver at the beginning, and control only with Class-D Driver Mute On/Off and HPOUT Mute On/Off, I think that there may no issue, How about your opinion?

I'm looking forward to receiving your good feedback ASAP.

Best regards,

Michael

  • Hi,

    - See section 7.3.12.12.2 for speaker output for more information of possible shut down scenario.

    - There's no particular order of shutting these output. You can recommend your suggestion to them instead of shutting it down use the mute feature.

    Regards.

  • Hi Pdjuandi

    Thanks for your guide and feedback.

    When I checked value on page 1 / register 32 / bit D0, D0 is "0".

    So short circuit event was not occurred.

    But Class-D output driver was powered down.

    Could you please check what's the root cause? and whether the below customer code has some fault or not ?

    If you need more information, let me know it.

    * Customer code

     ==========================================================================================

    // A function that writing val to the specified register

    write_i2c (register,  val); 

     

    // A function that writes the val value only to the bit whose mask value is 1 in the specified register.

    write_i2c_bitmask (register, mask, val);

     

    void line_out_mode(isSpk)

    {

        if (isSpk == true) {

            HPout_cfg(false);

            ClassD_cfg(true);

        }

        else {

            ClassD_cfg(false);

            HPout_cfg(true);

        }

    }

     

    void HPout_cfg(on)

    {

        if (on == true) {   

            write_i2c(Page1 - Reg 33, 0x4e); // De-pop, Power on = 800 ms, Step time = 4 ms

            write_i2c(Page1 - Reg 35, 0x40); // DAC Output Mixer Routing

            write_i2c(Page1 - Reg 36, 0x00); // HPOUT Driver analog gain

            write_i2c(Page1 - Reg 37, 0x00); // HPOUT Driver analog gain

     

            write_i2c_bitmask(Page1 - Reg 31, mask = 0x82, val = 0x82); // Power-on, short circuit protection enable

            write_i2c_bitmask(Page1 - Reg 40, mask = 0x04, val = 0x04);  // Unmute HPOUT Driver  (P1/R40)

        } else {       

            write_i2c_bitmask(Page1 - Reg 40, mask = 0x04, val = 0x00);  // Mute HPOUT Driver  (P1/R40)

           write_i2c_bitmask(Page1 - Reg 31, mask = 0x80, val = 0x00);  // Power-down HPOUT (P1/R31)

        }

    }       

      

     void ClassD_cfg(on)       

    {

       if (on == true) {   

            write_i2c(Page1 - Reg 35, 0x40);   // DAC Output Mixer Routing

     

            write_i2c_bitmask(Page 1 - Reg 32, mask = 0x80, val = 0x80);  // Power-up Class-D drivers

            write_i2c_bitmask(Page 1 - Reg 42, mask = 0x04, val = 0x04);  // Unmute Class-D Left

        } else {           

            write_i2c_bitmask(page 1 - Reg 42, mask = 0x04, Val = 0x00); // mute Class-D Left (P1/R42)

            write_i2c_bitmask(Page 1 - Reg 32, mask = 0x80, val = 0x00);  // Power-down Class-D drivers

        }

    }

     ==========================================================================================

    Best Regards,

    Michael

  • Check the interrupt flags register 37 and 44 to confirm the status. If no short circuit then it's likely it's written/configured to power it down.

    One suggestion is to swap these steps, unmute first then power up:

    write_i2c_bitmask(Page 1 - Reg 32, mask = 0x80, val = 0x80);  // Power-up Class-D drivers

    write_i2c_bitmask(Page 1 - Reg 42, mask = 0x04, val = 0x04);  // Unmute Class-D Left