STM32 电机控制应用中,ICxFilter,ICxPSC以及高级定时器的采样时钟分频CKD区别是什么

一 ICxPSC以及高级定时器的采样时钟分频CKD区别是什么

IC1Filter(输入捕获滤波器)和高级定时器的采样时钟分频(通常指 TIM_ClockDivision,即 CKD 位)虽然都涉及"分频"和"采样",但它们在定时器内部所处的阶段具体作用 以及影响范围上有本质的区别。

简单来说:采样时钟分频决定了整个数字滤波器的"工作时钟有多快",而 IC1Filter 决定了在这个工作时钟下进行"多少次采样来确认一个有效电平"。

以下是详细的对比分析:

1. 采样时钟分频(CKD:Clock Division)

  • 通常的宏定义TIM_CLOCKDIVISION_DIV1TIM_CLOCKDIVISION_DIV2TIM_CLOCKDIVISION_DIV4

  • 作用范围全局性(针对整个定时器模块)。

  • 它在哪 :它位于时基单元(Basic/General/Timer)的配置中,影响的是数字滤波器(包括所有输入通道的滤波器)所使用的采样时钟(tDTS)

  • 具体作用

    定时器的核心时钟(CK_INT,即内部时钟)通常很快(如 72MHz 或 168MHz)。CKD 位会对这个核心时钟进行分频,产生 tDTS(Digital Time base System) 时钟。这个 tDTS 就是后续所有输入滤波器进行采样的基础时钟源。

  • 例子

    • 如果 CK_INT = 72MHz,设置 CKD = DIV1,则 tDTS = 72MHz (周期约 13.89ns)。

    • 如果设置 CKD = DIV4,则 tDTS = 18MHz (周期约 55.56ns)。

2. ICxFilter(输入捕获滤波器参数)

  • 通常的宏定义ICFILTER_x (x 从 0 到 15)

  • 作用范围局部性(仅针对特定的输入捕获通道,如 IC1)。

  • 它在哪 :它位于输入捕获通道的配置中,决定了具体对输入信号进行怎样的处理

  • 具体作用

    它定义了对输入信号进行采样的频率 (以 tDTS 为基准的进一步分频)以及进行电平确认所需的采样次数

  • 例子(结合上面的 CKD 例子):

    • 频率:比如设置 IC1Filter = 0x0F(二进制1111),数据手册规定这意味着"采样频率 = tDTS / 32",即每隔 32 个 tDTS 时钟周期采样一次输入信号。

    • 次数:同样,0x0F 也意味着需要连续采样 8 次相同的电平,才认为信号稳定。


核心区别总结

对比维度 采样时钟分频 (CKD) IC1Filter
角色定位 时钟源提供者 信号处理逻辑
控制对象 控制整个定时器数字部分的基础采样时钟频率 (tDTS)。 控制输入信号在 tDTS 基础上的采样频率和采样次数
影响范围 所有依赖 tDTS 的功能(如所有输入捕获通道的滤波器、编码器模式抗噪等)。 仅限它所配置的那一个输入捕获通道。
参数含义 设置分频系数 (1, 2, 4)。 设置采样频率分频比和采样次数 (由4位二进制数组合定义)。
最终效果 决定了一个 tDTS 周期有多长,这是滤波器的时间分辨率 决定了在多少个 tDTS 周期 内进行多少次采样判定,这是滤波器的抗噪强度

一个直观的类比

想象一下小区门口的安检系统

  1. 采样时钟分频 (CKD) 相当于安检设备的"扫描速度"

    • DIV1 = 机器每秒扫描 1000 次。

    • DIV4 = 机器每秒扫描 250 次。

    • 这个速度决定了设备能捕捉到的最细微的时间差异。

  2. IC1Filter 相当于安检的"验证规则"

    • 规则 1 (ICFilter=0):扫一次看到是好人,就直接放行(速度快,但可能看错)。

    • 规则 15 (ICFilter=15):必须连续扫到 8 次都是好人,才放行(抗干扰强,但反应慢)。

结论:

如果你想滤除的是非常窄的毛刺,你需要先通过 CKD 提供足够快的扫描速度(tDTS) ,然后通过 IC1Filter 设定严格的验证次数,两者配合才能达到最佳的滤波效果。如果 CKD 设得太慢(DIV4),导致扫描精度下降,那么即使 IC1Filter 设得再高,也可能无法分辨短毛刺,因为扫描间隔已经太长了。

二 ICxFilter与ICxPSC区别是什么

为了帮你清晰地理解,我们可以把输入捕获的信号流想象成一条产品质检流水线。信号(产品)需要经过两道独立的关卡才能最终被捕获(入库)。

核心区别一句话总结:

  • ICxFilter(滤波器):负责质量检测,剔除有瑕疵的坏产品(噪声),确保只有合格品才能进入下一环节。

  • ICxPSC(捕获分频器) :负责数量统计,决定每遇到几个合格品,才向老板(CPU)汇报一次。


详细对比解析

1. IC1Filter:质量检测员
  • 位置:位于信号处理链路的最前端,紧挨着输入引脚。

  • 作用抗干扰。它检查从引脚进来的每一个信号边沿,判断它是真实的电平变化还是外界的噪声毛刺。

  • 工作方式 :**通过对信号进行多次采样(由 CKD 提供采样时钟)并比较结果来工作。**只有连续N次采样值都相同的边沿,才被认为是"有效的",允许通过。否则,视为噪声并丢弃。

  • 类比:就像质检员用放大镜检查每一个产品,有划痕或变形的(噪声)直接扔进废品筐,只有完好无损的产品(有效边沿)才能放行到传送带上。

  • 参数效果IC1Filter 的值越大(0-15),需要连续采样的次数就越多,滤波能力越强,但也会引入越大的信号延迟(因为判断需要时间)。

2. ICxPSC:数量统计员
  • 位置:位于滤波器之后、捕获寄存器之前。

  • 作用降频它对已经通过滤波器检验的"有效边沿"进行计数。

  • 工作方式它是一个简单的计数器。你可以设置它的分频系数(1, 2, 4, 8)。

    • 如果设置为 1分频(TIM_ICPSC_DIV1):每来一个有效边沿,就立即触发一次捕获。这是最常用的模式。

    • 如果设置为 4分频(TIM_ICPSC_DIV4):需要每来4个有效边沿,才触发一次捕获(即捕获第4个边沿时的计数器值)。

  • 类比:传送带上的产品经过质检员后,来到打包员这里。打包员不关心产品本身的质量,他只负责数数。如果他的规则是"每满10个产品打包一箱"(相当于10分频),那么只有数到第10个产品时,他才会触发"打包"(捕获)动作。

  • 参数效果ICxPSC 越大,触发捕获的频率就越低。这在处理极高频率信号时非常有用,可以减轻CPU的负担(因为中断次数变少了)。


对比总结表

维度 ICxFilter (输入捕获滤波器) ICxPSC (输入捕获预分频器)
核心使命 保证信号质量 控制捕获频率
处理对象 每一个原始的、可能有毛刺的信号边沿 已经确认过的、干净的有效边沿
工作逻辑 通过过采样和连续判定来过滤噪声 通过计数来跳过部分有效边沿
对中断的影响 不影响中断次数。如果噪声被滤掉,原本可能触发的中断就不会发生;如果信号干净,中断次数不变。 直接减少中断次数。无论信号多干净,如果设置了4分频,中断次数就会减少为原来的1/4。
典型应用场景 电机编码器信号、PWM输入测量、任何信号线较长或有干扰的场合。 测量极高频率信号(如MHz级别),防止CPU频繁进中断导致丢数或无法处理其他任务。

配置示例(逻辑关系)

在代码中,它们通常是先后配置的关系:

c

复制代码
TIM_ICInitTypeDef TIM_ICInitStructure;

// 1. 先配置滤波器:确保进来的信号是干净的
TIM_ICInitStructure.TIM_ICFilter = 0x0F; // 开启强滤波

// 2. 再配置预分频器:决定多久捕获一次
TIM_ICInitStructure.TIM_ICPSC = TIM_ICPSC_DIV1; // 通常是每个边沿都捕获,即不分频
// 如果是极高频率信号,可能会配成 TIM_ICPSC_DIV4 或 DIV8

// 应用配置到定时器的通道1
TIM_ICInit(TIM5, &TIM_ICInitStructure);
相关推荐
上海合宙LuatOS1 小时前
LuatOS核心库API——【json 】json 生成和解析库
java·前端·网络·单片机·嵌入式硬件·物联网·json
小刘爱玩单片机2 小时前
【stm32简单外设篇】- MQ-2烟雾传感器模块
c语言·stm32·单片机·嵌入式硬件
上海合宙LuatOS2 小时前
LuatOS核心库API——【iperf 】吞吐量测试
linux·运维·服务器·单片机·嵌入式硬件·物联网·硬件工程
上海合宙LuatOS2 小时前
LuatOS核心库API——【iotauth 】 IOT 鉴权库
java·单片机·嵌入式硬件·物联网·struts·计算机外设·硬件工程
学嵌入式的小杨同学3 小时前
嵌入式硬件开发入门:PCB 设计核心流程 + 基础元器件实战指南
vscode·后端·嵌入式硬件·架构·vim·智能硬件·pcb工艺
2501_9181269111 小时前
stm32做一个次声波检测器,需要哪些元件
stm32·单片机·嵌入式硬件·学习·个人开发
加斯顿工程师13 小时前
STM32F103C8T6驱动SRF05超声波测距传感器程序
stm32·单片机·嵌入式硬件
姜太公钓鲸23314 小时前
STM32F1有72MHz的Cortex-M3内核。72MHZ是什么意思?指的是什么?
stm32·单片机·嵌入式硬件
染不尽的流年15 小时前
热噪声、散粒噪声、闪烁噪声介绍
嵌入式硬件·测试机