imx6 solo平台,csi_mclk如何设置所需要的时钟频率?是否能找到能被44100整除的频率

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

imx6 solo平台,csi_mclk如何设置所需要的时钟频率?是否能找到能被44100整除的频率

3,794 Views
yongheluo_hotma
Contributor III

Dear Sir,

       因为敝司的板子上需要一个mclk时钟供给音频音频,而这颗音频芯片需要能够被44100或48000整除的时钟,如:

       能被44.1K整除的:11.2896MHz, 16.9344MHz,22.5792MHz

       能被48K整除的:12.2880MHz, 18.4320MHz,24.5760MHz。

      当前,我们采用的是时钟引脚是:MX6QDL_PAD_GPIO_19__CCM_CLKO1

在设备树中配置如下:

      clocks = <&clks 201>;
      clock-names = "csi_mclk";
      mclk = <11289600>; /* default is 24000000 */
      mclk_source = <0>;

在代码中,使能这个时钟:

    cs4344_mclk = devm_clk_get(&pdev->dev, "csi_mclk");

    clk_prepare_enable(cs4344_mclk);

实际出来的时钟频率是:24MHz

在:Change freqency of mclk for ov5640_mipi with imx6dl  中说是可以改,但没看明白怎么改。

因此,我的问题是:

1)如何修改使用不同的时钟?

    imx_clk_set_parent(clk[IMX6QDL_CLK_CKO2_SEL], clk[IMX6QDL_CLK_OSC]);
    imx_clk_set_parent(clk[IMX6QDL_CLK_CKO], clk[IMX6QDL_CLK_CKO2]);

2)平台中是否有支持如下频率的时钟(只要找到其中一个即可),如:    

       能被44.1K整除的:11.2896MHz, 16.9344MHz,22.5792MHz

       能被48K整除的:12.2880MHz, 18.4320MHz,24.5760MHz。

3)在mach-imx6q.c中,找到:

      clk_set_parent(pll4_sel, lvds2_in);
      clk_set_rate(pll4_audio_div, 786432000);
     clk_set_rate(esai_extal, 24576000);

     不知道能否用这个时钟源?或者最好能与i2s的bclk共用一个时钟源?

  不知描述是否清楚。谢谢!

Yonghe.Luo

Labels (4)
0 Kudos
2 Replies

2,341 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hello Yonghe,

     I.MX6Q的CCM_CKLO1/2,出不来你说的那几个时钟。其实,你没必要非要弄这些时钟出来。每类型codec的MCLK输入,都是有一个范围,而并非是一定要11.2896M,22.5792MHz等等。codec内部有PLL电路,可以对输入的MCLK进行变频处理,得到你所需要的时钟(通常叫sys_clk),这个sys_clk才是I2S或者PCM的bitclock。

     如果你的codec要求,一定需要你提到的那些时钟,你就必须要外接晶体或者OSC了。

Have a nice day!

TIC weidong sun

0 Kudos

2,341 Views
yongheluo_hotma
Contributor III

Hello Weidong,

     我们选用的这颗音频IC必须使用MCLK信号来自动识别音频的采用率,因此MCLK必须是采样率的整数倍(128x或256x等)。

    您说“如果你的codec要求,一定需要你提到的那些时钟,你就必须要外接晶体或者OSC了”。是不是说平台自身是产生不了我所需要的这些时钟的,对吧?

     如果答案是肯定的,那么,下面的描述就可以忽略了。

     比如:如果我采用PCM1的来产生mclk,目前读出这个CLK的时钟是66MHz,而66MHz是分不出我们所需要的频率的。因此,我想问一下:

    1)芯片内部是否有其他时钟可以比较接近的频率,如:修改pcm的时钟树(set_parrent) ?或者有其他时钟引脚?

    2)是否可以使用I2S的时钟,同时产生MCLK、Bitclock、fsclock?(其中Mclk = 256 * fsclock)

     可能表述不够清晰。

      谢谢!

    Yonghe.Luo

0 Kudos