基板:i.MX8MPLUSLPD4-EVK(8MPLUS-BBベース基板)
SAI5に外部I2S MEMSマイクロフォン(Knowles SPH0645LM4H)を取り付けます。
J21(EXP_CN)に物理的に配線されているSoC側のピンを使用する
ベースボードの回路図に従って、レベルシフターU57/U58を介して拡張ヘッダーを接続
(SPF-46370)
1. ハードウェア配線(回路図と照合し、オシロスコープで検証済み)
SPH0645 BCLK -> J21 ピン 40 ("PDM_CLK", SoC パッド SAI5_RXC)
SPH0645 LRCL -> J21 ピン 32 ("PWM4_3V3", SoC パッド SAI5_RXFS)
SPH0645 DOUT -> J21 ピン 38 ("PDM_STREAM_0"、SoC パッド SAI5_RXD0)
SPH0645 SEL - > GND(左チャンネル)
SPH0645 3V -> J21 ピン 1
SPH0645 GND -> J21 ピン 6
外部I2S MEMSマイクロフォン(SPH0645)を接続しようとしています
SAI5、J21拡張ヘッダーに配線(BCLK -> SAI5_RXC、LRCL ->
SAI5_RXFS、DOUT > SAI5_RXD0、8MPLUS-BB回路図と照合して確認済み
(オシロスコープで確認済み)。
私たちはこの問題に直面しており、解決のための支援を必要としています。
サウンドカードは正しく認識されています。
root@imx8mp-LPDDR4-EVK:~# Arecord -l
カード2:SPH0645audio [SPH0645-オーディオ]、デバイス0:...
しかし、クロックエラーにより録音が失敗します。
root@imx8mp-lpddr4-evk:~# arecord -D hw:CARD=sph0645audio,DEV=0 \
-f S16_LE -r 48000 -c 1 mic.wav
[ 140.950940]fsl-sai 30c50000.sai:必要な処方率を算出できませんでした: 3072000
[ 140.958042]fsl-sai 30c50000.sai:ASoC: 30c50000.sai の snd_soc_dai_hw_params でエラーが発生しました:-22
arecord: set_params:1435: ハードウェアパラメータをインストールできません
clk_summaryを確認すると、sai5は依然として24MHzから派生していることがわかります。
オーディオPLLではなくオシレーター:
sai_pll_out_div2 0 0 50000 Y 0 0 0 24576000
sai5 0 0 50000 N 0 0 0 24000000
sai5_root 0 0 50000 N 0 0 0 24000000
現在の&sai5ノード:
&sai5 {
#sound-dai-cells = <0>
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai5>;
assignment-clocks = <&clk IMX8MP_CLK_SAI5>;
assignment-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
割り当てられたクロックレート = <12288000>;
fsl、sai-mclk方向出力;
fsl、sai非同期;
fsl,dataline = <0 0x1 0x0>;
ステータス = "okay"
};
pinctrl_sai5: sai5grp {
fsl,pins = <
MX8MP_IOMUXC_SAI5_RXFS__AUDIOMIX_SAI5_RX_SYNC 0xd6
MX8MP_IOMUXC_SAI5_RXC__AUDIOMIX_SAI5_RX_BCLK 0xd6
MX8MP_IOMUXC_SAI5_RXD0__AUDIOMIX_SAI5_RX_DATA00 0xd6
>
};
また、pinctrlグループが
このボード上のSAI5_RXC/RXD0/RXFSと同じ物理パッドです。
SAI5のクロックをオーディオPLLに正しくルーティングするにはどうすればいいでしょうか。
24MHz発振器を使用する代わりに、3072000Hz(48kHz)を生成する
パス?
参考までに画像も添付しました。
ありがとう。
IMG_8200.jpegIMG_8200.jpeg
IMG_8205.jpegIMG_8205.jpeg
preview.jpgpreview.jpg
preview (1).jpgプレビュー(1).jpg
こんにちは、
次の設定を試してみることをお勧めします。
&sai5 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai5>;
assigned-clocks = <&clk IMX8MP_CLK_SAI5>;
assigned-clock-parents = <&clk IMX8MP_AUDIO_PLL1_OUT>;
assigned-clock-rates = <12288000>;
clocks = <&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_IPG>, <&clk IMX8MP_CLK_DUMMY>,
<&audio_blk_ctrl IMX8MP_CLK_AUDIOMIX_SAI5_MCLK1>, <&clk IMX8MP_CLK_DUMMY>,
<&clk IMX8MP_CLK_DUMMY>, <&clk IMX8MP_AUDIO_PLL1_OUT>,
<&clk IMX8MP_AUDIO_PLL2_OUT>;
clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
fsl,sai-asynchronous;
fsl,dataline = <0 0x1 0x0>;
status = "okay";
};
クロックやクロック名のバインディングがない場合、ドライバは24 MHz発振器にフォールバックします。また、マイクに接続しない場合は、fsl,sai-mclk-direction-outputプロパティは必要ありません。
よろしくお願いいたします。