您好
我有一个用户需要从 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.576 MHz 的整数倍,适用于 32Khz 和 48kHz 采样率。这将需要分频器才能达到 4.096MHz。
在 imx8mm 时钟驱动程序上传到 Linux 内核之前,似乎有一些选项可以将其细分,但我在上游 Linux 内核中没有看到这些选项。
是否有说明如何将 SAI 时钟配置为 4.096MHz 分频?
您好,
我理解您的用例,但遗憾的是,软件运行时无法更改频率。恩智浦不提供同样的支持。 建议更改设备树。
此致
你指出的解决方案是使用下游供应商的内核,该内核有一个IMX8MM_CLK_SAI1_DIV,允许 IMX8MM_AUDIO_PLL1_OUT 被划分为额外的频率--这在上游 Linux 内核中是缺失的,也是我想问的。是否有办法在上游内核中进行划分?我对 Linux 的时钟子系统不是很熟悉。
你好
可以参考类似案例中提供的解决方案
https://community.nxp.com/t5/i-MX-Processors/SAI-on-i-MX8M-Mini/m-p/959805
此外,请参阅第 16 章 移植音频编解码器https://www.nxp.com/docs/en/user-guide/UG10165.pdf
此致