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.

[参考译文] TLV320AIC3111:耳机检测问题

Guru**** 1916930 points
Other Parts Discussed in Thread: TLV320AIC33, TLV320AIC3101, TLV320AIC3111
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1076718/tlv320aic3111-headset-detection-problems

部件号:TLV320AIC3111
线程中讨论的其他部件:TLV320AIC33TLV320AIC3101测试

您好,

我在 TLC320AIC3111平台上遇到耳机检测问题。  我没有使用 EVM;该器件集成在运行 Linux 的自定义主板上,使用 tlv320aic31xx 驱动程序。

耳机接口按照设备数据表(图5-1)中的建议进行交流耦合,并在下面的定制主板示意图中显示。

测试时,我使用的是带麦克风和开关的标准立体声耳机;这是苹果公司几年前发布的用于具有3.5毫米音频插孔的手机的耳机。

我所遇到的问题的简短摘要如下:

(1) 如果耳机在播放声音输出之前已插入插孔,则会将耳机检测为耳机。

(2) 如果耳机在声音输出播放时插入插孔,则会将耳机检测为耳机(而不是耳机)。

我尝试了许多设置,但到目前为止,当耳机在播放声音时插入电源时,设备无法将耳机检测为头戴式耳机类型。  这似乎与去抖设置有关,但我认为我已经尝试了所有的组合。

驱动程序配置为使用 INT1进行耳机检测。  INT1中断在耳机插头事件中持续激活。  我在中断中尝试了多种配置,以检查寄存器0:44和0:46中的耳机插入/删除标记的状态,以及寄存器0:67中的耳机类型。  我还尝试了一些 MICBIAS 设置(可能不是详尽的)。

我还尝试禁用中断操作,认为寄存器0:44中粘滞标志的读数会干扰去抖滤波。  我运行了以下两项测试:

(1) 耳机已插入插孔,无音频输出,我手动读取寄存器0:67。  第5位和第6位均为零。  然后,我开始了音频输出,并再次手动读取寄存器。  这两个位现在都设置为“1”,表示已连接带麦克风的耳机。

(2) 耳机从插孔中取出后,我手动读取寄存器0:67,并看到第5位和第6位均为零。  然后我开始音频输出并再次读取寄存器。  两个位均为零。  然后,我插入了耳机,然后手动读取寄存器。  我发现第5位设置为“1”,第6位设置为“0”,表示耳机没有麦克风。

在搜索此论坛时,我发现了以下文档:SLAA454–2010年6月“TLV320AIC33和 TLV320AIC3101/4/5/6系列的耳机检测”;该文档似乎不直接应用(寄存器引用与我的设备不匹配),但它似乎有一些有用的信息,可能部分应用(?)。

请告知我如何解决此问题。

谢谢你。

——肯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我在 EVM 上测试了上述情形,但没有看到问题。  

    在您上一次的测试中,为什么寄存器67中的两个位都是“00”,即使插孔已插入? 由于粘性标志的性质,注册表44可能会发生变化,但我希望注册表67上的连接类型仍应为“11”。 在测试2上,我希望看到“11”而不是“10”,无论音频是否打开。

    打开/关闭音频时,一些设置似乎发生了变化,也许最好先检查设置上的检测机制。

    我同意手动检查注册,当您打开/关闭音频时,MICBIAS 可能也会被禁用。

    SLAA454是有关耳机检测工作原理的良好参考。

    e2e.ti.com/.../AIC3111-Headset-Detection.pdf

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    pdjandi,

    寄存器67中的两个位均为“00”,且插头插入插孔中的原因是插孔检测似乎仅在有音频输出时才工作。  这实际上并不理想(插孔检测应该始终正常工作),但除非有音频流传输到输出,否则我无法看到任何位变化或任何中断。  “TLV320AIC33和 TLV320AIC3101_4_5_6系列的耳机检测”文档似乎表明(第1.2.4节中的第二个要点)耳机检测始终处于活动状态,而不仅仅是在播放音频输出时。

    我检查了驱动程序,但在启用音频输出时,MICBIAS 设置(寄存器1:46)未正确配置,这是事实。  我修复了这一问题,并在所有三个 MICBIAS 设置中都尝试了它,结果没有什么不同。  MICBIAS 设置是否会影响耳机检测?

    在您所附的文档中,有一条注释指出“音频没有播放,但路径仍然打开”。 我查找了该设置,我看到寄存器1:35似乎具有此注释所指的设置:位 D7-D6设置为“10”表示“DAC_L 直接路由到 HPL 驱动程序”,位 D3-D2设置为“10”表示“DAC_R 直接路由到 HPR 驱动程序”。  这是本说明的意思吗?  我也尝试过,但也不起作用。

    下面是我捕获的调试会话日志。

    我可以使用以下命令语法读取和写入 TLV320AIC3111设备的寄存器:

    读取寄存器:

    echo <hexstring>/sys/bus/i2c/devices/5-0018/reg

      接着是

    CAT /sys/bus/i2c/devices/5-0018/reg

      ...其中<hexstring>是0x01的串联,用于命令寄存器读取,页字节,寄存器地址和0x00。

    例如,要读取寄存器1:46,<hexstring>为“01012e00”

    写入寄存器:

    echo <hexstring>/sys/bus/i2c/devices/5-0018/reg

      ...其中,<hexstring 是0x00的串联,用于命令寄存器写入,页字节,寄存器地址,数据字节。

    请告知我在这里可能出了什么问题。

    谢谢。

    ——肯

    e2e.ti.com/.../1667.log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    pdjandi,

    在当前实施中,MCLK 由处理器核心驱动到 TLV320AIC3111编解码器,BCLK 和 WCLK 由 MCLK 派生并由编解码器驱动。  但 MCLK 仅在播放或录制音频时由处理器驱动(即不连续)。  编码解码器是否需要时钟才能执行耳机/耳机检测?  也许这就是为什么它只在有音频输出时工作?

    ——肯

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    检测应始终如我的幻灯片所示。

    “路径”为“开”表示启用了从 DAC 到 HP 的音频路径(所有寄存器都已设置),只有进入的声音处于关闭状态。

    您可以在 SLAA454注释中看到检测电路以及 MICBIAS 的使用方式,只要它接通 了固定电压,检测就可以正常工作。

    现在,这一前端检测只是经过比较器,但检测到的信号进入 使用 MCLK 的内部数字电路,因此如果没有 MCLK,这可能会导致问题。 您是否可以强制此 MCLK 始终开启以确认您看到的问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    pdjandi,

    更改配置以保持 MCLK 持续运行可解决我的问题。

    (配置连续 MCLK 并不容易,但这也是成功的秘诀。)

    谢谢。

    ——肯