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.

[参考译文] AM625:音频在通过 MCASP 与 AM6252 连接的音频编解码器 TLV320AIC32X4 中不支持 8k 采样率

Guru**** 2540720 points
Other Parts Discussed in Thread: TLV320AIC3204

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1547640/am625-audio-not-working-for-8k-sample-rate-in-audio-codec-tlv320aic32x4-interfaced-with-am6252-via-mcasp

器件型号:AM625
主题:TLV320AIC3204

工具/软件:

尊敬的 TI 团队:

我使用 TLV320AIC3204 音频编解码器、该编解码器通过 McASP 与 AM6252 连接。 在我的设置中、编解码器作为主器件运行、MCLK 通过 12.288MHz 上的外部振荡器供电。 BCLK 和 WCLK 也由编解码器生成。

我的要求是在不同应用中使用编解码器以 8kHz、16kHz、32kHz 和 48kHz 采样率播放音频。 一个观察结果是、当我首先以 48kHz 运行 GStreamer 流水线时、停止并尝试以另一个采样率运行该流水线时、会抛出错误:“Unable to set hw_params(无法设置 hw_params)“。

在其他 NXP 处理器中、我没有遇到此类问题。

请查找 DTS 修改:

 CODEC_AUDIO1:Sound1{
       compatible =“simple-audio-card";“;
       简单音频卡、名称=“AM625x-TLV320AIC3204";“;        
       简单音频卡、小工具=
           //   “麦克风“、“麦克风插孔“、
       //   “耳机“、“耳机插孔“;
           “线路“、“线路输入“、
           “线路“、“线路输出“;
           简单音频卡、路由=
               “线路输出“、“HPL",“,</s>、
           “线路输出“、“HPR",“,</s>、
           “IN1_L",“,"、"线路“线路输入“、
           “IN1_R",“,"、"线路“线路输入“;
       //   “IN1_L",“,"、"麦克风“麦克风插孔“、
       //   “IN1_R",“,"、"麦克风“麦克风插孔“、
       //   “耳机插孔“、“HPL",“,</s>、
       //   “耳机插孔“、“HPR";“;                
       简单音频卡、格式=“I2S_";“;
       //简单音频卡、MCLK-FS =<256>;
       简单音频卡、bitclock-master =<&sound_master1>;
       简单音频卡、帧主机=<&sound_master1>;
       ///简单音频卡,位时钟反转;

       简单音频卡、CPU{
           Sode-Dai =<&McASP0>;
       };

       sound_master1:简单音频卡、编解码器{
           sode-Dai =<&TLV320AIC3204>;
           Clocks =<&tlv_MCLK>;
       };
   };

   TLV:TLV -MCLK{
       兼容=“固定时钟“;
       #clock-cells =<0>;
       时钟频率=<12288000>;
   };

   TLV320AIC3204:音频编解码器@18
       兼容=“ti、tlv320aic32x4“;
       reg =<0x18>;
       #sound-dai-cells =<0>;
       //aic3x-micbias -vg =<2>;
       ldoin-supply =<&VCC_3V3_sys>;
   IOV-SUPPLY =<&VCC_3V3_SYS>;
   DV-SUPPLY =<&VCC_1v8>;
   AV 电源=<&VCC_1v8>;
   Clocks =<&tlv_MCLK>;
       时钟名称=“MCLK";“;
       状态=“正常“;    
     };

&McASP0{
   状态=“正常“;
   #sound-dai-cells =<0>;
   pinctrl-names =“default";“;
   pinctrl-0 =<&MAIN_McASP0_pins_default>;
   
   OP-MODE =<0>;         /* MCASP_IIS_MODE */
   TDM 时隙=<2>;
   /* 16 个串行器*/
   serial-dir =< /* 0:不活动、1:TX、2:Rx */
          1 2 0 0
          0 0 0 0
          0 0 0 0
          0 0 0 0
   >;
   tx-num-evt =<32>;
   rx-num-evt =<32>;
};

请按高优先级处理。

谢谢、此致

Shekar NUTHULA

   MAIN_MCASP0_PINS_DEFAULT:MAIN-MCASP0-PINs-DEFAULT{
       pinctrl-single、pins =<
           AM62X_IOPAD (0x01a4、PIN_INPUT、0)/*(B20) McASP0_ACLKx.McASP0_ACLKX (BCLK)*/
           AM62X_IOPAD (0x01a8、PIN_INPUT、0)/*(D20) MCASP0_AFSX.MCASP0_AFSX (WCLK)*/
           AM62X_IOPAD (0x01a0、PIN_OUTPUT、0)/*(E18) McASP0_AXR0.McASP0_AXR0 (Din)*/
           AM62X_IOPAD (0x019c、PIN_INPUT、0)/*(B18) McASP0_AXR1.McASP0_AXR1 (Dout)*/    
       >;
   };

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

    嗨、Shekar、

    您是否尝试播放以不同采样率编码的不同音频?

    请共享您尝试运行的 gstreamer 命令?

    您是否能够使用 aplay 命令播放不同的音频文件?

    此致、

    Suren

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

    尊敬的 Suren:

    当设备通电时,我们使用 gstreamer 管道在自模块上播放.mp3 音。 对于 两个不同模块之间的全双工音频流,我们使用 8k 采样率。

    对于音频播放:

    gst-launch-1.0 文件 rc location=*。mp3! 汤底鱼! 听音转换! 听音量很大! AUDIO/x-RAW、速率=48000、通道=2、格式=S16LE! alsasink device=HW:0、0

    对于两个模块之间的全双工:

    gst_debug=3 gst-launch-1.0 -v    alsasrc device=hw:0,0!  听音转换! 听音量很大! 排队! webrtcdsp experimental -agc=true compression-gain-db=90 echo-cance=true echo-compression-level=high target-level-dBfs=15! 排队! 听音转换! 听音量很大! 排队! 听音转换! 听音量很大! audio/x-raw、rate=8000、channel=1、format=S16LE! 听音转换! rtpL16pay! udpsink host=10.32.1.65 端口=8080 async=false    udpsrc uri=udp://10.32.1.46:8080 caps=“application/x-rtp、媒体=音频、时钟速率=8000、编码名称=L16、通道=1、 有效载荷=96“! 排队! rtpL16depay! 听音转换! 听音量很大! webrtcechprobe !  alsasink device=HW:0、0

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

    嗨、Shekar、

    您是否可以使用 alsa atecord 实用程序以 8kHz 的采样率录制并转储到文件中、而不是使用 gstreamer? 这样可以吗?

    我看到你正在做多个音频转换! 您 gstreamer 管道上的音频重新采样,多重重新采样的任何原因??

    此致、

    Suren

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

    尊敬的 Suren:

    使用 aplay 和 arecord 为 8kHz 采样率 也我们在录制的文件中得到了噪音 。  相关问题  

    gst_debug=3 gst-launch-1.0 -v    alsasrc device=hw:0,0!  听音转换! 听力损失 ! 排队! webrtcdsp experimental -agc=true compression-gain-db=90 echo-cance=true echo-compression-level=high target-level-dBfs=15! 排队! 听音转换! 听力损失 ! 排队! 听音转换! 听力损失 ! audio/x-raw、rate=8000、channel=1、format=S16LE! 听音转换! rtpL16pay! udpsink host=10.32.1.65 端口=8080 async=false    udpsrc uri=udp://10.32.1.46:8080 caps=“application/x-rtp、媒体=音频、时钟速率=8000、编码名称=L16、通道=1、 有效载荷=96“! 排队! rtpL16depay! 听音转换! 听力损失 ! webrtcechprobe !  alsasink device=HW:0、0

    上述管道由 4 个音频转换! 音频示例元件用于通过以太网在两个不同模块之间实现音频流式传输。

     用途:

    发送端或发送端:

    从捕获的音频数据alsasrc可能具有任意采样率。 使其与webrtcdsp仅支持采样率的元件兼容 8,000,16016000,32000 和 48000 Hz —在处理回波消除和噪声抑制之前、必须相应地转换采样率。

    2.对于插件的采样率和数据兼容性,我们使用此音频转换器和音频示例。

    3、处理后,音频数据需要通过 UDP 通过网络传输。 为了使数据与网络传输兼容、必须将其转换为rtpL16pay元素可接受的格式和采样率、用于对原始 PCM 音频进行封装。

    接收端:

     

    4.在接收端,音频数据通过 UDP 接收,必须解码和转换,以匹配所支持的格式alsasink(例如通道数,采样率,位深)。 第四capsfilter级或转换阶段用于确保接收到的音频与音频硬件兼容、以实现正确播放。

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

    嗨、Shekar、

    感谢您提供详细信息。

    您是否可以提供使用 adecord 转储的文件?

    使用您当前的设置时、是否有记录-D HW:0、0 -r 8000 -c 2 -f S16_LE -d 20 test.wav? 我假设编解码器应该能够以 8kHz 的频率进行捕获

    您说上述 test.wav 文件有噪声吗?

    我想排除它是内核方面还是用户空间方面的问题。

    此致、

    Suren

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

    尊敬的 Suren:

    是的,我会提供录制的文件. 当尝试使用 8kHz 采样率从麦克风环回到扬声器时、我观察到了一个问题

    gst-launch-1.0 alsasrc device=“hw:0,0"!“! 听音转换! 听音量很大! audio/x-raw、rate=8000! alsasink device=“hw:0,0"</s>“

    IM 获取时钟为

    MCLK:从 OSC 到编解码器的 12.288MHz

    BCLK:242 kHz(预计为 256 赫兹)

    WCLK:8kHz     

    BCLK 值不匹配、 预期得到 256khz((采样率*格式*通道数)=(8000*16*2))。

    我假设噪音可能是由于不匹配是 BCLK。

    正如我获得其他 16kHz、32kHz 和 48kHz 采样率的预期时钟一样。 请检查从你的侧,以及.

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

    嗨、Shekhar。

    那么、除 8kHz 之外的所有其他采样率都可以正常工作?  

    我们正在尝试在我们的设置上运行一些测试、将让您随时了解结果。

    此致、

    Suren

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

    尊敬的 Suren:

    是的、我们没有观察到其他采样率(例如 16kHz、32kHz 和 48kHz)有任何问题。 但是、我们的应用团队请求支持 8kHz、因此与更高的采样率相比、它们可以降低 SoM 的 CPU 利用率。

    谢谢、此致

    Shekar NUTHULA

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

    您好、Suren、

    8kHz 的测试结果有没有时间表?

    此致、

    Madhurya  

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

    尊敬的 Madhurya:

    我们正在与编解码器团队合作、以了解 BCLK 在工作和非工作场景中的差异。  

    此致、

    Suren

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

    嗨、Shekar、

    您是否还能在工作场景 (48kHz) 和非工作情况 (8kHz) 下将编解码器寄存器转储页 0 和页 1 分享给我们?

    第 0 页有计时设置、第 1 页有音量和路由设置。  

    此致、

    Suren

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

    尊敬的 Suren:

    请找到第 0 页和第 1 页编解码器的寄存器转储

    16Khz 的工作情况下

    root@MYD-am62x:~# i2cset -f -y 1 0x18 0x00
    root@MYD-am62x:~# i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
    00:   ` 00 60 00 03 91 08 1a 0A 00 00 9a 81 01 00 02 .. ..????
    10:00 08 9a 82 80 01 00 04 00 01 0c 00 01 88 00   .??? ..?????
    20: 00 00 00 00 C4 a0 10 00 00 00 00 00 00 00 00 00 00 00 00   ...???...?..
    30: 00 00 00 00 00 12 02 02 02 00 00 00 01 00 94   … ????????
    40: 00 D8 00 6F 38 00 00 00 00 00 ee 10 D8 7e E3   .?.o8 . ???~?
    50:00 c0 00 00 00 00 00 00 00 7f 00 00 00 00 00 00 00…    ?……
    60:7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   …
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    b0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    root@MYD-am62x:~# i2cset -f -y 1 0x18 0x00 0x01
    root@MYD-am62x:~# i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
    00: 01 00 00 04 00 00 00 00 00 00 20 00 10 08 00 00 00   ?. ??...
    10:02 02 40 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ??@@…
    20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    30:   @ 00 00 00 40 00 40 00 40 00 80 00 03 80………………………………………@………………………………………………………………@…
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    70:00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00   …… …
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    b0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    root@MYD-am62x:~#

    在 8kHz 下不工作

    root@MYD-am62x:~# i2cset -f -y 1 0x18 0x00
    root@MYD-am62x:~# i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
    00: 00 00 60 00 03 91 08 20 8d 00 a0 81 01 A8 02   ..`.?? ??????
    10:00 08 B5 82 80 01 00 04 00 01 0c 00 01 8e 00   .??? ..?????
    20: 00 00 00 00 C4 a0 10 00 00 00 00 00 00 00 00 00 00 00 00   ...???...?..
    30: 00 00 00 00 00 12 02 02 02 00 00 00 01 00 94   … ????????
    40: 00 D8 00 6F 38 00 00 00 00 00 ee 10 D8 7e E3   .?.o8 . ???~?
    50:00 c0 00 00 00 00 00 00 00 7f 00 00 00 00 00 00 00…    ?……
    60:7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   …
    70:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    b0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    root@MYD-am62x:~# i2cset -f -y 1 0x18 0x00 0x01
    root@MYD-am62x:~# i2cdump -f -y 1 0x18
    未指定大小(使用字节数据访问)
        0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef    
    00: 01 00 00 04 00 00 00 00 00 00 20 00 10 08 00 00 00   ?. ??...
    10:02 02 40 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ??@@…
    20:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    30:   @ 00 00 00 40 00 40 00 40 00 80 00 03 80………………………………………@………………………………………………………………@…
    40:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    50:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    60:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    70:00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00   …… …
    80:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    90:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    A0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    b0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    C0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    d0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    E0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    F0:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00…    
    root@MYD-am62x:~#

    谢谢、此致

    Shekar N

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

    嗨、Shekar、

    我浏览了寄存器转储,发现时钟分频器非常奇怪 — 是的,您测得的~242kHz 频率是多少、因为 BCLK 是这些寄存器的预期输出。 如果您没有提供时钟分频器 、看起来驱动程序会进行自己的计算(这些计算非常关闭)。 我建议您在驱动程序运行后或在驱动程序本身中手动设置时钟分频器寄存器。

    我建议不要使用 8k 的电流分压器、而是使用这些分压器:

    # J.D=8.0000
    # DOSR = 256
    # NDAC = 6
    MDAC = 4.
    # BCLK NDIV = 16
    我会在寄存器转储上附加我的注释、以便您可以看到所有分频器正在执行什么操作。 16k 情况也有奇怪的 PLL/分频器值、但舍入误差有点小、因此不太明显。 尽管如此、BCLK 并不能完全确定它应该是什么、因此我会再次建议:
    # J.D=8.0000
    # DOSR = 256(已是)
    # NDAC = 6
    MDAC = 8
    # BCLK NDIV = 8
    请告诉我您的想法。
    此致、
    Mir