MICFIL数字麦克风参数计算

MICFIL是RT系列MCU中的一个数字麦克风接口模块,典型的MICFIL一般支持高达8路的数字麦克风PDM信号的输入。我们在之前的博文中提到过数字麦克风,这里对于数字麦克风的原理就不做解释了,只是介绍一下这个模块接收数据的时候要注意的一些设置。

数字麦克风一般有一个时钟输入和数据输出信号,MICFIL中接口的8个通道会公用同一个时钟,而数据则是两个通道公用一个数据线。

配置数字麦克风的时候需要注意的东西主要有以下几个部分:

  1. 数据输出速率
  2. 超采样率(Over Sample Rate, OSR)
  3. PDM时钟频率
  4. 分频系数
  5. 模块时钟频率
  6. 使能的通道数

这几个数据之间是有非常重要的关系的,我们可以通过一些公式对它们的值进行计算。

PDM频率计算

首先是PDM时钟频率,它和数据超采样率和输出速率有如下的关系:

PDM_Clock_Rate = Output_Data_Rate * 8 * Over_Sample_Rate

假定数据输出速率是48K,OSR = 16,那么PDM_Clock_Rate = 48K * 8 * 16 = 6.144MHz,这个频率也是麦克风需要支持的频率。这个公式里面的8是一个固定的系数。

分频系数的计算

分频系数和PDM频率,信号质量系数(K),输入时钟频率以及工作的通道数目(Enabled Channel EC)有关。相关的公式如下:

Floor(K * CLKDIV) >= K * (10 + 125 * EC) / (8 * OSR)

比如对于高质量数据的输出,K = 0.5, 总共有4个通道工作,那么floor(0.5 * CLKDIV) >= 0.5 * (10 + 125 * 4)/(8 * 4) = 1.9922也就是0.5 * CLKDIV >= 2, 最终CLKDIV >= 4.

计算模块时钟

模块时钟可以根据上面得到的一些结果进行计算,计算公式如下:

MICFIL_Clock_Rate = CLKDIV * 8 * OSR * Output_Data_Rate

比如上面的例子中我们可以计算MICFIL_Clock_Rate = 4 * 8 * 16 * 48K = 24.58MHz

以上就是我们得到的一些参数,当把这些参数使能之后,将相应的通道打开,然后使能模块,数据就会在Data寄存器中出来。MICFIL的数据本身是有FIFO的,可以通过Polling,中断和DMA的方式接收。


本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。

相关文章

仅有 1 条评论
  1. Ted

    請問一下,分頻係數的計算中,10+125是怎麽得來的呢

    Ted 回复
发表新评论