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.

[参考译文] PCMD3140EVM-PDK:通过 I2S 将 PCMD3140/TLV320ADCx140添加到 Jetson Xavier AGX Industrial

Guru**** 2393725 points
Other Parts Discussed in Thread: PCMD3140

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1436233/pcmd3140evm-pdk-adding-pcmd3140-tlv320adcx140-to-jetson-xavier-agx-industrial-via-i2s

器件型号:PCMD3140EVM-PDK
Thread 中讨论的其他器件:PCMD3140

工具与软件:

您好、TI 社区:

我在通过40引脚接头上的 I2S 引脚将德州仪器(TI)的4通道音频器件(PCMD3140/TLV320ADCx140)集成到我的 Jetson Xavier AGX Industrial 时需要帮助。

问题: 按照 TI E2E 论坛上的指南 在器件树中进行更改、但在正确配置它们时遇到困难。

我的 Ubuntu 版本

5.10.104.

目前我在 dmesg 上有这个错误、我不知道这个数字代表什么。

dmesg | grep tlv
[   14.549660] tlv320adcx140-codec 1-004e: ASoC: error at snd_soc_component_probe on tlv320adcx140-codec.1-004e: -121
[   14.550879] tlv320adcx140-codec 1-004e: ASoC: failed to probe component -121

这是该器件的 DTS 部分

e2e.ti.com/.../tegra194_2D00_audio_2D00_p2822_2D00_0000.txt

e2e.ti.com/.../4762.dmesg.txt

这是 i2c 的地址映射

i2cdetect -y -r 1.
    0 1 2 3 4 5 6 7 8 9 A b c d  f
00:-------         UU------- ——
10:-------- --- --- ——
20:--------- --- --- ——
30:----- --- --- ——
第40章:我是你的女人 --- UU
50:------- 54 --------- --- ——
60:--------- --- --- ——
70:-------- 74 ------  

i2cdetect -l
I2C-3   i2c          3190000.i2c                        I2C 适配器
I2C-1 i2c             c240000.i2c                        I2C 适配器
I2C-101   i2c          1511000.display                   I2C 适配器
I2C-8   i2c          31e0000.i2c                        I2C 适配器
I2C-6   i2c          31c0000.i2c                        I2C 适配器
I2C-4   i2c          Tegra BPMP I2C 适配器             I2C 适配器
I2C-2   i2c          3180000.i2c                        I2C 适配器
I2C-0   i2c          3160000.i2c                        I2C 适配器
I2C-102   i2c          15220000显示                   I2C 适配器
I2C-7   i2c          c250000.i2c                        I2C 适配器
I2C-5   i2c          31b0000.i2c                        I2C 适配器

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

    您好!

    由于存在 I2C 连接问题、您似乎没有深入了解器件树。 这可能是由您的 Linux 器件中的其他原因造成的。 遗憾的是、我们的团队中没有 Linux 专家、因此我不确定我们可以提供更多帮助。 抱歉。

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

    您好!

    我不知道您的麦克风偏压为什么会出现故障。 这可能是由于麦克风偏置源造成的、因为麦克风偏置只有4种选择。  

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

    因此、在我们在器件树中删除该线之后、

    i2c@c240000 {
            #address-cells = <1>;
            #size-cells = <0>;
            status = "okay";
    
            tlvcodec: tlvcodec@4e {
                compatible = "ti,tlv320adc3140";
                reg = <0x4e>;
                #sound-dai-cells = <1>;
    
                //ti,mic-bias-source = <6>;
                ti,pdm-edge-select = <0 1 0 1>;
                ti,gpi-config = <4 5 6 7>;
                ti,gpio-config = <0 0>;
                ti,gpo-config-1 = <0 0>;
                //ti,vref-source = <2>;
                //reset-gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
                
                	status = "okay";
                	sound-name-prefix = "H40-TLV";
                	
                	port {
    			tlv_ep: endpoint {
    				remote-endpoint = <&hdr40_snd_i2s_dap_ep>;
    				link-name = "tlv-4-mic-array";
    			};
    		};
                	
            };
        };
    

    看来是驱动程序启动了,然后我尝试用下面的行记录

    arecord -D hw:1,1 -f cd -t wav -d 5 -c 4 test.wav
    Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Channels 4
    arecord: pcm_read:2178: read error: Input/output error

    这是我们在 dmesg 中得到的误差

    [  267.552704] tegra210-i2s 2901100.i2s: timeout: failed to reset I2S for capture
    [  267.552913] tegra210-i2s 2901100.i2s: ASoC: PRE_PMU: I2S2 TX event failed: -110
    [  277.723604] tlv320adcx140-codec 1-004e: ASoC: error at snd_soc_component_update_bits on tlv320adcx140-codec.1-004e: -121
    

    我尝试像 NVIDIA 中描述的那样使用 amixer 配置 I2S 条目,但我不确定我做得是否正确,可能这个编解码器需要一些更多的配置,然后我才能对其进行排序

    AudioSetupAndDevelopment

    amixer -c APE cset name='ADMAIF2 Mux' 'I2S2'
    numid=1308,iface=MIXER,name='ADMAIF2 Mux'
      ; type=ENUMERATED,access=rw------,values=1,items=81
      ; Item #0 'None'
      ; Item #1 'ADMAIF1'
      ; Item #2 'ADMAIF2'
      ; Item #3 'ADMAIF3'
      ; Item #4 'ADMAIF4'
      ; Item #5 'ADMAIF5'
      ; Item #6 'ADMAIF6'
      ; Item #7 'ADMAIF7'
      ; Item #8 'ADMAIF8'
      ; Item #9 'ADMAIF9'
      ; Item #10 'ADMAIF10'
      ; Item #11 'ADMAIF11'
      ; Item #12 'ADMAIF12'
      ; Item #13 'ADMAIF13'
      ; Item #14 'ADMAIF14'
      ; Item #15 'ADMAIF15'
      ; Item #16 'ADMAIF16'
      ; Item #17 'I2S1'
      ; Item #18 'I2S2'
      ; Item #19 'I2S3'
      ; Item #20 'I2S4'
      ; Item #21 'I2S5'
      ; Item #22 'I2S6'
      ; Item #23 'SFC1'
      ; Item #24 'SFC2'
      ; Item #25 'SFC3'
      ; Item #26 'SFC4'
      ; Item #27 'MIXER1 TX1'
      ; Item #28 'MIXER1 TX2'
      ; Item #29 'MIXER1 TX3'
      ; Item #30 'MIXER1 TX4'
      ; Item #31 'MIXER1 TX5'
      ; Item #32 'AMX1'
      ; Item #33 'AMX2'
      ; Item #34 'AMX3'
      ; Item #35 'AMX4'
      ; Item #36 'ARAD1'
      ; Item #37 'AFC1'
      ; Item #38 'AFC2'
      ; Item #39 'AFC3'
      ; Item #40 'AFC4'
      ; Item #41 'AFC5'
      ; Item #42 'AFC6'
      ; Item #43 'OPE1'
      ; Item #44 'SPKPROT1'
      ; Item #45 'MVC1'
      ; Item #46 'MVC2'
      ; Item #47 'IQC1-1'
      ; Item #48 'IQC1-2'
      ; Item #49 'IQC2-1'
      ; Item #50 'IQC2-2'
      ; Item #51 'DMIC1'
      ; Item #52 'DMIC2'
      ; Item #53 'DMIC3'
      ; Item #54 'DMIC4'
      ; Item #55 'ADX1 TX1'
      ; Item #56 'ADX1 TX2'
      ; Item #57 'ADX1 TX3'
      ; Item #58 'ADX1 TX4'
      ; Item #59 'ADX2 TX1'
      ; Item #60 'ADX2 TX2'
      ; Item #61 'ADX2 TX3'
      ; Item #62 'ADX2 TX4'
      ; Item #63 'ADX3 TX1'
      ; Item #64 'ADX3 TX2'
      ; Item #65 'ADX3 TX3'
      ; Item #66 'ADX3 TX4'
      ; Item #67 'ADX4 TX1'
      ; Item #68 'ADX4 TX2'
      ; Item #69 'ADX4 TX3'
      ; Item #70 'ADX4 TX4'
      ; Item #71 'ADMAIF17'
      ; Item #72 'ADMAIF18'
      ; Item #73 'ADMAIF19'
      ; Item #74 'ADMAIF20'
      ; Item #75 'ASRC1 TX1'
      ; Item #76 'ASRC1 TX2'
      ; Item #77 'ASRC1 TX3'
      ; Item #78 'ASRC1 TX4'
      ; Item #79 'ASRC1 TX5'
      ; Item #80 'ASRC1 TX6'
      : values=18
    

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

    通常、出现输入/输出错误是因为器件目标不正确或时钟不正确。 检查 arecord -l 以及您预期的时钟与发送到编解码器的时钟。

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

    我必须通过器件树向器件发送时钟? 并将一些时钟从 Jetson 物理连接到设备?

    我不认为我现在正在发送任何时钟

    arecord -l
    **** List of CAPTURE Hardware Devices ****
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 0: tegra-dlink-0 XBAR-ADMAIF1-0 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 1: tegra-dlink-1 XBAR-ADMAIF2-1 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 2: tegra-dlink-2 XBAR-ADMAIF3-2 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 3: tegra-dlink-3 XBAR-ADMAIF4-3 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 4: tegra-dlink-4 XBAR-ADMAIF5-4 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 5: tegra-dlink-5 XBAR-ADMAIF6-5 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 6: tegra-dlink-6 XBAR-ADMAIF7-6 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 7: tegra-dlink-7 XBAR-ADMAIF8-7 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 8: tegra-dlink-8 XBAR-ADMAIF9-8 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 9: tegra-dlink-9 XBAR-ADMAIF10-9 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 10: tegra-dlink-10 XBAR-ADMAIF11-10 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 11: tegra-dlink-11 XBAR-ADMAIF12-11 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 12: tegra-dlink-12 XBAR-ADMAIF13-12 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 13: tegra-dlink-13 XBAR-ADMAIF14-13 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 14: tegra-dlink-14 XBAR-ADMAIF15-14 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 15: tegra-dlink-15 XBAR-ADMAIF16-15 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 16: tegra-dlink-16 XBAR-ADMAIF17-16 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 17: tegra-dlink-17 XBAR-ADMAIF18-17 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 18: tegra-dlink-18 XBAR-ADMAIF19-18 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 19: tegra-dlink-19 XBAR-ADMAIF20-19 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 20: tegra-dlink-20 ADSP-FE1-20 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    card 1: APE [NVIDIA Jetson AGX Xavier APE], device 21: tegra-dlink-21 ADSP-FE2-21 []
      Subdevices: 1/1
      Subdevice #0: subdevice #0
    

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

    这看起来不像是 TI 编解码器正在使用 arecord 的音频器件列表进行注册。 检查其是否已插入、AC-MB 是否设置为 USB 音频源。 如果使用 EVM、则无需外部时钟、因为 USB 提供时钟。 您可以在此处阅读 EVM 用户指南、了解有关设置所需音频信号路径所需的跳线的更多说明: https://www.ti.com/lit/ug/sbau359a/sbau359a.pdf

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

    我们不使用 AC-MB、而是将 PCMD3140直接连接到 Jetson 40引脚 I2S 条目

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

    抱歉。  

    是否确定编解码器已连接到 Jetson 的 I2S2? 阅读 论坛帖子、他们遇到了与您相同的问题、并通过更改 amixer -c ape 命令解决了该问题。

    如果您按预期连接到 I2S 引脚、您能否确保它们通过示波器提供时钟? 如果编解码器在目标模式下运行、您至少需要 BCLK 和 WCLK 进入编解码器;如果编解码器在控制器模式下运行、您需要 MCLK 进入编解码器(它会由此生成自己的 BCLK 和 WCLK)。 要设置为控制器模式(也称为主模式)、您将在 DTS 文件的音频卡部分下包含"bitclock-master;frame-master;"行。 我看到您将这些行包含在"hdr40_snd_link_i2S:[i2s2_to_codec]和"hdr40_snd_I2S_DAP_EP:[i2s2_DAP_EP]部分中、我不确定它们分别是什么。 如果编解码器应该处于主控模式、您需要确保它知道、所以它能够生成它自己的 BCLK 和 WCLK、这是因为缺省情况下、编解码器将处于目标(或者"受控")模式。 请告诉我 I2S 连接的引脚上的时钟输出是什么、以便我们确定接下来要做什么。

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

    您好!

    您需要在器件中输入时钟信号进行记录、这就是为什么会看到输入/输出错误的原因。 为了使其正常工作、这主要是 Jetson 支持问题、而不是 TI 无法支持的问题。 我找到了此论坛帖子 https://forums.developer.nvidia.com/t/jetson-xavier-nx-i2s-with-pcm1808/246423 、其中介绍了如何使用 amixer 命令将 Jetson 设置为 BCLK 和 FCLK 主站、然后必须配置扩展接头以启用 I2S 引脚并启用时钟: https://docs.nvidia.com/jetson/archives/r34.1/DeveloperGuide/text/HR/ConfiguringTheJetsonExpansionHeaders.html?highlight=jetson%20io

    一旦您从 Jetson 获得时钟输出、如果您仍有录制问题、我可能会提供更多帮助。 如果你的时钟还有问题,我建议在 Nvidia 论坛上发帖。

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

    我们现在将管理从进入 BCLK 的 I2S 时钟获取数据、此外、我们还可以在示波器中看到 PDM 时钟正在工作、并且数据正在从 PDM 麦克风输出、但我们在 SDOUT 中未获取任何数据。

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

    您好!

    您需要使用特定于器件的路由参数来设置音频卡路由、这些参数可以在 adcx140驱动程序的"snd_soc_dapm_route"结构中找到。 您还应该确保您还有进入 FCLK 的时钟。