当前位置: 首页 > news >正文

TIM 输入捕获

目录

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),用于抗抖动,值越大越稳定


尚未完结

http://www.dtcms.com/a/300308.html

相关文章:

  • pip, github 突然连不上?报错和解决方法如下
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-29,(知识点:非易失存储器)
  • 【AI周报】2025年7月26日
  • CUDA杂记--FP16与FP32用途
  • MoE替代LLM
  • linux内核电源管理
  • 面试150 加一
  • 一文速通《多元函数微分学》
  • C++11 右值引用 Lambda 表达式
  • AutoDL 数据盘清理指南:彻底删除 .Trash-0 内文件释放空间
  • 电脑负载监控接入了IOT物联网平台
  • 深入浅出 MyBatis-Plus Wrapper:让条件构造更简单高效
  • 定义域第一题
  • iview: 对输入框进行Poptip 换行提示
  • python---元组解包(Tuple Unpacking)
  • 银行营销数据预测分析:从数据到精准营销决策
  • 表征工程 中怎么 调整参数或比例
  • 【RHCSA 问答题】第 13 章 访问 Linux 文件系统
  • 水下目标识别准确率↑89%!陌讯多模态融合算法在智慧水务的落地实践
  • ArkData-关系型数据库
  • 测试分类
  • Swagger 配置及使用指南
  • Redis C++客户端——通用命令
  • 多模态大模型与 AI 落地:从技术原理到实践路径的深度解析
  • 力扣刷题(第九十九天)
  • 【C语言进阶】程序环境和预处理
  • [Python 基础课程]注释
  • C++高效实现AI人工智能实例
  • IntelliJ IDEA 中左上方未显示项目根目录问题
  • 网络:基础概念