为客户发布-
"
我将 EVM 连接到了我们的板上,I2C 和 I2S 在示波器上看起来很好,但它不会播放扬声器或耳机中的声音。 我使用的 EVM 没有 USB 扩展板。 英特尔似乎认为它需要来自 CPU 的主时钟信号才能使编解码器正常工作。 从数据表的下图中、我假设您可以为 I2S 总线使用位时钟或主时钟。
您能确认它可以使用位时钟(BCLK)还是需要主时钟(MCLK)? 是否需要设置寄存器以选择系统应使用的时钟?
谢谢!
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.
为客户发布-
"
我将 EVM 连接到了我们的板上,I2C 和 I2S 在示波器上看起来很好,但它不会播放扬声器或耳机中的声音。 我使用的 EVM 没有 USB 扩展板。 英特尔似乎认为它需要来自 CPU 的主时钟信号才能使编解码器正常工作。 从数据表的下图中、我假设您可以为 I2S 总线使用位时钟或主时钟。
您能确认它可以使用位时钟(BCLK)还是需要主时钟(MCLK)? 是否需要设置寄存器以选择系统应使用的时钟?
谢谢!
您好!
将 EVM 与 USB-MOD-EVM 控制器配合使用时、我们会以4线制模式操作器件。 不过、正如您所注意到的、PLL 可用于将 BCLK 输入转换为有效的内部 MCLK。 这在您所附图片下方的数据表文本中得到确认:
该器件可接受512kHz 至50MHz 的 MCLK 输入、然后可通过可编程分频器或 PLL 进行传递、从而获得该器件所需的适当内部音频主时钟。 BCLK 输入也可被用于生成内部音频主时钟。
您好、Lindsey、
是的、寄存器102将允许用户选择 MCLK 或 BCLK 作为 CLKDIV 或 PLL_CLKIN。 您还需要确保 CODE_CLKIN 源是正确的。 这在寄存器101中确定。
至于您关于需要设置哪些其他寄存器的另一个问题、这当然取决于客户采用的路径以及需要打开哪些块。 一个很好的起点是确保 DAC 和所使用的输出块已通电、并且启用了正确的输出路径。
此致、
Aaron
我在 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?
您能确认这是正确的吗?
林赛、
如果您查看 TLV320AIC3x.h 文件、您将看到在202-204行上创建了三个常量。 使用这些。
请注意、GPIO2有一个选项、 AIC3107没有该选项。 该驱动 程序用于整个 AIC310x 和 AIC33系列、因此、具有两个 GPIO 的 AIC3106和 AIC33可以使用该选项、而所有其他 AIC310x 或 AIC3x 器件无法使用该选项。
此致、
-Steve Wilson