我正在尝试使用 iMX8M Mini SAI1 将 i2s 音频输出到编解码器。为了尽量减少主时钟抖动,我想使用外部高质量振荡器为 iMX8 处理器和外部 DAC 芯片提供主时钟。
在 iMX8M Mini 参考手册中,它说 SAI1_MCLK 引脚可以配置为输入或输出。那么,为了将此引脚配置为输入,我必须在设备树(或哪些寄存器)中写什么?
到目前为止,我已经完成了以下工作:
1.在 u-boot 代码中将寄存器 IOMUXC_GPR_GPR6 ( GPR_SAI1_SEL1 ) 的第 5 位设置为 1 (SAI1_MCLK)
2.删除了sai1设备树中的“fsl,sai-mclk-direc
tion-output”属性
3. 在设备树中创建一个固定时钟节点,并将sai1 的mclk1 时钟设置为该时钟。
i2s_mclk: fixed-24576 {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24576000>;
clock-accuracy = <20000>;
};
&sai1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_sai1>;
status = "okay";
fsl,sai-synchronous-rx;
clocks = <&clk IMX8MM_CLK_SAI1_IPG>,
// MCLK1 is switched to SAI1.MCLK in the IOMUXC_GPR_GPR6 register in uboot code
<&i2s_mclk>,
<&clk IMX8MM_CLK_DUMMY>, <&clk IMX8MM_CLK_DUMMY>;
clock-names = "bus", "mclk1", "mclk2", "mclk3";
fsl,sai-multi-lane;
};
看来 sai1_mclk pad 仍然是一个输出 pad,不接受我的外部输入。
0