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.

[参考译文] TLV320AIC3104:RK3588 + TLV320AIC3104无法播放但 CAN##39;t anrecord

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

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

https://e2e.ti.com/support/audio-group/audio/f/audio-forum/1436958/tlv320aic3104-rk3588-tlv320aic3104-can-aplay-but-can-t-arecord

器件型号:TLV320AIC3104

工具与软件:

尊敬的专家:

我‘m 使用 RK3588通过 I2S 连接 TLV320AIC3104、内核为 v5.10。

现在我可以播放 wav 文件,扬声器是正常的;但当使用录音文件,然后播放相同的文件,扬声器只有噪音声音。

原理图显示熔断:

DTS 配置:

sound: tlv320-sound {
		status = "okay";
		compatible = "simple-audio-card";
		simple-audio-card,format = "i2s";
		simple-audio-card,name = "rockchip-tlv320";
		simple-audio-card,mclk-fs = <256>;
		simple-audio-card,widgets =
			"Line","Line In",
			"Line","Line Out",
			"Speaker","External Speaker",
			"Microphone","Microphone Jack";
		simple-audio-card,routing =
			"LINE1L","Microphone Jack",
			"LINE1R","Microphone Jack",
			"Line Out","LLOUT",
			"Line Out","RLOUT";
			
		simple-audio-card,cpu {
			sound-dai = <&i2s2_2ch>;
		};
		simple-audio-card,codec {
			sound-dai = <&tlv320aic3x>;
		};

	};
&i2c2 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2m4_xfer>;
	
	tlv320aic3x: tlv320aic3x@18 {
		#sound-dai-cells = <0>;
		compatible = "ti,tlv320aic3104","ti,tlv320aic3x";
		reg = <0x18>;

		reset-gpios = <&gpio2 RK_PA6 GPIO_ACTIVE_LOW>;
		ai3x-micbias-vg = <1>;
		
		AVDD-supply = <&vcc_3v3_s3>;
		IOVDD-supply = <&vcc_3v3_s3>;
		DRVDD-supply = <&vcc_3v3_s3>;
		DVDD-supply = <&avcc_1v8_s0>;
	};
};
&i2s2_2ch {
	pinctrl-0 = <&i2s2m0_mclk &i2s2m0_sclk &i2s2m0_lrck &i2s2m0_sdi &i2s2m0_sdo>;
	status = "okay";
};

测试日志:

"怎么了? 为什么麦克风无法录制声音?

谢谢!

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

    您好!

    您能否检查 MCLK、BCLK 和 FCLK 上的时钟是什么? 这可能是采样率问题、其中编解码器始终需要44.1kHz 的音频文件、并且由于录制速度为8k、可能没有音频播放。 我看到线路  simple-audio-card、MCLK-fs =<256>;在您的代码中、这是否意味着您的 MCLK 是11.28 MHz? 可能还有其他地方可以定义时钟、因此不同采样率不需要如此256的比率。  

    此致!
    MIR

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

    您好!

    MCLK:12MHz
    BCLK:2.8MHz
    FCLK:44.1kHz

    我使用"arecord -D plughw:0、0 -t wav -d 10 -f cd test.wav"录制一个44.1kHz 的音频文件然后播放,仍然有声音只是噪声。

    如果您需要更多信息,请联系我们。
    非常感谢。
    此致!

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

    您好!

    当您运行"aplay -l"和"arecord -l"时会发生什么情况? 您是否看到输入设备存在并在 Pavucontrol 中取消静音? 此外、您的麦克风偏置是否向麦克风输出预期的电压?

    此致!
    MIR

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

    您好!

    我测量了 MICBIAS 的电压值并发现其为0V、但我已在 dts 文件中将 ai3x-micbias 配置为1。 除了此配置外、是否还需要任何其他配置来启用 MICBIAS 引脚上的电压输出?

    通过 I2C 工具配置第0页寄存器25的值以将 MICBIAS 输出设置为2V 后、我能够正常录制声音。

    问题是麦克风偏置已经失效。

    谢谢、Best。

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

    您好!

    问题可能在于您在 DTS 文件中定义值的方式、是否可以尝试使用<0x1>? 似乎需要十六进制值。 问题可能还在于、文件在到达 micbias-vg 线路之前出错、我知道3104不支持 GPIO 功能、因此 RESET-GPIO 线路可能会影响到器件参数的设置流程。 此外、为什么您具有与3104兼容的 ti、tlv320aic3x? 如果删除 GPIO 行没有帮助、您可能还需要将其删除。 您是否可以在装入 DTS 文件时访问日志?

    在最坏的情况下、您可以在驱动程序本身中编辑默认寄存器设置。 请告诉我 DTS 文件是否更改了帮助。

    此致!
    MIR

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

    您好!

    我已按如下所示更改了 dts 文件、但仍然不起作用、micbias 的输出仍然为零。

     

    tlv320aic3104的数据表显示必须控制 RESET 引脚。

    好的。

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

    您好!

    有趣的是、您还有其他文件正在更改器件的寄存器吗? 或者您是否有可以在 DTS 文件运行时查看的日志? 这可以帮助我们确定它是否正在读取该行并正确设置该值。

    此致!
    MIR