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:集成 TLV320AIC3100编解码器与麦克风 AOM-4546P-R-47459:录制问题

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1384911/tlv320aic3100-integrating-tlv320aic3100-codec-with-microphone-aom-4546p-r-47459-recording-issue

器件型号:TLV320AIC3100

工具与软件:

我已经成功将 TLV320AIC3100编解码器与我的系统集成、正如的输出所确认

arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: D10audio [10_audio], device 0: 4400b004.audio-controller-tlv320aic31xx-hifi tlv320aic31xx-hifi [4400b004.audio-controller-tlv320aic31xx-hifi tlv320aic31xx-hifi]
  Subdevices: 1/1
  Subdevice #0: subdevice #0



我已经按照  TI 论坛上此链接 e2e.ti.com/.../tlv320aic3100-microphone-audio-was-not-coming-in-the-tlv320aic3100-codec 中概述的步骤进行了操作、但我遇到了录制的音频是否为空白的问题。 具体来说、我使用的麦克风是 AOM-4546P-R-47459。

我使用了以下所有 amixer 命令、期望  amixer -c 0 sset "DAC" 0关闭(它显示无效命令)

amixer -c 0 cset name='ADC Capture Switch' on
amixer -c 0 sset 'ADC' 40
amixer -c 0 sset 'Mic PGA' 50
amixer -c 0 sset "Output Left From MIC1LP" off
amixer -c 0 sset "Output Left From MIC1RP" off
amixer -c 0 sset "Output Right From MIC1RP" off
amixer -c 0 sset 'MIC1LM P-Terminal' 'FFR 10 Ohm'
amixer -c 0 sset "DAC" 0 off
amixer -c 0 sset 'Speaker Analog' 0 off
amixer -c 0 sset "HP Analog" 0 off
amixer -c 0 sset "HP Left" off
amixer -c 0 sset "HP Right" off
amixer -c 0 sset "HP Driver" off
amixer -c 0 sset "Output Left From Left DAC" off
amixer -c 0 sset "Output Right From Right DAC" off

有人可以就导致此问题的原因提供建议吗? 我已验证硬件设置并执行了配置步骤、但未录制音频。 我们非常感谢您提供任何见解或故障排除步骤。

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

    尊敬的 Ahsan:

    您是否探测了 DOUT 引脚以查看是否存在数据切换?  我对 amixer 设置不是非常熟悉、但您是否仔细检查过 ADC 已取消静音 上电?

    此致、
    Jeff McPherson

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

    e2e.ti.com/.../4774.aud_5F00_rec.wav
    它只记录噪音、没有音频。 可能是什么原因?

    我的 DTS 如下  

    	sound-10 {
            compatible = "simple-audio-card";
            simple-audio-card,name = "10_audio";
            simple-audio-card,dai-link@0{
    			label = "tlv320aic3100-Codec";
    			    widgets =
                		"Speaker", "Speaker Jack",
                		"Headphone", "Headphone Jack",
                		"Microphone", "Microphone Jack";
            		routing =
                		"Speaker Jack", "SPK",
                		"Headphone Jack", "HPL",
                		"Headphone Jack", "HPR",
    					"Mic Jack ,MICBIAS1", 
    					"MIC1LP", "Mic Jack",
    					"MIC1RP", "Mic Jack",
                		"Microphone Jack", "IN1P",
                		"Microphone Jack", "IN1N";
    			dais = <&sai2a_port_tlv320aic3100>;
                format = "i2s";
    			status = "okay";
                cpu {
                    sound-dai = <&sai2a>;                
                };
                codec {
                    sound-dai = <&tlv320aic3100>;
                };
            };
        };
    	}; 
    	};
    
    	fragment@201 {
    		target = <&i2c6>;
    		__overlay__ {
    			status = "okay";
    			tlv320aic3100: tlv320aic3100@18 {
    				compatible = "ti,tlv320aic3100";
    				#sound-dai-cells = <0>;
    				reg = <0x18>;
    				clocks = <&mclk>;
    				ai31xx-micbias-vg = <2>;
    				reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>;
    				status = "okay";
    				port {
    					tlv320aic3100_out: endpoint {
    						remote-endpoint = <&sai2_out_tlv320aic3100>;
    					};
    				};
    			};
    		};
    	};
    
    	fragment@204 {
    		target = <&sai2a>;
    		__overlay__ {
    			dma-names = "rx";
    			status = "okay";			
    			ports {
    				#address-cells = <1>;
    				#size-cells = <0>;
    				sai2a_port_tlv320aic3100: port@0 {
    					sai2_out_tlv320aic3100: endpoint {
    						remote-endpoint = <&sai2_out_tlv320aic3100>;
    						dai-format = "i2s";
    						bitclock-master = <&tlv320aic3100>;
    						mclk-fs = <256>;
    					};
    				};
    			};
    		};
    	};

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

    抱歉、目前我们的 Linux 支持非常有限。

    您能告诉我您向器件提供的时钟以及提供寄存器转储吗?

    谢谢!
    Jeff McPherson

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

    root@qsmp-1570:/media# i2cdump -y -f 0 0x18
    未指定大小(使用字节数据访问)
    0 1 2 3 4 5 6 7 8 9 A b c d e f 0123456789abcdef
    00:01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
    10:00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 .......... ?
    20: 06 3e 00 7f 7f ff 7f 3a 3a 3a 04 00 20 86 00 B2?>..?:? "..?
    30:04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00?..........
    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 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
    C0: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
    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

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

    Ahsan,

    我还需要知道您的预期时钟设置是什么。 什么是 MCLK、BCLK、FSYNC?

    谢谢!
    Jeff McPherson

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

    尊敬的 Jeff:  
    我集成了扬声器和它的工作良好,所以 MCL , BCLK 和 FSYNC 是良好的

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

    尊敬的 Ahsan:

    那么您的录制现在可以正常工作了吗?

    此致、
    Jeff McPherson

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

    否、扬声器工作正常、但麦克风工作不正常。 我还测试过、当我说一些东西时、麦克风会产生脉冲、但录制的音频始终只是噪声。

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

    Ahsan,

    I2S 时钟频率是多少? 这是检查寄存器设置所必需的。

    您还可以说您正在记录噪声。 DOUT 引脚是否正在切换数据? 我想确认 ADC 是否实际已通电。

    谢谢!
    Jeff McPherson

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

    Jeff、
    我可以录制音频、但其中有很多噪音。  
    e2e.ti.com/.../aud_5F00_rec4.wav

    如何消除噪音并记录流畅的记录?  

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

    尊敬的 Ahsan:

    正如我之前问过的、我需要您的 I2S 时钟频率来检查寄存器设置是否正确。

    您听到的这种失真通常是由时钟不正确或接收器和编解码器之间的 I2S 设置不匹配引起的。 再次检查您的格式、位宽和时钟边沿是否在编解码器设置和记录器之间匹配。

    此致、
    Jeff McPherson

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

    尊敬的 Jeff:

    感谢您的帮助。 以下是根据与 STM32MP1平台集成的 TLV320AIC3100编解码器当前 DTS 配置确定的 I2S 时钟频率和编解码器设置的详细信息:

    时钟配置:

    • MCLK (主时钟): 24 MHz (固定时钟)
    • I2S 格式: I2S
    • MCLK-FS (MCLK 与采样率之比): 256

      mclk: codec-mclk {
      	compatible = "fixed-clock";
      	#clock-cells = <0>;
      	clock-frequency = <24000000>;
      };
      
      sound-10 {
      	compatible = "simple-audio-card";
      	simple-audio-card,name = "10_audio";
      	simple-audio-card,dai-link@0 {
      		label = "tlv320aic3100-Codec";
      		format = "i2s";
      		bitclock-master = <&sai2a>;
      		frame-master = <&sai2a>;
      
      		cpu {
      			sound-dai = <&sai2a>;
      		};
      
      		codec {
      			sound-dai = <&tlv320aic3100>;
      		};
      	};
      };
      
      tlv320aic3100: tlv320aic3100@18 {
      	compatible = "ti,tlv320aic3100";
      	#sound-dai-cells = <0>;
      	reg = <0x18>;
      	clocks = <&mclk>;
      	reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>;
      
      	port {
      		tlv320aic3100_in: endpoint {
      			remote-endpoint = <&sai2a_out_tlv320aic3100>;
      		};
      	};
      };
      


      音频路由和配置:

      • 小工具:
        • "扬声器"、"扬声器插孔"
        • "耳机"、"耳机插孔"
        • "麦克风"、"麦克风插孔"
      • 路由:
        • "扬声器插孔"至"SPK"
        • "耳机插孔"至"HPL"和"HPR"



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

    尊敬的 Ahsan:

    查看您的设置、发现时钟树尚未配置。 我使用了 EVM GUI 来计算24MHz 的 MCLK 所需的设置。 请参阅下图、并使用寄存器(使用 i2c get 等工具)使用正确的时钟分频器设置 EVM。

    此致、
    Jeff McPherson

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

    尊敬的 Jeff:  
    我更新了寄存器、因为您建议响应仍然相同。 寄存器值如下所示  

    # i2cdump -y  -f 0  0x18
    No size specified (using byte-data access)
         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
    00: 00 00 01 66 03 21 07 02 30 00 00 83 85 00 80 80    ..?f?!??0..??.??
    10: 08 00 83 85 80 80 04 00 00 00 01 00 00 00 01 00    ?.?????...?...?.
    20: 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00 00    ....?...........
    30: 00 00 00 02 30 12 03 02 02 11 10 00 01 04 00 14    ...?0??????.??.?
    40: 0c 00 00 00 6f 38 00 00 00 00 00 ee 10 d8 7e e3    ?...o8.....???~?
    50: 00 00 30 10 00 00 00 00 7f 00 00 00 00 00 00 00    ..0?....?.......
    60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
    70: 00 00 00 00 00 7e 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    ................
    90: 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    ................
    b0: 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    ................
    d0: 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    ................
    f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................

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

    尊敬的 Ahsan:

    明天我就可以运行寄存器映射并寻找问题。 您能向我确认您正在提供一个24MHz 时钟并且您想要输出具有64*fs BCLK 的48kHz 采样率吗?

    谢谢!
    Jeff McPherson