STM32F103C8T6 TIM定时器输入捕获
1 定时器输入捕获(Input Capture)
- 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数
- 每个高级定时器和通用定时器都拥有4个输入捕获通道
- 可配置为PWMI模式,同时测量频率和占空比
- 可配合主从触发模式,实现硬件全自动测量
2 频率测量
误差分析:
- 测频法误差:主要来源于闸门时间的精度和计数误差,适用于高频信号测量。
- 测周法误差:主要受标准频率精度和计时分辨率影响,适用于低频信号测量。
- 选择依据:当信号频率高于中界频率时,优先使用测频法;低于中界频率时,优先使用测周法。
3 输入捕获通道
图中是 STM32 定时器的输入捕获通道(以通道1为例) 的功能框图,展示了捕获比较模块输入部分的工作流程。下面逐步分析:
3.1 信号路径概述
输入信号为 TI1(外部引脚输入),其经过多个处理模块后生成最终的捕获值(IC1PS 输出)。各模块的作用如下:
1️⃣ 滤波器 + 向下计数器(fDTS 频率)
-
对 TI1 信号进行滤波,以消除毛刺。
-
输出信号为
TI1F
,供后续模块使用。 -
控制位:
ICF[3:0]
(在寄存器TIMx_CCMR1
中)
2️⃣ 边沿检测器
-
检测
TI1F
的上升沿或下降沿。 -
输出两个信号:
TI1F_Rising
和TI1F_Falling
。
3️⃣ 边沿选择器(异或门)
-
根据选择,上升或下降沿触发有效。
-
如果都选,输出为边沿变化(XOR结果)。
-
最终输出信号为
TI1F_ED
→ 用于 从模式控制器。
4️⃣ TI1FP1 与 TI2FP1
-
TI1FP1
是选择后的通道1输入。 -
TI2FP1
是通道2输入(与 TI2F_rising/falling 有关)。
5️⃣ 多路选择器(MUX)
用于确定最终捕获值 IC1
的来源:
-
01
:TI1FP1 -
10:TI2FP1
-
11
:TRC(从模式控制器输出)
由 CC1S[1:0]
控制(TIMx_CCMR1
中配置)
6️⃣ 分频器
-
对最终的捕获信号进行分频:
/1
,/2
,/4
,/8
-
由
ICPS[1:0]
控制(TIMx_CCMR1
) -
输出为
IC1PS
7️⃣ 控制位
-
CC1E
:使能捕获(在TIMx_CCER
) -
CC1P
:捕获极性(上升/下降沿)
3.2 用途总结
该输入捕获路径主要用于:
-
测量脉冲宽度:通过捕获上升沿和下降沿的计数值,计算高/低电平时间。
-
频率测量:通过两次上升沿之间的时间差来计算频率。
-
外部事件同步:结合从模式使用,实现外部事件触发同步。
📘 关键寄存器参考
控制项 | 寄存器/字段 |
---|---|
输入捕获滤波 | TIMx_CCMR1.ICF[3:0] |
输入通道选择 | TIMx_CCMR1.CC1S[1:0] |
分频系数设置 | TIMx_CCMR1.IC1PS[1:0] |
捕获极性选择 | TIMx_CCER.CC1P |
捕获使能 | TIMx_CCER.CC1E |
4 主从触发模式
🔧 作用:STM32 定时器的主从模式允许多个定时器同步工作,实现以下目标:
-
一个定时器作为主定时器(Master),控制一个或多个其他定时器的启动/复位。
-
另一个定时器作为从定时器(Slave),在接收到触发事件(TRGI)时执行特定操作。
4.1 关键模块组成
1. 主模式控制器(Master Mode)
-
使用
TIMx_CR2.MMS[2:0]
控制输出触发源 TRGO(Trigger Output)。 -
可以选择以下事件作为触发输出:
MMS[2:0] TRGO 输出内容 000 复位 001 启动 010 更新事件(最常用) 011 输出比较 100 比较通道1的输出 101 比较通道2的输出 110 比较通道3的输出 111 比较通道4的输出
2. 从模式控制器(Slave Mode)
-
使用
TIMx_SMCR.SMS[2:0]
配置从模式选择(Slave Mode Selection) -
使用
TIMx_SMCR.TS[2:0]
选择触发输入源(Trigger Source)
常见从模式(SMS):
SMS[2:0] | 模式 | 描述 |
---|---|---|
000 | 关闭 | 定时器独立运行 |
001 | 编码器模式1 | 计数器方向和增量由 TI1 决定 |
010 | 编码器模式2 | TI2 |
011 | 编码器模式3 | TI1 和 TI2 |
100 | 复位模式 | 在触发信号到达时复位计数器 |
101 | 门控模式 | 触发信号存在期间计数器计数 |
110 | 触发模式 | 触发信号到达时启动计数器 |
111 | 外部时钟模式1 | 外部触发信号作为时钟源 |
触发源选择(TS):
TS[2:0] | 触发源 | 描述 |
---|---|---|
000 | Internal Trigger 0 (ITR0) | 来自其他定时器(如 TIM1 的 TRGO) |
001 | ITR1 | TIM2 的 TRGO 等 |
010 | ITR2 | … |
011 | ITR3 | … |
100 | TI1 Edge Detector | 来自 TI1 的上升/下降沿 |
101 | Filtered Timer Input 1 | TI1FP1 |
110 | Filtered Timer Input 2 | TI2FP2 |
111 | 外部触发输入(ETRF) | 外部引脚 |
5 输入捕获基本结构
分析:
当外部信号通过 GPIO 引脚输入后,首先经过滤波器处理,然后进入边沿检测电路,根据设定的极性(上升/下降沿)触发输入捕获单元1。接着,信号经过分频器送入 CCR1 捕获/比较寄存器,同时 CNT(计数器)开始计数。当检测到指定边沿后,CNT 的当前值会被锁存到 CCR1 中,并根据触发源设置决定是否复位 CNT(进入从模式)。PSC 预分频器和 ARR 自动重装载器则协助时基单元对输入信号进行更精确的计时与频率测量,从而完成对输入脉冲周期或高/低电平宽度的捕获与计算。此机制常用于测量信号频率或周期。
6 PWMI基本结构
PWMI(Pulse Width Measurement Input,脉宽测量输入)模式 是 STM32 定时器的输入捕获模式 的一种常用配置,常用于测量一个周期性PWM信号的 周期 和 高电平时间,从而计算出占空比和频率。
PWMI 本质上是 利用定时器的两个通道 来 分别捕获PWM信号的上升沿和下降沿,典型结构包括:
-
通道1(CH1):配置为捕获上升沿(用于测周期)
-
通道2(CH2):配置为捕获下降沿(用于测高电平时间)
-
一个计数器(CNT):持续计数,用于计算边沿之间的时间
-
两个捕获寄存器 CCR1 和 CCR2:分别记录上升沿和下降沿时刻
-
从模式控制器(SMS):配置定时器在检测到边沿时自动复位计数器,便于周期测量
6.1 🔁PWMI 工作流程
-
GPIO 输入引脚连接到定时器的 CH1 引脚(PWM 信号接入);
-
配置通道1为输入捕获、上升沿触发(测量周期);
-
配置通道2为输入捕获、下降沿触发(测量高电平);
-
配置定时器为 从模式 + 触发模式为 TI1FP1(通道1输入),在每次上升沿时 自动清零 CNT;
-
信号开始进入,定时器开始工作:
-
在 上升沿 到来时:CNT 被清零,CCR1 捕获此时 CNT=0;
-
在 下降沿 到来时:CNT 增加了一段时间,CCR2 捕获高电平宽度;
-
在下一次 上升沿 到来时:CNT 值即为 完整周期,再次被捕获到 CCR1;
-
-
占空比计算:
6.2 ✅ 总结一句话流程:
PWMI 模式通过将定时器两个通道配置为分别捕获 PWM 信号的上升沿和下降沿,使定时器在每次上升沿自动清零计数器,从而实现对信号周期和高电平宽度的精确测量,便于计算频率和占空比。
7 编码器接口简介
- 编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度
- 每个高级定时器和通用定时器都拥有1个编码器接口
- 两个输入引脚借用了输入捕获的通道1和通道2
7.1 正交编码器
7.2 编码器接口基本结构
7.3 工作模式
7.3.1 实例(均不反向)
7.3.2 实例(TI1反向)
关注我:
-
CSDN博客:小程同学>o<-CSDN博客