浅谈DFSDM 模块的配置

电子说

1.3w人已加入

描述

 

1、引言

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

2、参数的计算

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

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

1)Clock out (CKOUT)的计算

Fs= Fclockout/( Fosr*Iosr)Fs= 16kHz 音频数据Fosr:滤波器过采样率,也就是抽取率,在这里取 128Iosr:积分器过采样率,在这里取 1则 Fclockout = 2.048MHz相应的寄存器配置可以参考下图:

STM32

STM32

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) +BinB:中间变量位宽N:Ford,滤波器阶数,此例中取 sinc 4 阶。M:滤波器过采样率,抽取率,此例中取 128 ,见图 4Channel 配置,Fosr。Bin:积分器过采样率,滤波器输入位宽,此例中取 1位宽 = 4* log2(128)+1 = 4*7+1 =29(位)因此积分器处理后的数据需要右移 5 位,然后变为 24 位。STM32CubeMX 中 RightBit Shift = 0x5.也可以参考下表来规划右移位:

STM32

3、STM32CubeMX 的配置

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

STM32

STM32

STM32

STM32

STM32

STM32

STM32

3、小结

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

来源:STM32单片机

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分