在IMX6ULL Application Processors Reference Manual资料中 :
1、Charpter 18,提及PLL4 also referenced as Audio PLL。是否此PLL4就是Figure 45-2的PLL_OUT呢?此PLL_OUT的范围值是多少,精度多少?
2、同时我想了解一下,章节45.3.1.1 Audio master clock Figure 45-2 SAI master clock generation 中的 Fractional Clock Divider是怎么应用的,配置哪些寄存器值?同时产生的MCLK的范围、精度是多少?
hi,Wigros Sun:
经过我阅读IMX6ULL Applications Processors Reference Manual资料,关于SAI功能,想要产生3090.94kHz(与上次所说有点偏差)和1634.55kHz的SAI_BCLK时钟,有了以下见解,请给以确认,谢谢。
见资料章节18.5.1.3.4
见资料章节45.3.1.1
Fref=24MHz,DIV_SELECT=32,NUM=888212658,DENOM=1073741823,计算得出PLL output frequency 为787853100,设置Bit Clock Divider 为482,计算得出BCLK=1634550 Hz。
Fref=24MHz,DIV_SELECT=32,NUM=764985569,DENOM=1073741823,计算得出PLL output frequency 为785098760,设置Bit Clock Divider 为254,计算得出BCLK=3090940 Hz。
上述设计是否正确,请给以确认。
由于本设计关乎项目重要参数设计,麻烦帮忙及时、仔细阅读,谢谢!
Hi,
你看到的计算方法没错,clock driver里已经做好了,你只需要通过下面的节点配置clock source parent & output 频率就可以。但是,能不能同时支持你需要的2个不同的频率,你需要自己算一下。
你把这个数值787853100和785098760分别填写到device tree里的:
&clks {
assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <786432000>;
Weidong
PLL4 Audio和PLL5 video可以做成切换的方式。但是默认情况下,clock driver clk_imx6ul.c这个文件做好初始化之后就不改变了。你需要想办法做一个接口来控制PLL4输出频率的切换。我们目前没有现成的方案或者patch来实现这个目的。但是,提供一个思路:
I.MX6Q HDMI,它会根据EDID获取的时序信息来配置PLL5 VIDEO的输出频率,这个就是动态的切换,你可以找一下相关代码,参考一下。或者您在clk_imx6ul.c基础上做一些必要的扩展,提供必要接口给你调用,也可以实现。
weidong
这个问题,您可以查看imx-wm8960.c,这个是machine driver,它内部有一个参数配置函数,这个函数可以获取音频文件的Channels和sample rate,BCLK和LRCLK(帧同步时钟)有对应关系,换句话说,LRCLK是从BCLK计算得到的。一般是BCLK = channels x sample rate(LRCLK,即FS) x bits(量化位数),所以你在SAIx_TXFS脚上要得到相应的频率,可以播放一个文件试试,或者根据fsl_sai.c里方法,自己配置一下。
一般应用时,客户不用自己配置,driver会自己计算并随BCLK一起输出FS。
weidong
Hi,
从I.MX6UL的clock tree来看,SAI的时钟源来自PLL4,系统配置PLL4输出为786432000Hz,经过多次分频之后,得到BCLK。因此,BCLK的实际输出频率与786432000Hz相除,必须是整数。而您需要的2个时钟,都不是整数倍,因此得不到这2个时钟。
&clks {
assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
assigned-clock-rates = <786432000>;
另外,BCLK时钟的输出,是CPU工作在Master模式时,声卡驱动和平台端SAI驱动根据实际播放的音频文件进行配置的,如果不能整除,也会输出一个与理论BLCK非常接近的时钟,让音频播放出来。
如果您正在调试audio codec,您可以配置CPU端I2S为Slave模式,codec做Master模式,由codec提供 BCLK和LRCLK时钟及左右声道同步信号给CPU端。那么,你可以利用codec的PLL配置输出你所需要的频率。
-------------In English--------------
在IMX6ULL Application Processors Reference Manual资料中 :
1、Charpter 18,提及PLL4 also referenced as Audio PLL。是否此PLL4就是Figure 45-2的PLL_OUT呢?此PLL_OUT的范围值是多少,精度多少?
2、同时我想了解一下,章节45.3.1.1 Audio master clock Figure 45-2 SAI master clock generation 中的 Fractional Clock Divider是怎么应用的,配置哪些寄存器值?同时产生的MCLK的范围、精度是多少?