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.

[参考译文] TLV320AIC3100:时钟频率问题

Guru**** 2483385 points
Other Parts Discussed in Thread: TLV320AIC3100, TLV320AIC3104

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1095724/tlv320aic3100-clock-frequency-issue

器件型号:TLV320AIC3100
主题中讨论的其他器件: TLV320AIC3104

你(们)好  

我们使用的是 TLV320AIC3100内部编解码器。

与 MCLK 相关的问题。

更改:

sound-tlv320aic31xx{
兼容="简单音频卡";
simple-audio-card、name ="tlv320aic31xx-Codec";
simple-audio-card、format ="I2S";
simple-audio-card、frame-master =<&cpuda2>;
simple-audio-card、bitclock-master =<&cpuda2>;

simple-audio-card、小工具=
"扬声器"、"扬声器插孔";
简单音频卡,路由=
"扬声器插孔"、"SPK";

cpuda2:简单音频卡、CPU{
??Sound-Dai =<?Sa义1>;
};

简单音频卡、编解码器{
sound-dai =<&tlv320aic31xx>;
时钟=<&clk IMX8MM_CLK_SAI1_ROOT>
};
};

tlv320aic31xx:编解码器@18{
兼容="ti、TLV320AIC3100";
reg =<0x18>;
pinctrl-0 =<&pinctrl_audio_reset_31xx>;
RESET-GPIO =<&GPIO4 1 GPIO_ACTIVE_LOW>;
#sound-da-cells =<0>;
ai31xx 微偏置 vg = ;
HPVDD-SUPPLY =<Registered_3p3v>;
SPRVDD 电源=<Registered_3p3v>;
SPLVDD 电源=<Registered_3p3v>;
AVDD-SUPPLY =<Registered_3p3v>;
IOVdd-supply =<Registered_3p3v>;
DVDD 电源=<Registered_1_8v>;
};

Saa1{(&S)
pinctrl-names ="default"、"DSD";
pinctrl-0 =<&pinctrl_sa1>;
pinctrl-1 =<&pinctrl_sa义1_DSD>;
分配的时钟=<&clk IMX8MM_CLK_SAI1>;
分配的时钟父级=<&clk IMX8MM_AUDIO_PLL1_OUT>;
分配的时钟速率=<12500000>;
状态="正常";
};

pinctrl_sai1:sai1grp{
FSL、引脚=<
MX8MM_IOMUXC_SAI1_MCLK_SAI1_MCLK 0xd6/* MCLK*/
MX8MM_IOMUXC_SAI1_TXFS_SAI1_TX_SYNC 0xd6 /* WCLK*/
MX8MM_IOMUXC_SAI1_TXC_SAI1_TX_BCLK 0xd6 /* BCLK*/
MX8MM_IOMUXC_SAI1_TXD0_SAI1_TX_DATAA0 0xd6 /* DIN*/
MX8MM_IOMUXC_SAI1_RXD0_SAI1_RX_DATAA0 0xd6 /* DOUT*
>;
};

日志:

第406行:04-18 19:45:59.438 0 E tlv320aic31xx-codec 1-0018:aic31xx_set_Dae_SYSCLK:不支持的频率24576000
第407行:04-18 19:45:59.447 0 E tlv320aic31xx-codec 1-0018:ASOC:tlv320aic31xx-hifi 上的 snd_soc_da_set_SYSCLK 出错:-22
第407行:04-18 19:45:59.447 0 E tlv320aic31xx-codec 1-0018:ASOC:tlv320aic31xx-hifi 上的 snd_soc_da_set_SYSCLK 出错:-22
第408行:04-18 19:45:59.456 0 E tlv320aic31xx-codec 1-0018:simple-card:SET_SYSCLK 错误
第409行:04-18 19:45:59.462 0 E 3001000.SAI-tlv320aic31xx-hifi:ASOC:在3001000.SAI-tlv320aic31xx-hifi 上的 snd_soc_link_init 错误:-22
第409行:04-18 19:45:59.462 0 E 3001000.SAI-tlv320aic31xx-hifi:ASOC:在3001000.SAI-tlv320aic31xx-hifi 上的 snd_soc_link_init 错误:-22
行410:04-18 19:45:59.473 0 W ASOC-simple-card:sound-tlv320aic31xx 的探测器失败,错误-22

谢谢

Divyesh。

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

    在回放期间共享 amixer 命令和寄存器转储。 谢谢。

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

    您好、Shen、

    不播放音频时转储:

    声音控件:  

    混合色调1 1.

    混合色调4 1.

    混合着色剂5 2.

    混合着色剂6 10

    混合色调22 1.

    混合着色25 1.

    混合色调27 1.

    这些控制应该由音频驱动器控制、对吧?

    看起来甚至不是由驾驶员控制的单一控制。

    Shen、需要您的 PROMT 支持来解决此问题。  

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

    音频框架应该调用 tinymix 命令、例如、在 Android 系统中、音频路由是由音频抽象层创建的。

    API 如下所示

    混频器= Mixer_open (card);
    if (!mixer){
    RET =-1;
    转到出口;

    //Step3:为 TAS256X 上的音频回放设置环境并启动 Greg Check
    Mixer_Ctrl_new = Mixer_get_ctl_By_name (Mixer、"TAS256x 配置文件 id");
    if (!Mixer_Ctrl_new){
    V_printf (1、"TI-SmartPA:%s:无法为混频器获取 ctl cmd:TAS256x 配置文件 id"、
    __func__);
    RET =-1;
    转到出口;
    }否则{
    RET = Mixer_ctl_set_value (Mixer_Ctrl_new、0、0);
    如果(RET){
    V_printf (1、"运行混频器命令 TAS256x 配置文件 ID =%d\n"、ret);
    转到出口;

    RET = Mixer_ctl_set_enum_by _string (Mixer_Ctrl_new、enum_val);

    if (mixer) Mixer_close (mixer);

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

    了解 Shen。

    为了启用这些声音控制、我添加了一个 json 文件。

    文件名: common/audio-json/tlv320aic31xx_config.json


    "driver_name":"tlv320aic31xx-Codec"、
    "支持的_out_devices":["扬声器"]、
    "支持_LPA":1、

    "init_ctl":[
    {"name":"DAC Playback Volume"、"type":"Int"、"val":100}、
    {"name":"ADC Capture Switch"、"type":"Int"、"val":1}、
    {"name":"扬声器驱动程序播放开关"、"type":"Int"、"val":1}、
    {"name":"扬声器驱动程序播放音量"、"type":"Int"、"val":2}、
    {"name":"扬声器模拟播放音量"、"type":"Int"、"val":100}、
    {"name":"Output Left from Left DAC"、"type":"Int"、"val":1}、
    {"name":"Output right from right DAC"、"type":"Int"、"val":1}、
    {"name":"speaker"、"type":"Int"、"val":1}
    ]、

    "OUT_VOLUME_MIN":172、
    "out_volume_max":225、
    "out_volume_ctl":[
    "DAC 回放音量"
    ]

    我今天只添加了后面粗体的控件。 是否可以在更改后进行验证?

    注意:请参阅 readme.txt 的以下来源- DEVICE - PHYTEC 位桶(堆叠)

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

    您好、Shen、

    是的、这些更改有效。

    我可以在不使用任何命令的情况下播放音频文件。

    但存在噪声。

    需要您的帮助来解决噪声问题。

    请检查 logcat:

    e2e.ti.com/.../5707.logcat.txt

    I2CMDump 不播放音频:

    第0页-

    第0页-

    播放音频时:

    第0页-

    第1页-

      

    测量时钟: MCLK = 12.28MHz、BCLK = 1.536MHz 、WCLK = 47.99KHz

    驱动程序文件中的更改:  

    日志:

    TLV PLL 8.0000/1 dosr 32 n 1 m 8 aosr 32 n 1 m 8 BCLK_n 8

    输出:

    音频+噪声

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

    Divyesh、

    很抱歉耽误你的时间。 Jeff 一直在推动这项工作、但在过去的一周内已不在办公室、明天会回来。

    Brian

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

    您好、Brian 和 Jeff、

    NXP 供应商的响应-  

    "如果 i.mx 输出的时钟正确、则没有数据损坏的原因。 因此、我希望您与编解码器供应商再次确认12.288Mhz MCLK 支持。"  

    请您分享您对上述评论的看法吗?

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

    是的、只要它是同步的并且是其它时钟(BCLK、LRCLK)的整数倍、就支持12.288MHz MCLK

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

    以支持12.228MHz。 需要进行哪些更改。

    我只做了以下更改,除了这些之外,我是否需要做任何更改。

    ++ b/sound/soc/codecs/tlv320aic31xx.c
    @@-197、7 + 197、10 @@ struct aic31xx_rate_divs{
    /* 11.025k 速率*/
    {12000000、11025、7、5264、128、 32、2、128、32、2}、
    {12000000、11025、8、4672、128、 24、3、128、24、3}、
    +{12288000、11025、8、0、32、 1、32、32、1、32}、
    {1250000、11025、7、2253、128、 32、2、128、32、2}、
    +/* 12k 速率*/
    +{12288000、12000、8、0、32、 1、32、32、1、32}、
    /* 16k 速率*/
    {12000000、16000、8、1920、128、 24、2、128、24、2}、
    {12000000、16000、8、1920、128、 16、3、128、16、3}、
    @@-205、7 +208、10 @@ struct aic31xx_rate_divs{
    /* 22.05k 速率*/
    {12000000、22050、7、5264、128、 16、2、128、16、2}、
    {12000000、22050、8、4672、128、 12、3、128、12、3}、
    +{12288000、22050、8、0、32、 1、16、32、1、16}、
    {1250000、22050、7、2253、128、 16、2、128、16、2}、
    +/* 24k 速率*/
    +{12288000、24000、8、0、32、 1、16、32、1、16}、
    /* 32k 速率*/
    {12000000、32000、8、1920、128、 12、2、128、12、2}、
    {12000000、32000、8、1920、128、 8、3、128、8、3}、
    @@-213、10 + 219、12 @@ struct aic31xx_rate_divs{
    /* 44.1k 速率*/
    {12000000、44100、7、5264、128、 8、2、128、8、2}、
    {12000000、44100、8、4672、128、 6、3、128、6、3}、
    +{12288000、44100、1、8、32、 1、8、32、1、8}、
    {12500000、44100、7、2253、128、 8、2、128、8、2}、
    /* 48K 速率*/
    {12000000、48000、8、1920、128、 8、2、128、8、2}、
    {12000000、48000、7、6800、96、 5、4、96、5、4}、
    +{12288000、48000、8、0、32、 1、8、32、1、8}、
    {12500000、48000、7、8643、128、 8、2、128、8、2}、
    /* 88.2k 速率*/
    {12000000、88200、7、5264、64、 8、2、64、8、2}、

    我面临着噪音问题。

    请查看上述包含更改+ i2cdump 数据的通信。

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

    好的、谢谢、

    目前、随着音量的增加、我们几乎不会听到位噪声。

    e2e.ti.com/.../Original_5F00_file.wav

    e2e.ti.com/.../5707.captured_5F00_file.wav

    PFA 原始和捕获的音频。

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

    您是否能够使用直接输入 I2S 数据的音频精度执行任何测试、以消除主机可能出现的任何问题?

    我们可能能够在此处设置 EVM 并提供寄存器转储。

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

    不是 Brian、我们没有这个设置。

    是的、请在此处提供有效的 I2C 转储和 amixer/tinymix 输出。

    请在 clk.xlsx 中简要介绍这些值。 之前由 Shen 提供的 Excel 表格、支持12.288MHz 频率

    这些值是否会导致噪声问题? 看起来 MCLK 会导致问题。  

    谢谢

    Divyesh。

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

    大家好、

    有更新吗?

    我们比较了扬声器质量。 对于其他音频编解码器、它看起来很好。 因此、我们也可以忽略扬声器质量。

    如果您需要任何数据来解决此问题、请告诉我。

    谢谢

    Divyesh。

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

    通过以下更改、可降低噪声:

    ++ b/sound/soc/codecs/tlv320aic31xx.c
    @@-193、11 +193、15 @@ struct aic31xx_rate_divs{
    /* 8k 速率*/
    {12000000、8000、8、1920、128、 48、2、128、48、2}、
    {12000000、8000、8、1920、128、 32、3、128、32、3}、
    +{12288000、8000、8、1920、128、 48、2、128、48、2}、
    {1250000、8000、7、8643、128、 48、2、128、48、2}、
    /* 11.025k 速率*/
    {12000000、11025、7、5264、128、 32、2、128、32、2}、
    {12000000、11025、8、4672、128、 24、3、128、24、3}、
    +{12288000、11025、7、5264、128、 32、2、128、32、2}、
    {1250000、11025、7、2253、128、 32、2、128、32、2}、
    +/* 12k 速率*/
    +{12288000、12000、8、0、32、 1、32、32、1、32}、
    /* 16k 速率*/
    {12000000、16000、8、1920、128、 24、2、128、24、2}、
    {12000000、16000、8、1920、128、 16、3、128、16、3}、
    @@-205、7 +209、10 @@ struct aic31xx_rate_divs{
    /* 22.05k 速率*/
    {12000000、22050、7、5264、128、 16、2、128、16、2}、
    {12000000、22050、8、4672、128、 12、3、128、12、3}、
    +{12288000、22050、7、5264、128、 16、2、128、16、2}、
    {1250000、22050、7、2253、128、 16、2、128、16、2}、
    +/* 24k 速率*/
    +{12288000、24000、8、0、32、 1、16、32、1、16}、
    /* 32k 速率*/
    {12000000、32000、8、1920、128、 12、2、128、12、2}、
    {12000000、32000、8、1920、128、 8、3、128、8、3}、
    @@-213、10 + 220、12 @@ struct aic31xx_rate_divs{
    /* 44.1k 速率*/
    {12000000、44100、7、5264、128、 8、2、128、8、2}、
    {12000000、44100、8、4672、128、 6、3、128、6、3}、
    +{12288000、44100、7、5264、128、 8、2、128、8、2}、
    {12500000、44100、7、2253、128、 8、2、128、8、2}、
    /* 48K 速率*/
    {12000000、48000、8、1920、128、 8、2、128、8、2}、
    {12000000、48000、7、6800、96、 5、4、96、5、4}、
    +{12288000、48000、8、1920、128、 8、2、128、8、2}、
    {12500000、48000、7、8643、128、 8、2、128、8、2}、
    /* 88.2k 速率*/
    {12000000、88200、7、5264、64、 8、2、64、8、2}、
    @@-225、14 + 234、17 @@ struct aic31xx_rate_divs{
    /* 96k 速率*/
    {12000000、96000、8、1920、64、 8、2、64、8、2}、
    {12000000、96000、7、6800、48、 5、4、48、5、4}、
    +{12288000、96000、8、1920、64、 8、2、64、8、2}、
    {12500000、96000、7、8643、64、 8、2、64、8、2}、
    /* 176.4k 速率*/
    {12000000、176400、7、5264、32、 8、2、32、8、2}、
    {12000000、176400、8、4672、32、 6、3、32、6、3}、
    +{12288000、176400、7、5264、32、 8、2、32、8、2}、
    {1250000、176400、7、2253、32、 8、2、32、8、2}、
    /* 192k 速率*/
    {12000000、192000、8、1920、32、 8、2、32、8、2}、
    {12000000、192000、7、6800、24、 5、4、24、5、4}、
    +{12288000、192000、8、1920、32、 8、2、32、8、2}、
    {12500000、192000、7、8643、32、 8、2、32、8、2}、
    };

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

    Divyesh、

    您使用的是上述采样率? 当您说噪声降低时、它可以、还是仍然有一些噪声?

    Brian

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

    我们正在使用48kHz...可以降低噪声...看起来不再有噪声。

    但我们还面临另一个问题:

    我们将两个编解码器与 Android 11代码库中的 IMX8MM 相集成。

    根据要求、我们的设计中有两个音频编解码器

    1) TLV320AIC3104和2) TLV320AIC3100。

    这两个编解码器都单独启动并运行

    如果我将两个编解码器集成在一起、我将仅从一  个 TLV320AIC3104音频编解码器获得输出。

    根据设计、第二个编解码器 TLV320AIC3100 > 0.8W 编解码器将仅用于警报和 通知。

    需要您的帮助来实现上述功能、以便 imx8mm 能够同时支持两个编解码器。但第二个应该只适用于警报。

    需要进行哪些更改?

    我们有两个编解码器通过2个不同的 SAI 节点连接到 IMX8MM。  我们为这两个编解码器提供单独的 SAI 接口。

    IMX8MM <--> SAI3 & I2C4 <--> TLV320AIC3104

    (笑声)

     

    IMX8MM <<--> SAI1 & I2C2 <--> TLV320AIC3100

    (笑声)

    根据要求、两个编解码器应同时工作。

    谢谢

    Divyesh。

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

    我将关闭此案例、因为此问题已修复、并将另一个问题用于2个编解码器问题。

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

    3100在我集成其他编解码器时不起作用、为什么?

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

    您在另一个 e2e 帖子中提出了这一点。 请使用该文件、不要复制它。