400-035-6699
当前位置: 首页 » 技术支持 » 博文资讯 »

\"DFSDM模块配置教程:详解步骤与最佳实践\"

在使用STM32H743的DFSDM模块时,正确的配置对于确保数据准确性和系统稳定性至关重要。以下是如何配置DFSDM模块以适应特定应用需求的详细步骤。
首先,我们需要了解客户的具体需求。客户使用的是NUCLEO-H743开发板,并需要处理16kHz的24位音频数据。这意味着我们需要设置一个适当的参数链来处理音频数据。
参数链从PDMMic开始,获取PDM数据,然后通过滤波器,设置过采样率,再经过积分器,最后进行右移位和偏移补偿,得到最终的采样数据。
接下来,我们要计算Clock out (CKOUT)。根据公式Fs = Fclockout / (Fosr * Iosr),我们可以得出Fclockout = Fs * Fosr * Iosr。在这个例子中,Fs是16kHz,Fosr为滤波器的过采样率,设为128,Iosr为积分器的过采样率,设为1。因此,Fclockout = 16kHz * 128 * 1 = 2.048MHz。
根据这个计算,我们可以设置相应的寄存器,具体的配置可以参考所提供的图片资料。
然后,我们需要计算SAI clock。根据公式(FSAIclock / Divider) = Fclockout,我们得出FSAIclock = Fclockout * Divider。在这个案例中,Divider设为7,Fclockout为2.048MHz,因此FSAIclock = 2.048MHz * 7 = 14.336MHz。这意味着SAI clock需要配置为14.336MHz。
滤波器阶数FORD取4,即sinc 4 filter type。然后,我们计算右移位数。使用公式B = N*log2(M) + Bin,其中N是滤波器阶数,M是滤波器过采样率,Bin是积分器过采样率。根据我们的设置,N为4,M为128,Bin为1。因此,位宽为4 * log2(128) + 1 = 29位。积分器处理后的数据需要右移5位,然后在STM32CubeMX中设置为24位。
最后,我们在STM32CubeMX中配置时钟参数,确保SAI clock设置为14.336MHz。相关的配置界面截图也已在资料中提供。
总结来说,DFSDM模块的寄存器配置需要精心计算以确保正确性。当遇到配置问题时,可以参考上述步骤进行操作。正确的配置不仅能满足客户对音频数据的需求,还能保证系统的稳定运行。希望这个指南能帮助工程师们顺利完成DFSDM模块的配置任务。

1、引言

\

客户在使用 STM32H743 的 DFSDM 模块时,配置有误。于是协助客户按照下面的方法进行配置并分享之。

2、参数的计算

使用 NUCLEO-H743 开发板进行测试。由于客户需要 16KHz 音频数据, 24bits 的音频数据,因此配置如下。

PDMMic -> PDM data -> 滤波器类型 -> 过采样率 Fosr(滤波器)-> 过采样率 Isor(积分器)-> 右移位器 -> 偏移补偿 -> 采样数据

Clock out (CKOUT)的计算

Fs= Fclockout/( Fosr*Iosr)

Fs= 16kHz 音频数据

Fosr:滤波器过采样率,也就是抽取率,在这里取 128

Iosr:积分器过采样率,在这里取 1

则 Fclockout = 2.048MHz

相应的寄存器配置可以参考下图:

17241b22-55e8-11ed-a3b6-dac502259ad0.png

174a3de8-55e8-11ed-a3b6-dac502259ad0.png

2. SAI clock 的计算

(FSAIclock/ Divider) =Fclockout => FSAIclock = Fclockout * Divider

FSAIclock:当时钟源选 audio clock 时,即 STM32CubeMX 中 Output clock:

seLECtion-> source of output clock is audio clock.

Divider : Audio clock 经过的预分频比,在下面的配置中取 7(见图 3.

Output Clock 配置)

Fclockout:为 2.048Mhz

则 FSAIclock = (Fclockout * Divider) = 2.048 * 7 = 14.336MHz

因此下图中的 SAI clock 需要配置到 14.336Mhz。

滤波器阶数 FORD:取 4,即 sinc Order : sinc 4 filter type.

3. 右移位数的计算

B = N*log2(M) +Bin

B:中间变量位宽

N:Ford,滤波器阶数,此例中取 sinc 4 阶。

M:滤波器过采样率,抽取率,此例中取 128 ,见图 4Channel 配置,Fosr。Bin:积分器过采样率,滤波器输入位宽,此例中取 1

位宽 = 4* log2(128)+1 = 4*7+1 =29(位)

因此积分器处理后的数据需要右移 5 位,然后变为 24 位。STM32CubeMX 中 Right

Bit Shift = 0x5.

也可以参考下表来规划右移位:

190a8aca-55e8-11ed-a3b6-dac502259ad0.png

3、STM32CubeMX 的配置

根据上面的计算值配置时钟参数。SAI clock 配置为 14.336Mhz。

1945854e-55e8-11ed-a3b6-dac502259ad0.png

19c1ce56-55e8-11ed-a3b6-dac502259ad0.png

19e2dfe2-55e8-11ed-a3b6-dac502259ad0.png

1a23f91e-55e8-11ed-a3b6-dac502259ad0.png

1a64b8aa-55e8-11ed-a3b6-dac502259ad0.png

1a8d3122-55e8-11ed-a3b6-dac502259ad0.png

1ac29c86-55e8-11ed-a3b6-dac502259ad0.png

3、小结

关于DFSDM 模块寄存器的配置,需要计算合适的参数值方可进行。需要时可以参考上面内容来操作。

审核编辑:汤梓红

【限时免费】一键获取网络规划系统模板+传输架构设计+连通性评估方案

STM32相关文章

服务电话:
400-035-6699
企服商城