定时器输入捕获、频率测量与互补 PWM:死区/刹车/对齐方式
更新时间:2026-09-19。前置:PWM 生成入门。本文讲通用定时器(advanced-control timer)的微架构:捕获侧测频、输出侧互补 PWM 驱动功率器件。
本文要回答的问题
- 输入捕获怎么用「边沿锁存计数值」量出外部周期/脉宽/占空比?
- 高频/低频信号分别该用测周期还是测频(闸门)法?
- 互补 PWM 为什么要插死区,braking 刹车保护什么?
- 边沿对齐 vs 中心对齐、影子寄存器和更新事件会带来哪些坑?
一、定时器核心:自由计数器
prescaler(预分频,影子)
clk_in ──/N──► CNT(向上/向下/中心) ──比较──► CCRx ──► OCx 输出
│
输入通道 TI1/TI2 ──► 滤波/边沿检测 ─► 捕获:跳变瞬间把 CNT 锁进 CCRx- 预分频 PSC:定时器时钟分频,有影子寄存器(改值在更新事件才生效)。
- 自动重装 ARR:计数周期,决定 PWM 频率/超时。
- 比较寄存器 CCR:CNT 与 CCR 关系决定输出翻转或捕获锁存。
二、输入捕获与频率测量
捕获通道在选定边沿把当前 CNT 无软件抖动地硬件锁存进 CCR,并可触发中断/DMA,软件用相邻两次锁存之差算时间(×计数器 tick)。
| 方法 | 做法 | 适合 |
|---|---|---|
| 测周期(周期法) | 用同一沿(如上升沿)两次捕获差值得 T,f=1/T | 低频:一个周期内计数多,分辨率高 |
| 测频(闸门法) | 在已知闸门 T_g 内数信号脉冲数 N,f=N/T_g | 高频:脉冲多,量化误差小 |
低频用周期法会因闸门内脉冲太少误差大;高频用周期法会因单周期 tick 太少分辨率差——经典「频率计量程切换」。
脉宽/占空比:一路信号用两个捕获子通道(或 TI1/TI2 连同一输入)分别抓上升沿和下降沿:
CCR1(上升) → CCR2(下降) 差 = 高电平时间
CCR2(下降) → 下一个 CCR1 差 = 低电平时间;占空比 = 高/(高+低)通道前通常有数字噪声滤波器(连续 N 个采样稳定才认)和捕获预分频(每 1/2/4/8 个边沿捕一次)。高频还可借助定时器级联/从模式(一个定时器做门控另一个计数)。
三、PWM 输出与对齐
- 边沿对齐(向上计数):CNT 0→ARR,CCR 处翻转;所有通道边沿在周期起点对齐,谐波集中。
- 中心对齐(上下计数):CNT 0→ARR→0,每个周期比较两次,输出关于中心对称;纹波频率翻倍、EMI 更友好,用于电机/电源,但频率计算是
fck/[2×(ARR+1)],且 CCR 行为方向相关。
四、互补输出、死区与刹车(驱动开关电源/电机)
驱动半桥上下管(high-side/low-side)需要两路互补信号 CHx/CHxN,但两管绝不能同时导通(直通会短路电源→shoot-through)。开关有开通/关断延迟,因此在「关一个」和「开另一个」之间插入两边都关的死区时间(dead time):
CHx ‾‾‾‾‾‾\______/‾‾‾‾
CHxN ‾‾‾\__________/‾‾‾
◄dead►◄dead 两管都关- 死区由专用寄存器按时钟步长生成,要 > 器件关断延迟但又尽量小(死区占空比损失、发热)。
- 刹车(BKIN/break):外部过流/故障信号硬件直连,触发后立即(不经软件)把 PWM 切到安全电平(关所有管子或预定义电平),同时置故障锁存,软件必须显式清除才能恢复。这是电机驱动/数字电源的安全底线。
- 输出使能 MOE/OISS:高级定时器默认主输出不使能,需开 MOE,否则 PWM 不出现。
五、常见的坑
- PSC/ARR/CCR 影子寄存器:运行中改值当拍不生效(在更新事件才装载),误以为寄存器没写进。
- 更新事件中断早到:刚初始化就进一次 UEV(可置 URS/UDIS 或先清标志)。
- 测频选错法:低频用闸门法数到 0/1 个脉冲、高频用周期法 tick 太少,结果粗糙。
- 捕获溢出不处理:信号快但软件读得慢,CCR 被覆盖(overcapture 标志)丢边沿,应 DMA/快读或降频。
- 32 位/16 位计数器回绕:两捕获点跨回绕没加 ARR 修正,周期算成负数/小值。
- 死区太小直通:上下管交叠,过流炸管;必须按开关器件 t_off 留足。
- 死区太大:有效占空比下降、体二极管导通时间长、发热与失真。
- 忘开 MOE/刹车一直锁存:高级定时器配完无输出,或故障后清不掉 BKIN 不能恢复。
- 中心对齐频率按边沿对齐算:少除了 2,电机/电源频率差一倍。
- 刹车极性/安全电平配反:故障时反而开通管子。
- 滤波/分频与被测速率不匹配:滤波器吃掉窄脉冲或捕获分频设太大漏掉要测的沿。
- 互补通道引脚没成对 mux/没配死区时钟:CHxN 无输出,见 PinMux。
相关与延伸
PWM 基础直觉见 PWM 生成;引脚输出复用见 PinMux;过采样见 ADC 过采样;精确时基来源见 SoC 时钟控制器。
总结
通用定时器=预分频自由计数器+比较/捕获:输入侧在边沿硬件锁存 CNT,低频用周期法(两次同沿差)、高频用闸门测频法(已知门内数脉冲),双沿捕获算占空比并防 overcapture;输出侧 PWM 分边沿对齐与中心对齐(频率差 2 倍),驱动半桥时用互补 CHx/CHxN 加略大于关断延迟的死区防直通,并由 BKIN 刹车不经软件立即切安全电平——影子寄存器延迟生效、测频法选错、跨回绕和死区/刹车配置错误是最危险的四类坑。