TIM 输入捕获

发布于:2025-07-27 ⋅ 阅读:(18) ⋅ 点赞:(0)

目录

IC 输入捕获

频率测量

输入捕获通道

主从触发模式

输入捕获基本结构

PWMI基本结构

TIM 输入捕获相关函数

TIM_ICInitTypeDef 结构体参数


本篇文章内容的前置知识为 TIM输出比较,如果不了解,可点击链接学习

TIM输出比较-CSDN博客

IC 输入捕获

        输入捕获(Input Capture, IC)是一种用于测量外部信号特征的技术,通常用于测量PWM波形的频率、占空比、脉冲间隔和电平持续时间等参数。它在定时器的输入通道上工作,具体来说,当输入引脚检测到指定的电平跳变时,当前定时器的计数值(CNT)会被锁存到捕获比较寄存器(CCR)中。
        在STM32的定时器中,每个高级定时器和通用定时器都配备了多个输入捕获通道,通常是四个通道。输入捕获模式可以配置为PWM输入模式(PWMI),此模式可以同时测量频率和占空比。
        此外,输入捕获功能还支持主从触发模式,允许硬件自动实现测量过程,极大地提高了测量的精度和效率,避免了软件干预的延迟。

频率测量

测频法:在闸门时间T内,对上升沿计次,得到N,则频率
𝑓_𝑥=𝑁 / 𝑇
测周法:两个上升沿内,以标准频率fc计次,得到N ,则频率
𝑓_𝑥=𝑓_𝑐  / 𝑁      (FC是标准频率,一个标准频率周期是1/fc,N个周期就是N/fc)
中界频率:测频法与测周法误差相等的频率点
𝑓_𝑚=√(𝑓_𝑐  / 𝑇)

高频用测频法,低频用测周法
 

输入捕获通道

1. TI1:外部输入引脚信号。
2. 滤波器 + 向下计数器:对输入信号进行滤波,滤波等级由 TIMx_CCMR1.ICF[3:0] 配置。
3. 边沿检测器:检测上升沿 TI1F_Rising 和下降沿 TI1F_Falling。
4. 边沿选择:通过 TIMx_CCER.CC1P 选择捕获上升沿还是下降沿。
5. 输入选择器:
        选择来自 TI1、TI2 或 TRC(从模式控制器)的输入;
        由 TIMx_CCMR1.CC1S[1:0] 决定。
6. 分频器:对捕获信号进行分频,设置由 TIMx_CCMR1.ICPS[1:0] 控制,可选 /1、/2、/4、/8。
7. CC1E 使能位:来自 TIMx_CCER,控制是否使能捕获。

当 CC1P = 0 时:通道 1 的捕获 / 比较操作在上升沿触发(默认值)
当 CC1P = 1 时:通道 1 的捕获 / 比较操作在下降沿触发。

主从触发模式

主模式通过 TRGO(触发输出)信号向外部或其他定时器输出触发事件,常见触发源包括:
Reset:计数器清零
Enable:启动信号
Update:溢出更新事件
OCx/OCxREF:输出比较事件(如 OC1REF)
主模式适用于一个定时器控制另一个定时器的工作。

从模式通过 TRGI(触发输入)信号作为启动/同步源,触发来源包括:
内部触发:ITR0~ITR3(来自其他定时器的 TRGO)
外部引脚:TI1FP1、TI2FP2、ETRF
触发模式选择:如 Reset、Gated、Trigger、Encoder 等模式
从模式常用于多个定时器同步或实现编码器等应用。

简而言之:
主模式产生触发信号,TRGO 输出;
从模式接收触发信号,TRGI 输入,并根据选择的工作模式做出响应。

输入捕获功能本身依赖的是从模式,而不是主模式。

输入捕获基本结构

滤波器:滤除毛刺干扰
边沿检测:识别上升/下降沿
极性选择 + 分频器:控制捕获触发时机
捕获比较器(CCR1):在检测到边沿时,锁存 CNT 的值
CNT 计数器:持续计时
PSC 预分频器:控制计数速率
ARR 自动重装载器:设置最大计数值
TRGI(触发源)+ Reset 模式:每次信号来时重置 CNT,从而形成周期测量

应用场景
每次输入信号到来,CCR1 记录上一次计数值,CNT 被清零重计,从而可测出输入信号的周期。结合系统时钟,即可计算频率

PWMI基本结构

工作原理:
CCR1 捕获 PWM 上升沿时 CNT 的值,并将 CNT 清零(由从模式 Reset 控制)
CCR2 捕获下一个下降沿时 CNT 的值。

硬件流程:
GPIO → 滤波 → 边沿检测
分别输出 TI1FP1(上升沿) 和 TI1FP2(下降沿)
CCR1 捕获上升沿并触发 CNT 复位
CCR2 捕获下降沿时的 CNT 值
通过 CCR1 和 CCR2 的值可计算:
周期 = 上升沿到下一次上升沿
高电平时间 = 上升沿到下降沿
占空比 = CCR2 / CCR1
这种方式常用于PWM信号测量频率+占空比

TIM 输入捕获相关函数

函数名 功能 主要参数说明
TIM_PWMIConfig() 配置定时器为 PWM 输入模式:使用两个通道自动进行频率和占空比测量

TIM3:指定定时器&TIM_ICInitStructure:

输入捕获配置结构体

TIM_SelectInputTrigger() 选择定时器的输入触发源(ITRx、TIxFPx、ETR等)

TIM3:定时器

TIM_TS_TI1FP1:

触发源,TI1 的滤波输入

TIM_SelectSlaveMode() 设置定时器的从模式,用于启动/复位计数器的方式

TIM3:定时器;

TIM_SlaveMode_Reset:

上升沿触发时将 CNT 归零

补充:TIM_ICInit()  用于配置指定定时器通道的输入捕获参数

TIM_ICInitTypeDef 结构体参数

成员 含义
TIM_Channel 选择输入捕获通道,如 TIM_Channel_1
TIM_ICPolarity 边沿极性,TIM_ICPolarity_Rising 表示上升沿触发
TIM_ICSelection 输入通道来源选择,TIM_ICSelection_DirectTI 表示直接连接 TIx
TIM_ICPrescaler 输入捕获的预分频,TIM_ICPSC_DIV1 表示每次有效沿都触发捕获
TIM_ICPrescaler 输入滤波器(0x0~0xF),用于抗抖动,值越大越稳定


尚未完结


网站公告

今日签到

点亮在社区的每一天
去签到