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.

[参考译文] Linux/TAS2553:音频不正确。

Guru**** 2391415 points
Other Parts Discussed in Thread: AM5718, TAS2553, TAS2552

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/733061/linux-tas2553-audio-does-not-proper

器件型号:TAS2553
主题中讨论的其他器件:AM5718TAS2552

工具/软件:Linux

大家好。

我们已开发出采用 AM5718处理器的定制板、其中使用 具有 8 Ω 扬声器的 TAS2553编解码器 IC。

请检查随附的图像以了解 IC 与 AM5718的连接

我们下面的 tsi 中完成了以下任务

??Sound0:Sound0{
               兼容="简单音频卡";
               simple-audio-card、name ="TAS2552";
               simple-audio-card、小工具=
                               "扬声器"、"扬声器";
               简单音频卡,路由=
                                "扬声器"、"SPK";
               simple-audio-card、format ="DSP_b";
               simple-audio-card、bitclock-master =<&sound0_master>;
               simple-audio-card、frame-master =<&sound0_master>;
               简单音频卡、位时钟反转;

               简单音频卡、CPU{
                       Sound-Dai =<&mcasp3>;
                       系统时钟频率=<12000000>;
               };

               sound0_master:simple-audio-card、codec{
                       sound-dai =<和 tas2552>;
                       系统时钟频率=<1800000>;
               };
       };

 

i2c3{(&I)
   状态="正常";
   时钟频率=<400000>;
   
   tas2552:tas2552@40{
   #sound-di-cells =<0>;
   兼容="ti、tas2552";
   reg =<0x40>;  /*因为我们已经将 ADDR 连接到了 gound。如果它在 VDD*/上,它将是0x41
   VBAT-SUPPLY =<&V 主>;
   IOVdd-supply =<&v3_3D>;
   AVDD-SUPPLY =<&ldo3_reg>;
   ENABLE-GPIO =<&GPIO7 24 GPIO_ACTIVE_HIGH_>;
   状态="正常";
   };

我们在 uboot-spl 中修改了引脚多路复用器、如下所示。

{XREF_CLK2、(M0 | PIN_INPUT)}、/* xref_clk0
{MCASP3_ACLKX、(M0 | PIN_INPUT 下拉)}、/* mcasp3_aclkx.mcasp3_aclkx *
{MCASP3_FSX、(M0 | PIN_INPUT_SLEW)}、/* mcasp3_FSX.mcasp3_FSX *
{MCASP3_AXR0、(M0 | PIN_INPUT_SLEW)}、/* mcasp3_axr0.mcasp3_axr0 *
{MCASP3_AXR1、(M0 | PIN_INPUT_SLEW)}、// mcasp3_axr1.mcasp3_axr1 *

我们已在 tas2552 编解码器驱动 程序的"tas2552_set_dai SYSCLK" API 中添加"clk_id=TAS2552_PLL_CLKIN_1_8_fixed"行、以启用1.8MHz 内部振荡器。

现在、我们使用以下命令测试不同的 wav 文件、但声音不正确。

root@am57xx-EVM:~# amixer 控件
numid=2、iface=混频器、name='输入源'
numid=3、iface=Mixer、name='Input Selection'
numid=1、iface=Mixer、name='Speeder Driver Playback Volume'(扬声器驱动程序播放音量)

root@am57xx-EVM:~ amixer cget numid=1.
numid=1、iface=Mixer、name='Speeder Driver Playback Volume'(扬声器驱动程序播放音量)
; type=integer,access=rw--r--,values=1,min=0,max=31,step=0
:值=0
| dBscale-min=-7.00dB、step=1.00dB、MUTE=0

root@am57xx-EVM:~# amixer cset numid=1 50%
numid=1、iface=Mixer、name='Speeder Driver Playback Volume'(扬声器驱动程序播放音量)
; type=integer,access=rw--r--,values=1,min=0,max=31,step=0
:值=16
| dBscale-min=-7.00dB、step=1.00dB、MUTE=0

root@am57xx-EVM:~# aplay /usr/bin/bass.wav
播放波形“/usr/bin/bass.wav”:有符号16位小端序,速率44100Hz,立体声

root@am57xx-EVM:~# aplay /usr/bin/ooh.wav
播放波形“/usr/bin/ooh.wav”:有符号16位小端序,速率44100Hz,立体声

请帮助我们解决问题。

此致、谢谢!
Nikunj Patel

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

    您是否知道是否全部都没有输出? 或者是否有声音、但不正确?
    您能否分享一些相关信号的捕捉信息? 如扬声器输出 BCLK、WCLK 和 DIN。 我想验证输出是否被启用和切换、并验证时钟信号频率。
    您能否共享时钟频率和采样频率? 最好了解发送到器件进行配置的实际值。
    您是否通过从 TAS2553读回寄存器来验证命令?
    我可以根据应用程序通过其寄存器来帮助您完成 TAS2553配置、但我无法支持驱动程序命令。 TAS2552驱动程序作为示例和工具提供、但我无法支持它。

    此致、
    -Ivan Salazar
    应用工程师-低功耗音频和传动器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ivan;

    感谢您的快速回复。

    您是否知道是否全部都没有输出? 或者是否有声音、但不正确?

    :我们有声音,但不正确。

    请查找以下信号:

    1) 1) MCLK

    2) WCLK:(频率:92.165kHz)

    3) 3) BITCLK [频率:2.90MHz]

    4)扬声器(-ve)端子处的信号




    您能否共享时钟频率和采样频率?

    ANS:时钟频率表示 MCLK、因此我们将其设置为12MHz。 此外、我们不会在配置中传递任何采样频率。

    您是否通过从 TAS2553读回寄存器来验证命令

    答案:否

    还要告诉谁可以帮助我们为 TAS2553编解码器 IC 提供 Linux 驱动程序支持?



    此致、谢谢!
    Nikunj Patel

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

    TAS2553的采样频率应与 WCLK 频率匹配。 第16页的数据表第7.3.7节对此进行了说明。 它通常为44.1kHz 或48kHz。
    此外、由于 WCLK 为1位长、因此必须将器件配置为 DSP 模式(有关更多详细信息、请参阅数据表第25页)。
    通常、BCLK 和 WCLK 是倍数(与频率相关)、例如、对于 WCLK = 48kHz 和32位数据、BCLK 应为3.072MHz (48kHz*32*2通道)。 BCLK 应该是 WCLK 频率的32倍吗?

    应将器件配置为正常工作。
    -如第7.3.7节所述的时钟树。 相关寄存器:0x01、0x08、0x09、0x0a
    -第7.4.1节中所述的数据格式。 相关寄存器:0x03、0x05
    -如第7.4.4节、寄存器0x02中所述的器件配置

    此致、
    -Ivan Salazar
    应用工程师-低功耗音频和传动器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ivan;

    我们给出了采样频率(44.1kHz 或48kHz)。 由 aplay 应用程序管理。

    BCLK 应该是 WCLK 频率的32倍吗?

    答案:根据我们的手动测量 BCLK=2.90MHz 和 WCLK=92.165KHz、根据这些、BCLK 是 WCLK 的32倍。 (92.165kHz x 32 = 2.94928MHz)

    那么、请告诉我们哪里出错了?


    TAS2553能否与内部 OC 兼容? 因为我已经通过以下方法启用了内部 OC、但音频仍然不正确。

    PLL_CLKIN = 1800000;

    PLL_SEL =(TAS2552_PLL_CLKIN_1_8_FIXED << 3)& TAS2552_PLL_SRC_MASK;

    SND_SoC_UPDATE_Bits (编解码器、TAS2552_CFG_1、TAS2552_PLL_SRC_MASK、PLL_SEL);

    此致、谢谢!

    Nikunj Patel

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

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

    如果通过 aplay 命令提供44.1kHz 或48kHz、则 WCLK 信号应为48kHz、而不是92.165kHz。
    我将开始查看它、以便从主机获取正确的信号。

    此致、
    -Ivan Salazar
    应用工程师-低功耗音频和传动器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ivan;
    您能为上述问题的更多调试建议后续步骤吗?

    此致、谢谢!
    Nikunj Patel
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ivan;
    我已经读取了 TAS2553 IC 的所有寄存器。 请检查每个寄存器的以下值

    [2065.141544] TAS2552_DEVICE_STATUS = 0x00
    [2065.149087] TAS2552_CFG_1=0x36
    [2065.156089] TAS2552_CFG_2=0x6d
    [2065.162707] TAS2552_CFG_3=0x5d
    [2065.168523] TAS2552_DOUT= 0x00
    [2065.175402] TAS2552_SER_CTRL_1 =0xc4
    [2065.182972] TAS2552_SER_CTRL_2 = 0x00
    [2065.189736] TAS2552_OUTPSIT_DATA =0xc8
    [2065.197733] TAS2552_PLL_CTRL_1 =0x19
    [2065.205240] TAS2552_PLL_CTRL_2 =0x03
    [2065.212678] TAS2552_PLL_CTRL_3 =0x6f
    [2065.219696] TAS2552_BTIP=0x8F
    [2065.226314] TAS2552_BTS_CTRL= 0x80
    [2065.233463] TAS2552_RESERVE_0D = 0xbe
    [2065.240566] TAS2552_LIMIT_RATE _HYS =0x08
    [2065.249108] TAS2552_limit_release = 0x04
    [2065.257149] TAS2552_LIMIT_INT_COUNT = 0x00
    [2065.265606] TAS2552_PDM_CFG= 0x01
    [2065.272442] TAS2552_PGA_GAIN= 0x10
    [2065.279033] TAS2552_EDGE_RATE _CTRL = 0x40
    [2065.287557] TAS2552_BOOST_APT_CTRL = 0x0F
    [2065.295669] TAS2552_VER_NUM= 0x08
    [2065.302443] TAS2552_VBAT_DATA = 0x00

    因此、请检查并告诉我们是否发生了任何错误。 因为我对"TAS2552_SER_CTRL_1"、"TAS2552_CFG_1"电阻器有疑问。

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

    上述寄存器的设置似乎不正确。
    CFG_1 (寄存器0x01)选择内部1.8MHz 振荡器作为 PLL 的源、这是正确的、但它还将 D 类设置为"静音"并将器件设置为软件关断模式。 这是不正确的。
    SER_CTRL_1 (寄存器0x05)将 BCLK 和 WCLK 设置为输出、因此器件设置为数字接口的主器件、并将数据格式设置为 DSP。 这两个问题都不正确。 该寄存器值解释了为什么 WCLK 为1位长(DSP 格式)。

    您是否知道器件是如何初始化的? 也许、如果您可以将初始化编辑为正确的值、音频效果会更好。

    此致、
    -Ivan Salazar
    应用工程师-低功耗音频和传动器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ivan;
    感谢您的快速回复。
    很抱歉给您带来不便。 我外出两天、因此我将检查另一个设置、并在两天后回复。

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

    您好 Ivan;

    我们按如下所示更改了 dtsi 配置文件;在其中、我们选择 CPU 作为主器件、通信模式为 I2S。

    ??Sound0:Sound0{

    状态="正常";

            兼容="简单音频卡";

            型号="ti-tas2550";

            simple-audio-card、name ="TAS2552";

            simple-audio-card、format ="I2S";

            /*简单音频卡,MCLK-FS =<256>;*/

            simple-audio-card、小工具=

    "扬声器"、"外部扬声器"、

    "线路"、"输入";

            简单音频卡,路由=

                    "扬声器外部"、"输出"、

                    "in"、"DAC";

            简单音频卡、CPU{

                Sound-Dai =<&mcasp3>;

            };

            简单音频卡、编解码器{

                sound-dai =<和 tas2552>;

                系统时钟频率=<1800000>;

                系统时钟 ID = ;

            };

        };

    当我们播放48000 Hz wav 文件和 wav 文件时、请检查以下寄存器转储值

    在此期间、我的 WLCK 频率为12kHz、BCLK 频率为370KHz。

     

    播放波形"/usr/bin/piano2.wav
    有符号16位小端序、速率48000Hz、立体声


    [200.325124] TAS2552_DEVICE_STATUS   = 0x20
    [200.332962] TAS2552_CFG_1   =0x34
    [200.339033] TAS2552_CFG_2   =0xec
    [200.346000] TAS2552_CFG_3   =0x5d
    [200.352423] TAS2552_DOUT    =0x00
    [200.358407] TAS2552_SER_CTRL_1      =0x00
    [200.366342] TAS2552_SER_CTRL_2      =0x00
    [200.374276] TAS2552_output_data     =0xc8
    [200.381671] TAS2552_PLL_CTRL_1      =0x1b
    [200.388690] TAS2552_PLL_CTRL_2      =0x0B
    [200.396614] TAS2552_PLL_CTRL_3      =0xf9
    [200.403978] TAS2552_BTIP    = 0x8F
    [200.409963] TAS2552_BTS_CTRL = 0x80
    [200.417823] TAS2552_RESERVE_0D     =0xc0
    [200.425436] TAS2552_LIMIT_RATE HYS  =0x28
    [200.433447] TAS2552_limit_release   = 0x04
    [200.441406] TAS2552_LIMIT_INT_COUNT = 0x00
    [200.449379] TAS2552_PDM_CFG = 0x01
    [200.456525] TAS2552_PGA_GAIN =0x10
    [200.463696] TAS2552_EDGE_RATE _CTRL  =0x40
    [200.471645] TAS2552_BOOST_APT_CTRL  =0x0F
    [200.479526] TAS2552_VER_NUM =0x08
    [200.486709] TAS2552_VBAT_DATA       =0x00

    此致、谢谢!

    Nikunj Patel

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ivan;
    您能帮助我们解决这个问题吗?

    谢谢、致以最诚挚的问候;
    Nikunj Patel
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Nikunj、

    需要考虑的最重要的因素是时钟设置和内部块设置、这几乎是您在上面共享的寄存器的前半部分。
    我查看了这些内容、发现了以下内容:
    - TAS2552_CFG_1 =0x34 // SWS 未启用,但 D 类似乎仍处于静音状态。
    - TAS2552_SER_CTRL_1 =0x00 //现在看起来不错,它将 WCLK 和 BCLK 设置为输入(从模式),选择 I2S 格式和16位数据。
    -其余的 CFG 和 SER_CTRL 值看起来不错。
    - PLL_CTRL //从上面的值中得到 I 标识 P = 0、J = 27、D = 3995。 如果 fs 为48kHz、则 PLL 的输出应为24.576MHz。 我建议对 PLL 值进行一些微小的更改、因为 P = 0、J = 27和 D = 3067。 这将在 PLL 输出端提供24.576030MHz 的频率。

    但是、我目前还不了解的一个原因是您的 WCLK 为12kHz、BCLK 为370kHz。 这些信号不正确、这些信号应来自系统中的主机处理器(因为 TAS2553设置为从机)。

    此致、
    -Ivan Salazar
    应用工程师-低功耗音频和传动器
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ivan;

    感谢您的回复;

    TAS2552_CFG_1 =0x34 // SWS 未启用、但 D 类似乎仍处于静音状态。

    答案:我们已将其更改为0x30、但仍然没有任何效果。

    但是、我目前还不了解的一个原因是您的 WCLK 为12kHz、BCLK 为370kHz。 这些信号不正确、这些信号应来自系统中的主机处理器(因为 TAS2553设置为从机)。

    答:我们可以将 TAS2553用作主器件吗?

    如果是、如果我们不提供 MCK、那么 TAS2553生成的 WCLK 和 BCLK 频率值应该是多少(因为我们使用了1.8MHz 内部振荡器)

    注意:我们仅使用 TAS2553的 DIN 引脚和8欧姆扬声器作为输出。

    此致、谢谢!

    Nikunj Patel

     

     

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

    感谢您的帮助;

    实际上、我们的板/扬声器存在问题。 今天、我们准备了两块新板、并使用以下更改测试新板、扬声器声音清晰。

    此致、谢谢!
    Nikunj Patel