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.

[参考译文] TAC5112:用于连接 TAC 5112 编解码器的 AM6254 器件树定义

Guru**** 2782445 points

Other Parts Discussed in Thread: TAC5112

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1609546/tac5112-am6254-device-tree-definition-for-connection-with-tac-5112-codec

器件型号: TAC5112

我正在开发基于 AM6254 处理器的电路板、该处理器使用连接到 McASP0 器件的 TAC5112 音频编解码器。
编解码器是从器件、从 McASP0 接收 BCLK 和 FSYNC 信号。

我无法定义允许 Linux 驱动程序正确配置到编解码器的时钟信号的器件树。 产生的采样率是固定的、具体取决于以下定义:
简单音频卡、MCLK-FS =<2000>;
器件树的声音会话中的演示。
McASP0 器件使用的时钟速率为 96MHz、除以 2000 等于 48kHz。 将 aplay 命令与具有不同采样率的 wav 文件一起使用会导致音频不正确。 例如、采样率为 44100Hz 时、声音加速大约 9%、依此类推。
可以帮帮我吗?

谢谢你。

下面是从器件树摘录、其中包含音频配置中涉及的节点。

MAIN_MCASP0_PINS_DEFAULT:MAIN-MCASP0-DEFAULT 引脚{
  pinctrl-single、pins =<
    AM62X_IOPAD (0x01a4、PIN_OUTPUT、0) /*(B20) McASP0_ACLKX — 位时钟*/
    AM62X_IOPAD (0x01a8、PIN_OUTPUT、0) /*(D20) McASP0_AFSX — 帧同步*/
    AM62X_IOPAD (0x01a0、PIN_OUTPUT、0)/*(E18) McASP0_AXR0 - TX 至编解码器 0 */
    AM62X_IOPAD (0x0198、PIN_INPUT、0) /*(A19) McASP0_AXR2 — 来自编解码器 0 的 RX */
  >;
};

 

sound0:sound-mac5112{
  compatible =“simple-audio-card";“;
  简单音频卡、名称=“TASVOIP-TAC5112";“;

  简单音频卡、MCLK-FS =<2000>;
    简单音频卡、Dai-link@0{
    格式=“I2S_";“;

    bitclock-master =<&CPU0_Dai>;
    FRAME-MASTER =<&CPU0_DAI>;
    CPU0_Dai:CPU {
      Sode-Dai =<&McASP0>;
    };
    编解码器{
      sound-dai =<&tac5112_0>;
    };
  };

tac5112_0:音频编解码器@50{
  兼容=“ti、tac5112“;
  REG =<0x50>;
  #sound-dai-cells =<0>;
  sound-name-prefix =“C0";“;

  /*电源 — 使用系统 3.3V 电源轨*/
  AVDD-SUPPLY =<&VCC_3V3_SYS>;
  IOVDD-SUPPLY =<&VCC_3V3_SYS>;

  /* VREF = 2.75V 输出*/
  TI、Vref =<0>;

  /* MICBIAS =与 VREF 输出相同*/
  TI、micbias-vg =<0>;

  /* GPIO 配置 — 默认情况下全部禁用*/
  TI、gpi1-func =<0>;
  TI、GPIOs-func =<0>、<0>、<0>;
  TI、GPIOs-drive =<0>、<0>;
};

&McASP0{
  状态=“正常“;
  #sound-dai-cells =<0>;
  pinctrl-names =“default";“;
  pinctrl-0 =<&MAIN_McASP0_pins_default>;

    Clocks =<&K3_CLKS 191 0>;  
  时钟名称=“fck";“;

  OP-MODE =<0>;    /* MCASP_IIS_MODE */
  TDM 时隙=<2>;

  /*
   *串行方向: 0=非活动,1=TX,2=RX
   *阵列索引对应于 AXR 引脚编号
   */
  serial-dir =<
    1  /* AXR0 - TX 至编解码器 0 DIN */
    1  /* AXR1 - TX 至编解码器 1 DIN */
    2  /* AXR2 - RX 来自编解码器 0 DOUT */
    2  /* AXR3 - RX 来自编解码器 1 DOUT */
  >;

  tx-num-evt =<32>;
  rx-num-evt =<32>;
};

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

    您好、

    对不起这里的延迟,给我一天给你一个很好的答复.

    此致、
    Mir

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

    您好、

    再次对延迟感到抱歉。 您只是提供 MCLK 还是也为编解码器提供 BCLK 和 WCLK? 如果您提供 BCLK 和 WCLK、则可能不需要 MCLK 与 FS 之比的线、因为默认情况下、TAC5112 自动时钟模式应根据给定的输入时钟进行调整。 如果 WCLK/BCLK 根据器件工作的采样率进行调整、则您不应听到速度变化。 您使用什么命令来播放音频? 您是否尝试过指定要文件播放的采样率?

    此致、
    Mir

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

    尊敬的 Mir:

    我很抱歉直到现在才回复、但我在办公室里呆了一个星期。 在此期间、与我开发该工程的同事一直在运行编解码器、使用处理器的外部 12.288MHz 时钟输入 (EXT_REFCLK1)。 BCLK (=ACLK) 和 WCLK (=AFS) 信号由 McASP 生成并馈送到处于从配置的编解码器。 适当地修改器件树后、编解码器将正常工作。 没有 MCLK 馈送到编解码器。
    在此配置中、一切似乎都正常工作、但需要连接外部时钟。 您能否确认无法使用内部生成的频率合适的时钟 (12.288MHz 或 22.5792MHz) 馈送到 McASP 块?

    此致、
    Marco。

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

    您好、Marco、

    MIR 已不在办公室、下周将返回支持该主题。

    此致、

    Garret

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

    您好、Marco、

    TAC5112 需要时钟才能运行、您已经介绍了至少 BCLK 和 WCLK、或者仅需要一个 CCLK、器件可以对其进行分频并在内部进行乘法、以生成所有所需的内部时钟(包括 BCLK 和 WCLK)。 您是否需要外部时钟取决于处理器 — 如果处理器可以在编解码器运行期间提供 1-2 个时钟、则不需要外部时钟。 如果您需要外部振荡器来生成任何时钟、或具有内置时钟发生器、您可能需要为 AM6254 团队创建一个新帖子。

    此致、
    Mir