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.

[参考译文] TLV320AIC3104:无法设置 PLL

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1502320/tlv320aic3104-unable-to-setup-pll

器件型号:TLV320AIC3104

工具/软件:

注册编解码器驱动程序时、将显示以下日志。 请协助进行分析。
aic3x_hw_params():无法设置 PLL
tlv320aic3x 4-001b:aSOC:tlv320aic3x-hifi:-22上 snd_dai_hw_params 处出现错误

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

    您好、

    您能否附上对配置驱动程序所做的操作的更详细说明、您的 dts 文件或用于获取此错误的任何其他命令是什么? 此外、编解码器的输入和输出时钟是什么? 能否确保器件中有来自 MCU 的 MCLK 或 BCLK? 您可能需要定义驱动器这一部分的输入/输出时钟、才能按预期运行。

    此致、
    Mir

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

    我在这里下载了驱动程序文件: www.ti.com.cn/.../TLV320AIC31XX-DRIVERS。

    DTS:

    i2c_4{
    -			clock-frequency = <400000>;
    +			clock-frequency = <100000>;
    }
    
    +			tlv320aic3x: tlv320aic3x@1b {
    +				#sound-dai-cells = <1>;
    +				compatible = "ti,tlv320aic3x";
    +				reg = <0x1b>;
    +				reset-gpios = <&peri_port0 23 GPIO_ACTIVE_LOW>;
    +				AVDD-supply = <&tlv3v3_fixed>;
    +				IOVDD-supply = <&tlv1v8_fixed>;
    +				DRVDD-supply = <&tlv3v3_fixed>;
    +				DVDD-supply = <&tlv1v8_fixed>;
    +			};

    通过日志、我发现 aic3x->sysclk  aic3x_hw_params() 函数中的值为0。

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

    您好、

    您提供或预期的器件 MCLK、BCLK 和 WCLK 是什么? 您还如何配置、或者您发布的代码是唯一的? 您正在使用 ALSA 吗? SYSCLK 通常是 PLL 内部生成的输出、如果您在建立 PLL 时遇到错误、则 SYSCLK 应为0是合理的。  

    此致、
    Mir

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

    它是 ALSA 架构。 在 DTS 中、的配置 mclk_set 为 <24576000>

    snd2_tlv:snd2_tlv {
    状态="正常";
    Model ="s100snd2-tlv320";
    compatible ="hobot, s100-snd-AC-FDX-MASTER";
    I2S_MODE =<1>;/*1:I2S 模式;7:DSP_A 模式*/
    WORK_MODE =<1>;/*0:半双工;1:全双工*/
    channel_max =<2>;
    MCLK_SET =<24576000>;

    Dai-link@0{
    DI-format ="I2S_";//"I2S"/"DSP_A"
    链接名称="j6dailink0";
    CPU{
    sound-dai =<&i2s0 0>;
    };
    编解码器{
    sound-dai =<&tlv320aic3x 0>;
    };
    };

    Dai-link@1{
    DAI-FORMAT ="I2S_";
    链接名称="j6dailink1";
    CPU{
    sound-dai =<&i2s0 1>;
    };
    编解码器{
    sound-dai =<&tlv320aic3x 0>;
    };
    };


    };

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

    尊敬的 Wenzel:

    驱动程序的默认 aic31xx_divs 部分中不存在24576000 MCLK 速率、因此我建议在驱动程序中添加一条新行、以满足您的 PLL 分频器需求。 您使用的采样率和位深度是多少、我可以为您计算分频器? 您是在 I2S 目标模式还是控制器模式(从模式还是主模式)下使用器件?

    此致、
    Mir

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

    编解码器用于从模式。 我们是否仍需要在从模式下配置编解码器的时钟?

    此外、我的驱动程序文件中没有 aic31xxdiv []。 当前运行的驱动程序文件是 tlv320aic3x.c、而不是 tlv320aic31xx.c 您能告诉我、哪是 TLV320AIC3104芯片的正确驱动程序?

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

    您好、

    是的、抱歉- aic3x.c 是正确的驱动程序。 我假设您的 FS 是48K? 您仍然需要启用 PLL 来生成内部时钟、驱动程序似乎应该 被 DTS 文件告知 fsref、可能还有 MCLK 速率。 您是否 在 MCLK 引脚上提供24576000Hz 时钟、并且是否提供48K WCLK 和 BCLK?

    您可能需要在驱动程序代码本身中设置 SYSCLK、如下所示:

    (来自这个非常古老的 E2E)

    好极了
    Mir