ご挨拶
imx8mm SAI3 I2S から SGTL5000 コーデックへのネイティブ 16KHz オーディオ ストリーミングを必要とするユーザーがいます。
SGTL5000 データシートでは、MCLK はサンプリング レートの整数倍、通常はサンプリング レート (fs) の 128 倍、256 倍、384 倍、または 512 倍で、最大 MCLK は 25MHz である必要があると規定されています。16kHz のサンプリング レートの場合、サポートされる MCLK 周波数は次のとおりです。
- 2.048MHz (16kHz * 128)
- 4.096MHz (16kHz * 256)
- 6.144MHz (16kHz * 384)
- 8.192MHz (16kHz * 512)
IMX8MM_AUDIO_PLL1_OUT は 786.432MHz で、24.576MHz の整数倍であり、32Khz および 48kHz のサンプリング レートに適しています。IMX8MM_AUDIO_PLL2_OUT は 722.5344MHz で、22.5792MHz の整数倍であり、44.1kHz のサンプリング レートに適しています。4.096MHz を実現するには分周器が必要になります。
imx8mm クロック ドライバが Linux カーネルにアップストリームされる前は、クロックを分割するオプションがあったようですが、アップストリーム Linux カーネルにはそれが見当たりません。
SAI クロックを 4.096MHz の分周レートに設定する方法に関する説明はありますか?
こんにちは、
使用例は理解していますが、残念ながら、実行時にソフトウェアから周波数を変更することはできません。NXP では同様のサポートは提供していません。デバイス ツリーの変更をお勧めします。
よろしくお願いします。
ご指摘いただいた解決策は、IMX8MM_CLK_SAI1_DIV という機能を持つダウンストリームベンダーカーネルを使用することです。この機能により、IMX8MM_AUDIO_PLL1_OUT を複数の周波数に分割できます。これはアップストリームLinuxカーネルには存在せず、まさに私が質問している点です。アップストリームカーネルでこれを分割する方法はありますか?Linuxのクロックサブシステムについてはあまり詳しくありません。
こんにちは、
同様のCASEで提供された解決策を見るCAN
https://community.nxp.com/t5/i-MX-Processors/SAI-on-i-MX8M-Mini/mp/959805
また、第 16 章「オーディオ コーデックの移植」もご覧ください。https://www.nxp.com/docs/en/user-guide/UG10165.pdf
よろしくお願いします。