我错把这个贴到 i.mx 处理器通用论坛了,现在重新贴到这里。
我正试图将 RT1062 上的 SAI1 用作 I2S 主控器进行传输,同时将 MCLK 用作 1060 EVKB 外部时钟源的输入。 我将 RT1062 上的 SAI1 用作 I2S 主控器,使用由内部 PLL 生成的 MCLK,可以在 J23 的引脚 1(即信号 GPIO_AD_B1_09)上看到 MCLK 输出,并在同一引脚上看到 BCLK 等。
我从这条线了解到的:
https://community.nxp.com/t5/i-MX-Processors/SAI1-MCLK1-source-select/m-p/1435023
这样我就可以将同一引脚用作 MCLK 输入。我正在更改这些寄存器字段(RM 第 326-327 页):
- IOMUXC_GPR_GPR1 中的 SAI1_MCLK1_SEL - 从 000 改为 011,以选择 MCLK 引脚
- IOMUXC_GPR_GPR1 中的 SAI1_MCLK1_DIR - 将 1 改为 0,以选择 MCLK 作为输入端
在这两种情况下,IOMUXC_SW_MUX_CTL_PAD_GPIO_AD_B1_09 都设置为 3,将 AD_B1_09 选择为 MCLK 功能。
当我这样做并向 J23 的引脚 1 提供外部时钟信号时,却看不到 I2S 输出 - 没有 BCLK 生成等。
选择 MCLK 作为 I2S 主站传输的输入是否还需要更改寄存器?
你好@EdwinHz、
非常感谢你提供的信息,这才起了作用!我将 SAI1_MCLK_2_SELECT_INPUT 寄存器设置为 1,以选择 AD_B1_09,使用外部 MCLK 振荡器,I2S 输出工作正常。
不知道参考手册是否会有修订版,但如果有,我建议在此注册表中添加一个简短的注释来说明这一点。在这种情况下,寄存器的名称并不能完全说明其功能,特别是因为寄存器的名称是 MCLK2,而这里允许 MCLK1 作为输入。
再次感谢您提供的重要信息。
嗨,@mojolabs、
要将 GPIO_AD_B1_09 MCLK 信号用作输入,还需要调整一个寄存器设置:
调整后应该可以解决问题,但如果问题仍然存在,请告诉我!
BR,
Edwin.