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.

[参考译文] AM62P:使用 AM62P 时 TLV320AIC32x4 和 TLV320ADC3101 上的 I2C 通信问题(错误–121)

Guru**** 2756835 points

Other Parts Discussed in Thread: TLV320ADC3101, AM62P

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1608588/am62p-issue-with-i2c-communication-error--121-on-tlv320aic32x4-and-tlv320adc3101-using-am62p

部件号: AM62P
Thread 中讨论的其他器件: TLV320ADC3101

您好、

我正在使用一个 TLV320AIC3203. (兼容:)ti,tlv320aic32x4和两个 TLV320ADC3101 安装到基于的定制板上 AM62P 。 我遇到了未检测到器件 (NACK) 的 I2C 通信问题。

硬件设置:

  • 复位电路: 我的电路板在复位线路中使用基于 MOSFET 的逆变器 (BSS138P)。 GPIO 的输入 高电平 、将拉动编解码器的物理复位引脚 驱动至低电平 (活动)。

  • I2C 地址: DAC 位于 0x30、ADC 位于 0x32 和 0x36。

问题: 运行时i2cdetect、不会显示地址。 内核日志显示: tlv320aic32x4: probe of 1-0030 failed with error -121

RESET 引脚经过反相构建。 当施加一个来自处理器的高电平信号时、该引脚被认为是低电平。

&main_i2c1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&main_i2c1_pins_default>;
	clock-frequency = <400000>;

	audio2@30 {
		// TLV320DAC3203IRGE (MIC/DAC)
		compatible = "ti,tlv320aic32x4";
        reg = <0x30>;

		pinctrl-names = "default";
		pinctrl-0 = <&main_rst_dac2_pins_default>;

		reset-gpios = <&main_gpio0 46 GPIO_ACTIVE_HIGH>;
		
		clock-names = "mclk";
		clocks = <&k3_clks 157 17>;
		
		iov-supply = <&vcc_3v3_main>;
		ldoin-supply = <&vcc_3v3_main>;
		status = "okay";
	};

	adc1@32 {
		pinctrl-names = "default";
		pinctrl-0 = <&main_rst_adc1_pins_default>;
        compatible = "ti,tlv320adc3101";
        reg = <0x32>;

        reset-gpios = <&main_gpio0 47 GPIO_ACTIVE_HIGH>;
        clocks = <&k3_clks 157 17>;
		clock-names = "mclk";

		status = "okay";

    };

	adc2@36 {
		pinctrl-names = "default";
		pinctrl-0 = <&main_rst_adc2_pins_default>;

        compatible = "ti,tlv320adc3101";
        reg = <0x36>;
        status = "okay";

        reset-gpios = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;

        clocks = <&k3_clks 157 17>;
		clock-names = "mclk";

    };

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

    您好 Sergio、

    我需要几天时间才能返回。 如果我当时没有响应、请在星期一上 ping 该线程。

    此致、

    Nick

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

    您好、Nick、  

    有什么关于它的消息吗?

    我在设备树中做了一些更改、现在我可以找到我的声卡、但当我尝试重现声音时、无论 alsamixer 上的音量如何、它始终保持静音。

    这里是从设备树中提取的新数据。

    /{
    ...
    	codec_audio: sound {
            compatible = "simple-audio-card";
            simple-audio-card,name = "TAS571X-Audio";
    		status = "okay";
    
    		simple-audio-card,widgets =
    			"Speaker", "External Speaker";
    		simple-audio-card,routing =
    			"External Speaker", "OUT_A",
    			"External Speaker", "OUT_B",
    			"External Speaker", "OUT_C",
    			"External Speaker", "OUT_D";
    
    		simple-audio-card,format = "i2s";
    
    		clocks = <&audio_refclk0>;
            clock-names = "test_refclk";
    
            simple-audio-card,bitclock-master = <&cpulink>;
            simple-audio-card,frame-master = <&cpulink>;
    		simple-audio-card,mclk-fs = <512>;
    
    		cpulink: simple-audio-card,cpu {
    			sound-dai = <&mcasp2>;
    			system-clock-frequency = <24576000>;
    			dai-tdm-slot-width = <32>;
    		};
    
    		sound_master: simple-audio-card,codec {
    			sound-dai = <&tas5731>;
    			clocks = <&audio_refclk0>;
    		};
        };
    };
    
    &mcasp2 {
        status = "okay";
        #sound-dai-cells = <0>;
    
        pinctrl-names = "default";
        pinctrl-0 = <&mcasp_audio_in_out_pins_default>;
    
        op-mode = <0>;          /* Modo I2S */
        tdm-slots = <2>;        /* Stereo */
    
        serial-dir = <
            1 /* AXR0 -> DAC1 DIN */
            1 /* AXR1 -> DAC2 DIN */
            2 /* AXR2 -> ADC1 DOUT */
            2 /* AXR3 -> ADC2 DOUT */
            0 /* AXR4 -> Não usado */
        >;
    
    	tx-num-evt = <32>;
    	rx-num-evt = <32>;
    
    	clocks = <&k3_clks 192 0>;
        clock-names = "fck";
    
    	assigned-clocks = <&k3_clks 192 0>;
        assigned-clock-parents = <&k3_clks 192 2>; 
        assigned-clock-rates = <24576000>;
    };
    
    &main_i2c0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c0_pins_default>;
    	clock-frequency = <400000>;
    	
    	...
    	
    	
    	audio1: audio1@18 {
    		// TLV320DAC3203IRGE (ADC/DAC)
    		#sound-dai-cells = <0>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&main_rst_dac1_pins_default>;
    
    		compatible = "ti,tlv320aic32x4";
            reg = <0x18>;
    	    status = "okay";
    
    		reset-gpios = <&main_gpio0 45 GPIO_ACTIVE_HIGH>;
    		clocks = <&k3_clks 157 17>;
    		clock-names = "mclk";
    
    		iov-supply = <&vcc_3v3_main>;
            ldoin-supply = <&vcc_3v3_main>;
    
    		aic32x4-gpio-func = <0xff 0xff 0xff 0xff 0x08>;
    
    		gpio-controller;
    		#gpio-cells = <2>;
    	};
    };
    
    &main_i2c1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    	
    	audio2: audio2@18 {
    		// TLV320DAC3203IRGE (MIC/DAC)
    		#sound-dai-cells = <0>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&main_rst_dac2_pins_default>;
    		compatible = "ti,tlv320aic32x4";
            reg = <0x18>;
    		status = "okay";
    
    		reset-gpios = <&main_gpio0 46 GPIO_ACTIVE_HIGH>;
    		clocks = <&k3_clks 157 17>;
    		clock-names = "mclk";
    
    		iov-supply = <&vcc_3v3_main>;
    		ldoin-supply = <&vcc_3v3_main>;
    
    		aic32x4-gpio-func = <0xff 0xff 0xff 0xff 0x08>;
    
    		gpio-controller;
    		#gpio-cells = <2>;
    	};
    
    	audio_adc1: adc1@32 {
    		pinctrl-names = "default";
    		pinctrl-0 = <&main_rst_adc1_pins_default>;
            compatible = "ti,tlv320adc3101";
            reg = <0x32>;
            status = "okay";
    
            reset-gpios = <&main_gpio0 47 GPIO_ACTIVE_HIGH>;
    		clocks = <&k3_clks 157 17>;
    
            ti,dmdin-gpio1 = <0>;
            ti,dmclk-gpio2 = <0>;
    
            ti,micbias1-vg = <0>;
    
            gpio-controller;
            #gpio-cells = <2>;
            #sound-dai-cells = <0>;
        };
    
    	audio_adc2: adc2@36 {
    		pinctrl-names = "default";
    		pinctrl-0 = <&main_rst_adc2_pins_default>;
            compatible = "ti,tlv320adc3101";
            reg = <0x36>;
            status = "okay";
    
            reset-gpios = <&main_gpio0 48 GPIO_ACTIVE_HIGH>;
    		clocks = <&k3_clks 157 17>;
    
            ti,dmdin-gpio1 = <0>;
            ti,dmclk-gpio2 = <0>;
    
            ti,micbias1-vg = <0>;
    
            gpio-controller;
            #gpio-cells = <2>;
            #sound-dai-cells = <0>;
        };
    
    };
    
    &main_i2c2 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c2_pins_default>;
    	clock-frequency = <400000>;
    	
    	...
    	
    	tas5731: audio-codec@1a {
    		compatible = "ti,tas5717";
    		reg = <0x1a>;
    
    		pinctrl-names = "default";
    		pinctrl-0 = <&main_amp_rst_pins_default>, 
    					<&main_amp_pwr_down_pins_default>;
    
    		#sound-dai-cells = <0>;
    		reset-gpios = <&main_gpio0 15 GPIO_ACTIVE_HIGH>;
    		pdn-gpios = <&main_gpio0 16 GPIO_ACTIVE_HIGH>;
    
    		clocks = <&audio_refclk0>; /* Em vez de <&k3_clks 157 17> */
        	clock-names = "mclk";
    
    		assigned-clocks = <&audio_refclk0>;
        	assigned-clock-parents = <&k3_clks 157 17>;
        	assigned-clock-rates = <24576000>;
    
    		AVDD-supply  = <&vcc_3v3_sys>;
    		DVDD-supply  = <&vcc_3v3_sys>;
    		PVDD_AB-supply = <&en_pwr_17v>;
    		PVDD_CD-supply = <&en_pwr_17v>;
    	};
    };	
    
    &audio_refclk0 {
        pinctrl-names = "default";
        pinctrl-0 = <&audio_ext_refclk_pins_default>;
    
    	assigned-clocks = <&k3_clks 157 17>;
        assigned-clock-parents = <&k3_clks 157 0>; 
        assigned-clock-rates = <24576000>;
    
        status = "okay";
    };
    
    &main_pmx0{
    	
    	pinctrl-names = "default";
    	pinctrl-0 = <&myepwm0_pins_default>;
    
        ...
    	mcasp_audio_in_out_pins_default: mcasp-audio-in-out-default-pins {
    		pinctrl-single,pins = <
    			AM62PX_IOPAD(0x0170, PIN_INPUT, 2) /* (A21) RGMII2_TD1.MCASP2_ACLKR */
    			AM62PX_IOPAD(0x0178, PIN_INPUT, 2) /* (A19) RGMII2_TD3.MCASP2_ACLKX */
    			AM62PX_IOPAD(0x0188, PIN_INPUT, 2) /* (E16) RGMII2_RD1.MCASP2_AFSR */
    			AM62PX_IOPAD(0x0174, PIN_INPUT, 2) /* (D17) RGMII2_TD2.MCASP2_AFSX */
    			AM62PX_IOPAD(0x018c, PIN_INPUT, 2) /* (E17) RGMII2_RD2.MCASP2_AXR0 */
    			AM62PX_IOPAD(0x0180, PIN_INPUT, 2) /* (D19) RGMII2_RXC.MCASP2_AXR1 */
    			AM62PX_IOPAD(0x0184, PIN_INPUT, 2) /* (E19) RGMII2_RD0.MCASP2_AXR2 */
    			AM62PX_IOPAD(0x017c, PIN_INPUT, 2) /* (F19) RGMII2_RX_CTL.MCASP2_AXR3 */
    			AM62PX_IOPAD(0x0164, PIN_INPUT, 2) /* (A20) RGMII2_TX_CTL.MCASP2_AXR4 */
    		>;
    	};
    

    此致、

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

    您好:

    1) 请确认您在 A53 内核上运行的 Linux 版本。

    我不确定 tlv320aic32x4 Linux 驱动程序是否适合与 TLV320AIC3203 配合使用。 我将此主题重新分配给 TLV320AIC3203 团队进行评论。

    2) 是否在引导时看到任何表明驱动程序已成功初始化的终端输出? 是否有任何警告或错误?

    3) 您的原始提示中列出的所有 3 个设备是否仍然存在问题,或者只有其中一个设备出现问题? 如果是、哪些是可正常工作的外设、哪些是无法正常工作的外设?

    此致、

    Nick

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

    我实际上没有看到“ TLV320AIC3203. “作为 TI.com 上的有效器件型号。 我可以让您仔细检查该器件型号吗?

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

    我已经修订了复位引脚、现在它可以正常工作。
    我重新检查了、有 TLV320ADC3101IRGER 和 TLV320DAC3203IRGE 。

    此致