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.

TAS5713: reboot on exit all-channel shutdown

Part Number: TAS5713

Hi,

I don't know if someone can help me.

I am trying to create an alarmclock on a SBC, a Bananapro (equivalent to a Raspberry Pie). I created my own PCB (VCC=18V, AVSS,AVDD=3.3V):

Whenever I tried to unmute my TAS5713, i.e.

- reset

- trim oscillator (i2cset -y 3 26 0x1B 0x00)

- configure the DAC (...)

- exit all-channel shutdown (i2cset -y 3 26 0x05 0x00)

the TAS5713 reboot :-(

Anyone can give me a hint why the TAS reboot?

Regards,

Nicolas

PS: the error register never change from 0x00 value

  • Hi Nicolas,

    Thanks for reaching out to us and for your interest in TAS5713.

    Are you implementing the proper delay times between the initialization steps? For example, there should be a 50ms delay after trimming the oscillator. The Initialization Sequence is outlined on pg. 37-38 of the datasheet, where you will also find the delay times that ought to be implemented during startup.

    Could you provide your Initialization Sequence code? Having a more comprehensive look at your process will allow us to help you more effectively. I will send you a Connection Request so that you can share the code privately, if you so choose.

    Regards,

    Brian Angiel

  • Hi Brian,

    thanks for this quick (first) answer :-).
    No problem to share my litttle code here (on part is in C, the other in python... because I was lazy). So I am implementing delays for the initialization steps:

    #include <wiringPi.h>

    /* gcc -o reset reset.c -lwiringPi */

    #define RESET 4

    #define PDN   5

    int main (void)

    {

      wiringPiSetup () ;

      pinMode (RESET, OUTPUT) ;

      pinMode (PDN,   OUTPUT) ;

      digitalWrite (RESET, LOW) ;

      digitalWrite (PDN, HIGH) ;

      delay(1);

      digitalWrite (RESET, HIGH) ;

      delay(15);

      delay(10);

      return 0 ;

    }

     

    After that I begin to initialize the DAC:

    #!/usr/bin/python

    import smbus

    import time

    usleep = lambda x: time.sleep(x/1000000.0)

     

    commands = [

      { 'reg': 0x07,'data': [0xff]},

      { 'reg': 0x03,'data': [0x80]},

      { 'reg': 0x04,'data': [0x03]},

      { 'reg': 0x06,'data': [0x00]},

      { 'reg': 0x10,'data': [0x02]},

      ...

     

    bus = smbus.SMBus(3)    # 0 = /dev/i2c-0 (port I2C0), 1 = /dev/i2c-1 (port I2C1)

    DEVICE_ADDRESS = 26

    # Trim oscillator

    bus.write_i2c_block_data(DEVICE_ADDRESS,0x1B,[0x00])

    usleep(50000)

    for cmd in commands:

        rc=bus.write_i2c_block_data(DEVICE_ADDRESS,cmd['reg'],cmd['data'])

        if rc != None:

            print "error: reg=%d" % (cmd['reg'])

    rc = bus.write_i2c_block_data(DEVICE_ADDRESS,0x05,[0x00])

    if rc != None:

        print "error: reg=%d" % (cmd['reg'])

    But true, I don't respect everything, in particular I don't rampup AVDD, and worst PVDD, i.e. everything is "on" when my Bananapro is started. Do you think it is the root cause? which kind of component people use to rampup PVDD?

    Regards,

  • Hi Nicolas,

    Yes, it's possible that the reboot is caused by deviating from the Initialization Sequence outlined in the datasheet. I would recommend starting with following that sequence, then please let me know if you are still experiencing the reboot.

    In addition, I am going to attach a sample initialization code that I have. It is for initializing a device operating in PBTL mode with BD modulation, but hopefully it will be helpful for you.

    Regards,

    Brian Angiel

    TAS5713 Initialization.txt
    void TAS_Init(void)
    
    {
     
      delay_ms(50);  
      TAS_txone(0x1B, 0x00);                     //Oscillator trim
      delay_ms(75);  
      TAS_txone(0x07, 0x30);                     //Master volume @ -9dB
      delay_ms(50);  
      TAS_txone(0x0E, 0x91);                     //Volume slew rate @ 1024 steps (85mS@48kHz) 
      delay_ms(50);  
      TAS_txone(0x19, 0x3A);                     //PWM shutdown group - PBTL setting
      delay_ms(50);
      TAS_txx(0x25, 0x01, 0x10, 0x32, 0x45);     //PWM Output Mux - PBTL setting
      delay_ms(50);  
      TAS_txx(0x20, 0x00, 0x81, 0x77, 0x72);     //nput Mux Reg - BD mode setting
      delay_ms(50);  
    //The following registers 11-14 are inter-channel delay (ICD) for PBTL
      TAS_txone(0x11, 0xB8);  
      delay_ms(50);  
      TAS_txone(0x12, 0x60);  
      delay_ms(50);  
      TAS_txone(0x13, 0xA0);  
      delay_ms(50);  
      TAS_txone(0x14, 0x48);  
      delay_ms(50);
    
    }

  • Hi,

    i re-did my PCB, indeed I wasn't at all sending the initialization sequence. Now I think I am more friendly with the chip: it doesn't reboot.
    But it still doesn't play, the error register is at 0x00, and after a short period of time it switch to 0x40 (PLL autolock error), and I just hear "noise" on the speaker. What does it means (PLL autolock error)?
    But sometimes the error go from 0 to 0x40, then 0x50 then 0xd0.


    Do I need to play music JUST after initializing the chip, or can it be done "a bit later"?


    Regards,
  • Hi Nicolas,

    I'm happy to hear that the new layout is working better for you.

    Can you send me some information on your clock signals? What are you using to generate them, and what frequency are you running for each clock?

    Do you have a way to probe the clock signals to check the frequency and quality of the signal?

    Regards,

    Brian Angiel