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
相应的寄存器配置可以参考下图:
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.
也可以参考下表来规划右移位:
3、STM32CubeMX 的配置
根据上面的计算值配置时钟参数。SAI clock 配置为 14.336Mhz。
3、小结
关于DFSDM 模块寄存器的配置,需要计算合适的参数值方可进行。需要时可以参考上面内容来操作。
审核编辑:汤梓红
-
模块
+关注
关注
7文章
2749浏览量
48068 -
寄存器
+关注
关注
31文章
5388浏览量
121777 -
STM32H743
+关注
关注
0文章
24浏览量
1868
原文标题:工程师笔记|DFSDM 模块的配置
文章出处:【微信号:STM32_STM8_MCU,微信公众号:STM32单片机】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
关于STM32L476 DFSDM时钟配置的疑问求解
DFSDM如果使用内部并行数据输入,输入数据的最大频率是多少?
使用dfsdm单个麦克风录音出现录音重复问题,怎么解决?
使用STM32H750 DFSDM滤波,输出与设置不一致的原因?
只想采集20-2000Hz以内的音频信号改怎么配置DFSDM?
使用STM32H7的DFSDM模块对NSI1306M25电信号进行采集遇到的几个疑问求解
使用STM32H7的DFSDM获取注入通道值时的参数不匹配是怎么回事?
STM32L4的DFSDM外设采集PDM数字MIC后的数据
STM32中的DFSDM应用介绍
DFSDM外设的代码生成问题求解
在“DFSDM 配置器”表中,B6单元格上的“采样频率”是什么意思?
STM32使用片内外设DFSDM的应用问题

评论