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.

TAS5717: TAS5717 problem

Part Number: TAS5717

Hi team,

We use TAS5717 to drive 2 pcs 1watt&8ohm speakers with 5V PVDD supply.(schematic is shown on the attachment)

  21_Audio AMP.pdf
Now we have a situation here that there is no sound out.
Signals can be measured on I2S,which follow register configuration and seems OK.
MCLK=11.28Mhz
LRCLK=44.1Khz
SCLK=2.82Mhz
Signals measured on OUT_A/B/C/D is square wave with 352khz frequency.
Register 0x1B has been set to 0X00 but still no sound out.

Is there anything wrong with my design?
What else I should check?

Thanks!

  • Hi Zhonghui,

    Did you change the master volume register 0x07? The default for master volume is mute. That could be why you aren't seeing any output signal. 

    Best Regards,

    Robert Clifton 

  • Hi Robert,

    Thank you for your reply.

    We configure the register of 0x07 as 0x00b4.

    Current problems:

    1. Can you provide a set of register reference configuration list that only uses speaker?

    2. No matter how we modify the parameter value of the register, The output waveforms of out_A/B/C/D are the same (a standard square wave with 352khz frequency and 5V peak), which may be caused by the wrong configuration?

    Thanks again.

    Best regards,

  • Hi Zhonghui,

    Can you send me your register settings? I think it would be easier for me to test your configurations first to make sure that I see the same issues. 

    Best Regards,

    Robert Clifton

  • Hi Robert,

    This is our register configuration, please check, thank you!

    TAS5717_APPO_Init_register_list.txt
    #define TAS571X_SDI_REG                 0x04
    #define TAS571X_SDI_FMT_MASK            0x0f
    
    #define TAS571X_SYS_CTRL_2_REG          0x05
    #define TAS571X_SYS_CTRL_2_SDN_MASK     0x40
    
    #define TAS571X_SOFT_MUTE_REG           0x06
    #define TAS571X_SOFT_MUTE_CH1_SHIFT     0
    #define TAS571X_SOFT_MUTE_CH2_SHIFT     1
    #define TAS571X_SOFT_MUTE_CH3_SHIFT     2
    
    #define TAS571X_MVOL_REG                0x07
    #define TAS571X_CH1_VOL_REG             0x08
    #define TAS571X_CH2_VOL_REG             0x09
    
    #define TAS571X_OSC_TRIM_REG            0x1b
    
    static u8 tas5717_2reg_0x08[2]={0x00,0x98};
    static u8 tas5717_2reg_0x09[2]={0x00,0x98};
    static u8 tas5717_4reg_0x25[4]={0x01,0x02,0x13,0x45};
    
    static u8 tas5717_4reg_0x4F[4]={0x00 , 0x00,  0x00,  0x08};
    static u8 tas5717_4reg_0x56[4]={0x00 , 0x40,  0x00,  0x00};
    static u8 tas5717_4reg_0x57[4]={0x00  ,0x02,  0x00,  0x00};
    
    static u8 tas5717_4reg_0x50[4]={0x00  ,0x00,  0x00,  0x10};//EQ control
    static u8 tas5717_4reg_0x46[4]={0x00,  0x02,  0x06,  0x23};//DRC 0x23->0x20 to turn off DRC
    static u8 tas5717_8reg_0x3E[8]={0x00,  0x00,  0x01,  0x00 , 0x00,  0x7F,  0xFF,  0x00 };
    static u8 tas5717_8reg_0x3F[8]={0x00 , 0x08 , 0x00 , 0x00 , 0xFF , 0xF8 , 0x00 , 0x00};
    static u8 tas5717_8reg_0x43[8]={0x00 , 0x08 , 0x00 , 0x00 , 0x00 , 0x07 , 0xFF , 0xFF};
    static u8 tas5717_8reg_0x3C[8]={0x00 , 0x00 , 0x01 , 0x00 , 0xFF , 0xFF , 0xFF , 0xF0};
    static u8 tas5717_8reg_0x3B[8]={0x00 , 0x01 , 0x00 , 0x00 , 0x00 , 0x7F , 0x00 , 0x00};
    static u8 tas5717_8reg_0x40[8]={0x0C,  0x57 , 0x00 , 0x00 , 0x0C , 0x56 , 0xFF , 0xFF};
    static u8 tas5717_4reg_0x70[4]={0x00,  0x80,  0x00,  0x00};
    static u8 tas5717_4reg_0x71[4]={0x00 , 0x00,  0x00,  0x00};
    static u8 tas5717_4reg_0x75[4]={0x00 , 0x00,  0x00,  0x00};
    static u8 tas5717_4reg_0x74[4]={0x00  ,0x80,  0x00,  0x00};
    static u8 tas5717_4reg_0x73[4]={0x00  ,0x80,  0x00,  0x00};
    static u8 tas5717_4reg_0x72[4]={0x00  ,0x00,  0x00,  0x00};
    static u8 tas5717_4reg_0x76[4]={0x00  ,0x00,  0x00,  0x00};
    static u8 tas5717_4reg_0x77[4]={0x00  ,0x80,  0x00,  0x00};
    
    static u8 tas5717_8reg_0x51[8]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_8reg_0x52[8]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_8reg_0x6A[8]={0x00  ,0x0C,  0xCC,  0xCC,0x00,0x73,0x33,0x34};
    
    //ch1_bq
    static u8 tas5717_20reg_0x26[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x27[20]={0x00 , 0x7B,  0x8C , 0xF2 , 0x0F,  0x84 , 0x73 , 0x0E , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x77 , 0x19 ,0xE5 , 0x00 , 0x00 , 0x00 , 0x00 };
    static u8 tas5717_20reg_0x28[20]={0x00 , 0x7B,  0x3E,  0xC6,  0x0F,  0xC1,  0xD4,  0xDF,  0x00 , 0x74,  0xF4,  0x91,  0x00,  0x3E,  0x2B,  0x21,  0x0F,  0x8F,  0xCC,  0xA9};
    static u8 tas5717_20reg_0x29[20]={0x00 , 0x7A,  0x25 , 0x68,  0x0F,  0x14,  0x71,  0xA2,  0x00,  0x72,  0x66,  0xFF,  0x00,  0xEB,  0x8E,  0x5E,  0x0F,  0x93,  0x73,  0x98 };
    static u8 tas5717_20reg_0x2A[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x2B[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x2C[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x2D[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x2E[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x2F[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x58[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x59[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x5A[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x5B[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    
    //ch2_bq
    static u8 tas5717_20reg_0x30[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x31[20]={0x00,  0x7B,  0x8C,  0xF2,  0x0F,  0x84,  0x73,  0x0E,  0x00,  0x00,  0x00,  0x00,  0x00,  0x77,  0x19,  0xE5,  0x00,  0x00,  0x00  ,0x00};
    static u8 tas5717_20reg_0x32[20]={0x00,  0x7B,  0x3E,  0xC6,  0x0F,  0xC1,  0xD4,  0xDF , 0x00 , 0x74 , 0xF4,  0x91 , 0x00 , 0x3E,  0x2B , 0x21,  0x0F , 0x8F , 0xCC , 0xA9 };
    static u8 tas5717_20reg_0x33[20]={0x00,  0x7A,  0x25,  0x68,  0x0F,  0x14,  0x71,  0xA2,  0x00,  0x72,  0x66,  0xFF,  0x00,  0xEB,  0x8E,  0x5E,  0x0F,  0x93,  0x73,  0x98};
    static u8 tas5717_20reg_0x34[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x35[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x36[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x37[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x38[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x39[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x5C[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    static u8 tas5717_20reg_0x5D[20]={0x00  ,0x80,  0x00,  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
    
    
    
    regmap_write(priv->regmap, TAS571X_OSC_TRIM_REG, 0);
    regmap_update_bits(priv->regmap, TAS571X_SYS_CTRL_2_REG,
                                     TAS571X_SYS_CTRL_2_SDN_MASK, 0);
    regmap_update_bits(priv->regmap, TAS571X_SYS_CTRL_2_REG,
                                     TAS571X_SYS_CTRL_2_SDN_MASK, 0);
    
    regmap_write(priv->regmap, 0x03, 0x80);
    regmap_write(priv->regmap, 0x1C, 0x07);
    
            regmap_write(priv->regmap, 0x0e, 0xf1);
            regmap_write(priv->regmap, 0x05, 0x00);
            regmap_write(priv->regmap, 0x1a, 0x68);
            regmap_write(priv->regmap, 0x10, 0x01);
    
            regmap_bulk_write(priv->regmap,0x56,tas5717_4reg_0x56,4);
            regmap_bulk_write(priv->regmap,0x57,tas5717_4reg_0x57,4);
            regmap_bulk_write(priv->regmap,0x3E,tas5717_8reg_0x3E,8);
            regmap_bulk_write(priv->regmap,0x3F,tas5717_8reg_0x3F,8);
            regmap_bulk_write(priv->regmap,0x70,tas5717_4reg_0x70,4);
            regmap_bulk_write(priv->regmap,0x71,tas5717_4reg_0x71,4);
            regmap_bulk_write(priv->regmap,0x72,tas5717_4reg_0x72,4);
            regmap_bulk_write(priv->regmap,0x73,tas5717_4reg_0x73,4);
            regmap_bulk_write(priv->regmap,0x74,tas5717_4reg_0x74,4);
            regmap_bulk_write(priv->regmap,0x75,tas5717_4reg_0x75,4);
            regmap_bulk_write(priv->regmap,0x76,tas5717_4reg_0x76,4);
            regmap_bulk_write(priv->regmap,0x77,tas5717_4reg_0x77,4);
            regmap_bulk_write(priv->regmap,0x50,tas5717_4reg_0x50,4);
            regmap_bulk_write(priv->regmap,0x46,tas5717_4reg_0x46,4);
            regmap_bulk_write(priv->regmap,0x40,tas5717_8reg_0x40,8);
            regmap_bulk_write(priv->regmap,0x3B,tas5717_8reg_0x3B,8);
            regmap_bulk_write(priv->regmap,0x3C,tas5717_8reg_0x3C,8);
            regmap_bulk_write(priv->regmap,0x43,tas5717_8reg_0x43,8);
    regmap_write(priv->regmap, 0x06, 0x00);
            regmap_bulk_write(priv->regmap,0x4f,tas5717_4reg_0x4F,4);
    
            regmap_bulk_write(priv->regmap,0x07,tas5717_2reg_0x07,2);
            regmap_bulk_write(priv->regmap,0x08,tas5717_2reg_0x08,2);
            regmap_bulk_write(priv->regmap,0x09,tas5717_2reg_0x09,2);
            regmap_bulk_write(priv->regmap,0x25,tas5717_4reg_0x25,4);
    
            regmap_bulk_write(priv->regmap,0x51,tas5717_8reg_0x51,8);
            regmap_bulk_write(priv->regmap,0x52,tas5717_8reg_0x52,8);
            regmap_bulk_write(priv->regmap,0x6a,tas5717_8reg_0x6A,8);
            regmap_bulk_write(priv->regmap,0x26,tas5717_20reg_0x26,20);
            regmap_bulk_write(priv->regmap,0x27,tas5717_20reg_0x27,20);
            regmap_bulk_write(priv->regmap,0x28,tas5717_20reg_0x28,20);
            regmap_bulk_write(priv->regmap,0x29,tas5717_20reg_0x29,20);
            regmap_bulk_write(priv->regmap,0x2a,tas5717_20reg_0x2A,20);
            regmap_bulk_write(priv->regmap,0x2b,tas5717_20reg_0x2B,20);
            regmap_bulk_write(priv->regmap,0x2c,tas5717_20reg_0x2C,20);
            regmap_bulk_write(priv->regmap,0x2d,tas5717_20reg_0x2D,20);
            regmap_bulk_write(priv->regmap,0x2e,tas5717_20reg_0x2E,20);
            regmap_bulk_write(priv->regmap,0x2f,tas5717_20reg_0x2F,20);
            regmap_bulk_write(priv->regmap,0x58,tas5717_20reg_0x58,20);
            regmap_bulk_write(priv->regmap,0x59,tas5717_20reg_0x59,20);
            regmap_bulk_write(priv->regmap,0x5a,tas5717_20reg_0x5A,20);
            regmap_bulk_write(priv->regmap,0x5b,tas5717_20reg_0x5B,20);
            regmap_bulk_write(priv->regmap,0x30,tas5717_20reg_0x30,20);
            regmap_bulk_write(priv->regmap,0x31,tas5717_20reg_0x31,20);
            regmap_bulk_write(priv->regmap,0x32,tas5717_20reg_0x32,20);
            regmap_bulk_write(priv->regmap,0x33,tas5717_20reg_0x33,20);
            regmap_bulk_write(priv->regmap,0x34,tas5717_20reg_0x34,20);
            regmap_bulk_write(priv->regmap,0x35,tas5717_20reg_0x35,20);
            regmap_bulk_write(priv->regmap,0x36,tas5717_20reg_0x36,20);
    regmap_bulk_write(priv->regmap,0x37,tas5717_20reg_0x37,20);
            regmap_bulk_write(priv->regmap,0x38,tas5717_20reg_0x38,20);
            regmap_bulk_write(priv->regmap,0x39,tas5717_20reg_0x39,20);
            regmap_bulk_write(priv->regmap,0x5c,tas5717_20reg_0x5C,20);
            regmap_bulk_write(priv->regmap,0x5d,tas5717_20reg_0x5D,20);

    There are still a few questions, please help to confirm.

    1. Does TAS5717 have power on timing requirements? How to set the power on between PvdD, AVDD/DVDD, PDN and RESET.

    2. We don't use the Headphone in our design. Is it OK for the pins (Pin1, 2, 3, 4, 47, 48) to be suspended? HP_SD need to be controlled?

    Best Regards,

  • Hi Zhonghui,

    Thank you for sharing. Please allow us a couple of days to investigate this. We will let you know if we find anything from the script. 

    Best Regards,

    Robert Clifton 

  • Hi Robert,

    Thanks for your help.

    I add two question.

    Please also help to answer.

    Thanks again.

  • Hi Zhonghui,

    What are the other two questions? 

    Also I apologize, it's taking a little longer to get everything setup to test your script. Thank you for your patience. 

    Best Regards,

    Robert Clifton 

  • Hi Robert,

    I've added them to the original question, now write them again, please check.Thanks.

    There are still a few questions, please help to confirm.

    1. Does TAS5717 have power on timing requirements? How to set the power on between PvdD, AVDD/DVDD, PDN and RESET.

    2. We don't use the Headphone in our design. Is it OK for the pins (Pin1, 2, 3, 4, 47, 48) to be suspended? HP_SD need to be controlled?

    Best Regards,

  • Hi Zhonghui,

    I'm sorry I missed them! Allow me to answer them. 

    1. For the power up sequence. Please look at Figure 4 on page 13 of the datasheet. 

    2. For the headphone pins, if you are not going to be using the headphone driver you can configure the pins as so:

    • Head-phone inputs & outputs can be tied to GND or left floating
    • HPVSS can be tied directly to GND
    • Cap between CPP & CPN can be removed. CPP can either be floating or tied to 3.3V. CPN can either be floating or tied to GND.
    • HP-shut down can be tied to GND directly
  • Hi Robert,

    Thank you for your detailed answers.

    About register configuration,please help to analysis.

    Thanks again.

    Best Regards,

  • Hi Zhonghui,

    Of course! 

    Best Regards,

    Robert Clifton 

  • Hi Zhonghui,

    What's interesting is from what I've seen through your code, you never had the master volume defined. Now this is a little confusing since you did mention register 0x07 is set to 0x00b4. 

    I've been manually going through the script line at a time and I haven't had any issues. I did notice that you are making changes to register 0x6A which is a reserved register. Not sure if that's the reason you aren't able to get audio passing through but I'm curious as to why you are trying to change that register. 

    I haven't taken a look at the bq changes you did on the registers. Can you run the script without making the bq changes and see if that works? 

    Thank you,

    Robert Clifton