DFSDM(数字滤波器调制器)是 STM32 系列 MCU 的核心模拟外设,支持并行和串行两种输入模式 —— 并行模式适用于内部寄存器 / ADC 数据输入,串行模式适配外部 ΣΔ 调制器、PDM 麦克风等设备。本文基于 ST 官方文档 LAT1545(Rev 1.0),以 Nucleo-H723ZG 开发板为例,详细拆解两种模式的配置逻辑、测试步骤及常见误区,帮助开发者快速落地应用。
资料获取:开发经验 | LAT1545 DFSDM输入模式以及配置说明
1. DFSDM 核心架构简介
DFSDM 的核心是 “通道 + 滤波器” 的组合架构,关键特征如下:
- 输入通道:最多支持 8 个,可配置为并行或串行输入;
- 数字滤波器:共 4 个,支持 Sinc、FastSinc 等多种滤波类型,通道与滤波器可灵活映射(1 个通道可对应多个滤波器,实现多组参数处理);
- 数据流程:外部 / 内部输入数据经通道传入滤波器,滤波后通过寄存器或 DMA 输出,支持数学处理、看门狗检测等扩展功能。
2. 并行输入模式:内部数据输入的两种场景
并行模式的核心是通过 16 位并行寄存器接收数据,适用于内部寄存器手动输入或内部 ADC 模块数据接入,配置重点是明确数据来源和通道 - 滤波器映射。
2.1 场景 1:数据来自内部寄存器(测试 / CPU 参与场景)
适用于算法验证、手动输入测试数据等场景,配置步骤如下:
(1)CubeMx 关键配置
- 模式选择:DFSDM 模式设为「Parallel input」,选择目标通道(示例:Channel 0);
- 数据来源:通道参数中「Multiplexer」设为「Internal_CH」(数据取自内部寄存器);
- 滤波器配置:选择目标滤波器(示例:Filter 0),将 Channel 0 设为规则通道,启用连续模式;
- 滤波参数:配置滤波器类型(如 FastSinc)、过采样率等(根据需求调整)。
(2)核心代码实现
2.2 场景 2:数据来自内部 ADC 模块(ADC-DFSDM 联动)
适用于 ADC 采样后需进一步滤波的场景,需注意 STM32H723 仅支持 ADC1/ADC2 与 DFSDM 联动(对应 DFSDM 通道 0/1),配置步骤如下:
(1)CubeMx 关键配置
- DFSDM 配置:Channel 1 设为并行输入,「Multiplexer」设为「Internal_CH1」(对应 ADC2);
- ADC 配置:ADC2 设为「DFSDM Mode」,指定采样通道(示例:ADC2_INP18),复用 DAC1_OUT1 用于数据输入测试;
- 滤波器配置:Filter 1 绑定 Channel 1,启用连续模式,配置滤波参数。
(2)核心代码实现
2.3 并行模式关键注意事项
- 通道 - 滤波器映射:8 个通道可灵活绑定 4 个滤波器,支持 1 个通道对应多个滤波器(实现多组滤波参数处理);
- 数据打包模式:来自 ADC 的数据无需配置 DATPACK 参数(参考手册明确该参数无效);
- 误区规避:参考手册描述 “ADC8 填充 DFSDM_CHDATIN7R” 易误导,实际 STM32H723 仅 ADC1/2 支持联动,对应 DFSDM 通道 0/1。
3. 串行输入模式:外部设备数据接入(主流场景)
串行模式是 DFSDM 的核心应用场景,支持 SPI、曼彻斯特协议及 PDM 信号,适用于外部 ΣΔ 调制器、PDM 麦克风等设备,以下以 SPI 模式为例说明配置流程。
3.1 CubeMx 关键配置
- 模式选择:目标通道(示例:Channel 4)设为「PDM/SPI input from ch4 and external clock」;
- 串行参数:选择协议类型(示例:SPI with rising edge)、偏移量、位移位等;
- 滤波器配置:Filter 2 绑定 Channel 4,设为注入模式,外部触发源选择 TIM4_TRGO(上升沿触发);
- 触发配置:TIM4 设为内部时钟,配置触发频率,TRGO 事件设为更新事件。
3.2 核心代码实现
3.3 串行模式关键注意事项
- 信号要求:需接入两路信号(CLK 时钟 + DATA 数据),时钟沿需与配置的采样沿一致;
- 协议兼容性:支持大多数 ΣΔ 调制器和 PDM 麦克风,可通过配置采样沿、过采样率适配不同设备;
- 测试技巧:无外部设备时,可通过 GPIO 翻转模拟时钟信号,验证滤波器是否正常工作。
4. 常见误区与避坑指南
- 通道 - ADC 对应误区:参考手册 “ADCy+1 对应 DFSDM 通道 y” 仅为通用描述,STM32H723 实际仅 ADC1/2 支持联动,对应 DFSDM 通道 0/1,其余通道无 ADC 并行输入;
- 滤波器资源限制:DFSDM 仅 4 个滤波器,需合理分配通道映射,避免资源冲突;
- 数据读取时机:需通过 FLTISR 寄存器的标志位(规则组 0x02、注入组 0x01)判断滤波完成,避免读取无效数据;
- 并行模式数据来源:内部寄存器输入适用于测试,ADC 输入适用于实际采样场景,不可混淆配置。
DFSDM 的并行模式聚焦内部数据处理,配置简单灵活;串行模式面向外部设备,是实际应用的主流选择。核心配置逻辑可总结为 “明确数据来源→绑定通道 - 滤波器→配置触发 / 滤波参数→读取结果”,关键是避开 ADC 通道对应、滤波器资源等误区。
1933