在伺服、变频器这类功率驱动场景里,Sigma-Delta ADC 采样搭配 DFSDM 滤波是很常见的方案。一旦采样值超限,必须立刻切断 PWM 输出,也就是硬件 “封波”,靠软件关 PWM 根本来不及。
ST 应用笔记 LAT1364 专门讲了:如何用 DFSDM 模拟看门狗,直接硬件触发 TIM1 刹车封波,全程硬件自动响应,不用 CPU 干预。本文把配置逻辑、寄存器写法、关键禁忌一次性讲透,直接可用于电机 / 变频器项目。
资料获取:【应用笔记】LAT1364 DFSDM对TIM1的封波功能及注意事项
1. 适用场景与核心思路
- 芯片:STM32H723(同系列 H7 通用)
- 模块:DFSDM + TIM1(高级定时器)
- 目标:采样超阈值 → DFSDM 输出 Break → TIM1 立即封波(MOE=0)
- 优势:硬件级响应、无中断延迟、保护更可靠
DFSDM 这里不只是滤波,还充当硬件过流 / 过压保护检测器。
2. DFSDM → TIM1 封波连接关系
DFSDM 可以输出多路 Break 信号,直接连到定时器刹车输入端:
- dfsdm_break[0] → TIM1 break2 / TIM16 break
- dfsdm_break[1] → TIM8 break / TIM17 break
本文案例:dfsdm_break [0] 作为 TIM1 刹车源,来自 Filter0 输出。
3. DFSDM 配置要点(CubemX 不全,需寄存器补全)
DFSDM 的 Analog Watchdog(AWD)是封波触发源,CubemX 无法完全配置,必须手动写寄存器。
3.1 基础模式配置
- Channel0:并行输入模式(测试用,实际常用串行)
- Filter0:连续转换模式
- AWFSEL 设为 0:使用 Filter 输出作为看门狗数据源
3.2 关键寄存器配置(直接可用)
// 关闭 AWFSEL(使用 Filter 输出)
hdfsdm1_filter0.Instance->FLTCR1 &= ~(1<<30);
// 使能通道 0 模拟看门狗
hdfsdm1_filter0.Instance->FLTCR2 |= (0x1<<16);
// 上限阈值 + Break 绑定
hdfsdm1_filter0.Instance->FLTAWHTR = ((0x400*FILTER0_MUL)<<8) + 0x01;
// 下限阈值 + Break 绑定
hdfsdm1_filter0.Instance->FLTAWLTR = ((0x50*FILTER0_MUL)<<8) + 0x01;
- 超限 → AWHIF/AWLIF 置位 → 自动输出 Break 信号
- 不需要 CPU 中断,硬件直接关 PWM
4. TIM1 刹车配置(CubemX 可设)
在 TIM1 Break 配置中:
-
- BRK State:Enable
- BRK Polarity:High
- BRK Filter:必须设为 0(重点!)
- BRK Sources:DFSDM Enable 打开 DFSDM 作为刹车源
5. 封波保护效果(实测逻辑)
- 正常状态:采样值在上下限之间 → PWM 正常输出,MOE=1。
- 低于下限:采样值 < 下限 → AWLTF 置位 → MOE 自动清 0 → PWM 立即关闭。
- 高于上限:采样值 > 上限 → AWHTF 置位 → MOE 自动清 0 → PWM 立即关闭。
全程硬件自动完成,保护速度远快于软件。
6. 最关键禁忌:BRK Filter 必须 = 0
这是 LAT1364 强调的核心注意事项:
哪怕看门狗标志已经置位,PWM 也不会关。
7. 工程师最简记忆版
- DFSDM Analog Watchdog 超限 → 硬件输出 Break 信号
- Break 直接连 TIM1 刹车,秒级关 PWM
- CubemX 只能配一半,阈值与通道必须寄存器配置
- TIM1 BRK Filter 必须设为 0,否则封波失效
- 适合伺服、变频器、UPS 等高速保护场景
按 LAT1364 这套配置,DFSDM+TIM1 硬件封波一次调通,安全可靠。
254