Hi Supporter,
我們嘗試用IMX8MM公板跳線接上一塊Audio DAC board (AD1933+TPA3116),遇到以下問題。
問題描述:
a. 播音檔時,只聽到"波"一聲。請問有何建議?
b. 我們試著量測BCLK, LRCLK, SDATA,發現SDATA的部份只有左聲道有資料,右聲道完全沒有資料,請問該如何解決?
1.測試流程:
a. 透過spi interface先init ad1933
b. 使用aplay來播音檔。(aplay -Dplughw:0,0 /usr/share/sounds/alsa/Front_Center.wav)
2. 跳線資訊:
SAI3_TXD-> DSDATA1
SAI3_MCLK-> MCLK
SAI3_TXFS-> DLRCLK
SAI3_TXC-> DBCLK
3. 軟体修改部份(請看附件):
SDK: imx-yocto-LF_L5.4.3_1.0.0
---codec: snd-soc-dummy
--Machine : imx-ad1933.c
4. Device Tree:
imx8mm-evk.dts
sound-ad1933 {
compatible = "fsl,AD1933";
model = "imx-audio-ad1933";
cpu-dai = <&sai3>;
};
&sai3 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai3>;
assigned-clocks = <&clk IMX8MM_CLK_SAI3>;
assigned-clock-parents = <&clk IMX8MM_AUDIO_PLL1_OUT>;
assigned-clock-rates = <12288000>;
status = "okay";
};
5. 示波器訊號量測:
2 ==> LRCLK
1==> BCLK
3 ==> DSDATA1
Regards,
Kenny
如果第一次播放正常,不关机第二次重启aplay继续播放有pop音的话,说明第一次播放完成时,没有关闭sound card。
但是,重启板子后运行aplay,还有pop音是完全不应该的。
如果第一次播放正常,不关机第二次重启aplay继续播放有pop音的话,说明第一次播放完成时,没有关闭sound card。
但是,重启板子后运行aplay,还有pop音是完全不应该的。
第一次執行aplay聲音正常,第二次之後都只聽到POP
重啟後,結果同上
第一次執行aplay聲音正常,第二次之後都只聽到POP
謝謝
我感觉问题出在Machine driver中,就是说播放结束后,没有关闭sound card,以至于第二次再播放时,CPU端和codec端,没有办法重新初始化(根据wav文件信息重新配置通信双方)。
请教了一下 design team的audio driver的设计者,他建议先查codec的配置。目前只能提供这样一个思路。
所以,加在一起,我的思路和design team的思路,您可以去 查一下,既然能有aplay正确播放,就是一个好的开始。后面主要是debug工作,实在不行,就跟踪driver的代码,看看结束的时候,走到了什么地方。
伟东
Hi Kenny,
对于I.MX8MM来说,你的codec是AD1933,所以您使用dummy codec不是合适。这是在没有codec的时候,才会使用dummy codec。正常情况您的音频驱动架构应该是:
platform : fsl_sai.c
codec : ad1933.c (ad1933的原厂应该提供driver给您)
machine: imx-ad1933.c (负责把cpu_dai 和codec_dai连接起来,形成dai_link)
从您提供的描述和示波器波形图看,有两个可能:
(1)driver没有正确地获取Front_Center.wav的格式及参数信息并正确配置SAI,所以TXD线上的数据不正确。
(2)Front_Center.wav文件本身是否存在问题,一般这个可能性不大,因为PC上播放一下就知道好不好了。
所以,您还是在driver架构上按照fsl_sai.c + ad1933.c --->imx-ad1933.c的架构来做比较好。
Have a nice day!
B.R,
weidong
Hi Weidong,
我們嘗試修改為如下架構後可以播放出聲音了,但只有第一次執行 APLAY時有聲音,之後都只聽到"POP"一聲,重開機後現象一樣,請問這有可能是那個環結出錯了呢?
codec: dummy to ad193x.c
machine driver: imx-ad1933.c to simple-audio-card
Regards,
Kenny