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.

TLV320DAC3120: Headset Detection not working. Why oh why?

Part Number: TLV320DAC3120

Hi, I can't figure out why I my chip does not detect a headset.

I'm already trying things at the lowest complexity:
There is a 2k2 resistor between MICBIAS and VOL/MICDET.
And I would expect an INT1 to be raised when I touch VOL/MICDET to GND.
But no INT1 is raised, and when I read Page 0 register 44, it is always 0.

This is my code: All other values are in the state they are after a reset.
tlv320_write_reg(0, 0); // select page 0 for the following register operations
tlv320_write_reg(67, 0b10000000); // enable headset detection at all
tlv320_write_reg(51, 0b00010100); // GPIO1 output = INT1 output
tlv320_write_reg(48, 0b10000000); // raise INT1 on headphone detection

All supply voltages are 3.3V
Voltage at VOL/MICDET is 1.92V

What am I doing wrong?

  • Hello,

    I need to check with one of our team members who is familiar with the part . I will let you know.

    Regards,

    Arash

  • Hi Rainer,

    There are a couple things I'd check to verify the MICDET functionality is working as expected:

    • Have you verified the MICDET is working by reading back register 67? You should see Bits 5-6 changing depending on the accessory inserted. Since you have INT1 already configured, you can also read register 44 and check if bit 4 is set.
    • Regarding INT1, you can also try setting bit 0 from Register 48 to 1, this way you'll have a series of 2-ms pulses until you clear the flag on register 44, instead of a single 2-ms pulse.

    Hopefully this helps to know that you're configuring the device correctly. If there are any further questions please let me know.

    Best regards,
    -Ivan Salazar
    Applications Engineer

  • Hi Ivan,
    I just tried your suggestions, but registers 67 and 44 don't change at all.
    For testing, I pull MICDET hard do GND. (Before pulling to GND, it is at 1.92V)

  • I've found the "secret sauce":

    "If MCLK is not used in the application, the internal oscillator must be enabled first before performing the following steps. To enable the internal oscillator, use the Register Inspector. Go to Page 3, Register 16, and change Bit 7 from 1 to 0."

    This is a from a note in 
    https://www.ti.com/lit/an/slaa540b/slaa540b.pdf

    Thank you anyways for your help.
    I'm honestly impressed by a large company that really really does give excellent support in an open forum.
    Kudos!

    Rainer