输入捕获简介
应用场景
- 频率测量:
捕获连续两个上升沿(或下降沿)的计数值,计算时间差,进而得到信号频率(频率 = 定时器时钟频率 / 时间差)。
例:若定时器时钟为 72MHz,两次上升沿捕获的计数值差为 7200,则信号周期为 100μs,频率为 10kHz。 - 脉冲宽度测量:
先捕获上升沿(记录计数值T1),再捕获下降沿(记录计数值T2),则脉冲宽度 = (T2 - T1) / 定时器时钟频率。
例:T2 - T1 = 3600,时钟 72MHz,则宽度为 50μs。 - 占空比测量:
结合周期和脉冲宽度计算:占空比 =(脉冲宽度 / 周期)× 100%。 - 外部事件计数:
每捕获一次边沿,计数器加 1,用于累计外部脉冲(如旋转编码器的脉冲数)。
输入捕获基本结构
- 核心模块与信号流
- GPIO:外部信号输入引脚(如连接编码器、脉冲信号)。
- 输入捕获单元 1:
-
- 滤波器:滤除输入信号的高频噪声。
-
- 边沿检测 + 极性选择:检测信号边沿(上升 / 下降沿),并输出 TI1FP1 信号。
-
- 分频器:对 TI1FP1 分频(可选 1/2/4/8 分频,控制捕获频率)。
-
- CCR1 捕获 / 比较器:捕获信号触发时,锁存当前定时器计数值(CNT)到 CCR1。
- 时基单元:
-
- PSC 预分频器:对定时器时钟分频,控制计数器(CNT)的计数频率。
-
- CNT 计数器:向上 / 向下计数的核心寄存器。
-
- ARR 自动重装器:设置计数器溢出值,决定计数周期。
- 触发源选择 + 从模式:
TI1FP1 作为触发源,配置 从模式为 Reset(触发时重置 CNT = 0)。
- 工作流程(以脉冲信号输入为例)
外部脉冲经 GPIO 输入,依次通过滤波器、边沿检测,输出 TI1FP1。
TI1FP1 一路进入 输入捕获单元,触发 CCR1 锁存当前 CNT 值(记录脉冲边沿时刻)。
另一路经 触发源选择,进入 从模式 Reset,触发定时器 CNT 重置为 0,实现 “脉冲边沿同步复位计数器”(每次脉冲边沿到来,CNT 清零并重新计数)。
PWMI基本结构
完整流程总结(以电机正转为例)
编码器正转 → A 相超前 B 相 → 输出 TI1FP1(A 相)、TI1FP2(B 相)正交信号。
信号经滤波、边沿检测 → 定时器识别正转方向 → CNT 自动加 1(每个边沿触发一次计数)。
若使能从模式 Reset → 特定边沿触发时 CNT 清零,重新开始计数。
每次边沿触发时 → CCR1/CCR2 锁存当前 CNT → 软件读取 CCR 计算速度,或直接读 CNT 获取位置。