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.

[参考译文] TLV320AIC3107EVM-K:BCLK 或 MCLK EVM 问题

Guru**** 2483615 points


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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/869813/tlv320aic3107evm-k-bclk-or-mclk-evm-question

器件型号:TLV320AIC3107EVM-K

为客户发布-  

"  

我将 EVM 连接到了我们的板上,I2C 和 I2S 在示波器上看起来很好,但它不会播放扬声器或耳机中的声音。 我使用的 EVM 没有 USB 扩展板。 英特尔似乎认为它需要来自 CPU 的主时钟信号才能使编解码器正常工作。 从数据表的下图中、我假设您可以为 I2S 总线使用位时钟或主时钟。

您能确认它可以使用位时钟(BCLK)还是需要主时钟(MCLK)? 是否需要设置寄存器以选择系统应使用的时钟?  

谢谢!

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

    您好!

    将 EVM 与 USB-MOD-EVM 控制器配合使用时、我们会以4线制模式操作器件。  不过、正如您所注意到的、PLL 可用于将 BCLK 输入转换为有效的内部 MCLK。  这在您所附图片下方的数据表文本中得到确认:

    该器件可接受512kHz 至50MHz 的 MCLK 输入、然后可通过可编程分频器或 PLL 进行传递、从而获得该器件所需的适当内部音频主时钟。 BCLK 输入也可被用于生成内部音频主时钟。

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

    您是否知道这是我可以在机器驱动程序中设置的寄存器、或者我是否需要修改编解码器驱动程序?

    您是否需要查看用于英特尔参考主板的计算机驱动程序?

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

    您好!

    这些器件有许多驱动程序实施、我们不会知道您正在使用的驱动程序中实施了哪些/尚未实施。  您将需要查看驱动程序代码并确定是否已创建专用函数来调整这些寄存器值、否则、您将需要创建这些函数或使用通用 I2C 读取/写入命令来实现这些值。

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

    您能否确认该寄存器(表109)。 第0页/寄存器102:数据表中的复位值时钟生成控制寄存器)是否是将内部时钟从 MCLK 设置为 BCLK 的正确寄存器?

    我是否需要关注其他寄存器以使编解码器正常工作?

    当我在 ALSA 混频器中设置参数时、我会得到 I2C ACK、因此我相信该芯片已通电并正常工作、但我需要它来使用 BCLK、而不是 MCLK。

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

    您好、Lindsey、

    是的、寄存器102将允许用户选择 MCLK 或 BCLK 作为 CLKDIV 或 PLL_CLKIN。 您还需要确保 CODE_CLKIN 源是正确的。 这在寄存器101中确定。

    至于您关于需要设置哪些其他寄存器的另一个问题、这当然取决于客户采用的路径以及需要打开哪些块。 一个很好的起点是确保 DAC 和所使用的输出块已通电、并且启用了正确的输出路径。  

    此致、

    Aaron

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

    林赛、  

    寄存器102的复位值是正确的、 但是如果您没有为 MCLK 引脚提供任何输入、 您还需要将 BCLK 分配给 CLK_DIV 输入(即使您没有使用它)

    因此、需要将寄存器102配置为0xA2

    此致、

    -Steve Wilson

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

    我在 codecs/tlv320aic3x.c 编解码器驱动程序文件中发现了这一点:

                  静态 int aic3x_set_Dai_SYSCLK (struct snd_soc_dai * codec_dai、

                                   int clk_id、unsigned int freq、int dir)

           struct snd_soc_codec *编解码器= codec_dai ->编解码器;

           struct aic3x_priv* aic3x = snd_soc_codec_get_drvdata (codec);

     

           /*在 MCLK 或 GPIO2或 BCLK 上设置时钟*/

           SND_SoC_UPDATE_BITS (编解码器、AIC3X_CLKGEN_CTRL_REG、PLLCLK_IN_MASK、

                                   CLK_id << PLLCLK_IN_SHIFT);

           SND_SoC_UPDATE_BITS (编解码器、AIC3X_CLKGEN_CTRL_REG、CLKDIV_IN_MASK、

                                   CLK_id << CLKDIV_IN_SHIFT);

     

           aic3x->SYSCLK = freq;

           返回0;

    我认为这是我需要调用来将系统设置为使用 BCLK 时钟的地方、但我不确定将其设置为 MCLK GPIO2或 BCLK 的值

     

    对该函数的调用将0作为参数发送、该参数将是 clk_id. 它是否简单到0 1 2?

     您能确认这是正确的吗?  

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

    您好、Lindsey、

    遗憾的是、我不熟悉驱动程序、没有为您提供答案。 也许有一个在线示例会有所帮助。

    此致、

    Aaron

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

    林赛、

    如果您查看 TLV320AIC3x.h 文件、您将看到在202-204行上创建了三个常量。 使用这些。

    请注意、GPIO2有一个选项、 AIC3107没有该选项。  该驱动 程序用于整个 AIC310x 和 AIC33系列、因此、具有两个 GPIO 的 AIC3106和 AIC33可以使用该选项、而所有其他 AIC310x 或 AIC3x 器件无法使用该选项。

    此致、

    -Steve Wilson