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.

TLV320AIC3204 wake up time

Other Parts Discussed in Thread: TLV320AIC3204

Hi

I use a TLV320AIC3204. A very low power consumation is needed if the chip is not working.

I drive the TLV320AIC3204 into sleep mode and the power consumation is at minimum (In standby mode the power is too high). Also the reference voltage (pin 18) goes near 0V. 

When I wake up the TLV320AIC3204 the reference voltage needs about  4 seconds! to be at the nominal value from 3.3V.

This is much too long for my application. The first audio signals are too silent in these 4 seconds. You can hear it.

 

Questions:

Are these 4s normal or do I have a systematic fault?

How can I accelerate this start up time? The power up register (page1 0x7b) dosen't have any affect in sleep mode!

Is it correct that the reference voltage is near 0V in sleep mode

Is it correct that the reference voltage is at supply voltage in standby mode?

 

- The basics for the sleep and wakeup sequences are from the slaa473b.pdf

- The basics for the power supply circuit configuration are from the slaa404c.pdf

 

Best Regards

Michael

 

  • Hi Michael,

    Welcome to E2E and thank you for your interest in our products.

    Could you provide your register configuration? It could be related with the registers too.

    Thank you.

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi Luis

    First my supply configuration is the same like in slaa404c.pdf page 10 type A.

    // initClkAndInterface
    write reg 0x00 {0}   // page 0
    write reg 0x04 {0, 0, 0, 0, 0}
    write reg 0x05 {1, 1, 0}
    write reg 0x0b {4, 1}
    write reg 0x0c {3, 1}
    write reg 0x0d {0, 0}
    write reg 0x0e {128}
    write reg 0x3c {4, 0}
    write reg 0x12 {4, 1}
    write reg 0x13 {3, 1}
    write reg 0x14 {128}
    write reg 0x3d {4, 0}
    write reg 0x1b {0, 0, 1, 1, 0, 0}
    write reg 0x1d {3, 0, 0, 0, 0, 0}
    write reg 0x35 {0, 1, 1, 0}
    write reg 0x1e {4, 1}

    // initPower
    write reg 0x00 {1}  // page 1
    write reg 0x02 {0, 0, 0, 1, 0, 0}
    write reg 0x01 {0, 0, 0}
    write reg 0x02 {0, 0, 0, 1, 0, 0}
    write reg 0x0a {1, 1, 0, 1, 0, 0}
    write reg 0x3d {255}
    write reg 0x03 {0, 0, 0, 0}
    write reg 0x04 {0, 0, 0, 0}
    write reg 0x47 {49, 0}
    write reg 0x7b {7, 0}

    // initAdc
    write reg 0x00 {1}
    write reg 0x34 {0, 0, 0, 0}
    write reg 0x36 {0, 0, 0, 0}
    write reg 0x37 {0, 0, 0, 1}
    write reg 0x39 {0, 0, 0, 1}
    write reg 0x3b {8, 0}
    write reg 0x3c {8, 0}

    // initDac
    write reg 0x00 {1}
    write reg 0x0e {0, 0, 0, 1, 0, 0}
    write reg 0x0f {0, 0, 0, 1, 0}
    write reg 0x09 {0, 0, 0, 1, 0, 0, 0}
    write reg 0x12 {4, 0, 0}
    write reg 0x13 {0, 1, 0}

    write reg 0x00 {0}
    write reg 0x41 {0}
    write reg 0x42 {0}

    // powerAdcUp
    write reg 0x00 {0}
    write reg 0x51 {0, 0, 0, 0, 1, 0}

    // powerAdcDown
    write reg 0x00 {0}
    write reg 0x51 {0, 0, 0, 0, 0, 0}

    // powerDacUp
    write reg 0x00 {0}
    write reg 0x3f {0, 0, 2, 0, 1}

    // powerDacDown
    write reg 0x00 {0}
    write reg 0x3f {0, 0, 0, 0, 0}

    // muteAdc
    write reg 0x00 {0}
    write reg 0x52 {0, 1, 0, 1}
    write reg 0x53 {0, 0}
    write reg 0x54 {0, 0}

    // unmuteAdc
    write reg 0x00 {0}
    write reg 0x52 {0, 0, 0, 1}
    write reg 0x53 {0, 0}
    write reg 0x54 {0, 0}

    // muteDac
    write reg 0x00 {0}
    write reg 0x40 {0, 1, 1, 0, 0}

    // unmuteDac
    write reg 0x00 {0}
    write reg 0x40 {0, 1, 0, 0, 0}

    // powerOn 
    write reg 0x00 {1}  // page 1
    write reg 0x02 {1, 0, 0, 1, 0, 0}
    write reg 0x01 {0, 1, 0}
    write reg 0x02 {1, 0, 0, 0, 0, 0}

    // powerOff 
    write reg 0x00 {1}  // page 1
    write reg 0x02 {1, 0, 0, 1, 0, 0}
    write reg 0x01 {0, 0, 0}
    write reg 0x02 {0, 0, 0, 1, 0, 0}

    // sequences
    init(initClk,
         initPower,
         initAdc,
         initDac);

    wakeUp(powerOn,
           powerAdcUp,
           unmuteAdc,
           powerDacUp,
           unmuteDac);

    sleep(muteDac,
          powerDacDown,
          muteAdc,
          powerAdcDown);




    Best Regards

    Michael

  • Hi, Michael,

    Excuse me, could you provide the write reg function syntax. How does this function write in the selected register?

    Thank you.

    Best regards,

    Luis Fernando Rodríguez S.

  • Hi Luis

    Every register is mapped in a struct. Exactly by means of the definition in slaa557.pdf

    e.g. register 0x3b (page 1):
    typedef struct
    {
      u8       volume : 7;
      u8       enable : 1;
    } micPgaLeftVolCtrl_t;

    I initialize it with:
    static const micPgaLeftVolCtrl_t leftVol = {8, 0}; // 4dB enabled

    Then I send the leftVol or one of the other register values with a write command to the spi.



    Best Regards

    Michael

     

     

  • Hi, Michael,

    I already made some tests with your register configuration. I changed the value of register 0x7b from 0x07 ({7, 0}) to 0x01 ({1,0}). Then, I applied the wake up sequence and it worked, the reference voltage reached its value immediately.

    I hope this helps you. If you still have questions or comments, please let me know.

    Best regards,
    Luis Fernando Rodríguez S.
  • Hi Luis,

    I changed reg 0x7b from {7, 0} to {1, 0} (from 120ms forced to 40ms when ready).

    It didn't help. The reference voltage has a charging curve from 4s. It doesn't depend on the value in register 0x7b.

    Do you have a 10uF cap on the reference pin 18?


    Sorry I forgot the most important thing in my sequences above to run in sleep mode:

    sleep(muteDac,
          powerDacDown,
          muteAdc,
          powerAdcDown,
          powerOff);


    The reference voltage on pin 18 goes low with the powerOff (sleep mode) and the power consumation is minimal (a few uA).
    Without the powerOff, the reference voltage remains high and 0x7b works (standby mode). 
    But then, the power consumation is too high.  

    Best Regards

    Michael

  • Hi, Michael,

    Yes, you're right. When I added the powerOff sequence, the reference voltage changes slowly. In the EVM, it is used a 10uF and a 0.1uF capacitors (total: 10.1uF). The section 2.10 Reference Voltage of the TLV320AIC3204 Application Reference Guide explains that the time must be 1 second using a 1uF decoulpling capacitor. If it is required a faster power-up, the reference block can be kept powered up.

    Please, check the Reference Voltage section and if you still have questions, please let me know.

    Best regards,

    Luis Fernando Rodríguez S.

  • Hi Luis

    Thank you for the answer.

    Also the capter 2.10 was very helpful.

    But I have still the problem that I cannot keep the reference block powerd up with setting register 123.

    Power on sequence:

    write reg 0x01 {0, 1, 0}           // Weak connection disabled
    write reg 0x02 {1, 0, 0, 0, 0, 0}  // AVDD power up, analog block enable
    write reg 0x7b {5, 0}              // power up 40ms forced

    Power off sequence:

    write reg 0x01 {0, 0, 0}           // Weak connection enable
    write reg 0x02 {0, 0, 0, 1, 0, 0}  // AVDD power down, analog block disable
    write reg 0x7b {5, 0}              // power up 40ms forced

    The reference block is up/down when I keep AVDD power up/down.
    Register 123 0x7b has no effect. No matter how I set it.

    I read capter 2.10, 2.9.1.2.1, 2.9.1.2.2, 2.9.1.2.3 in slaa557 and perhaps I understand it wrong.

    Please describe a power down sequence with the needed register values for standby, sleep and shutdown mode for the configuration A in slaa404 page 10.
     

    Best Regards

    Michael









     


     

  • Hi, Michael,

    Here's a power on and off sequences adapted to your time needs. They work properly in the EVM.

    These code lines are in format:

    w (write) 30 (I2C address) 00 (number of register) 00 (register value)

    #Power off sequence:

    w 30 00 01
    w 30 01 08
    w 30 00 01
    w 30 7B 00
    w 30 00 01
    w 30 02 09
    w 30 00 01
    w 30 02 08
    w 30 00 01
    w 30 7B 05

    #Power on sequence:

    w 30 00 01
    w 30 01 08
    w 30 00 01
    w 30 7B 00
    w 30 00 01
    w 30 02 09
    w 30 00 01
    w 30 02 01
    w 30 00 01
    w 30 7B 05

    I hope this helps you. If you still have questions, please let me know.

    Best regards,

    Luis Fernando Rodríguez S.