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

STM32的TIMx中Prescaler和ClockDivision的区别

        Prescaler预分频,以笔者目前的学习程度来说,这个参数,一般来说是对主时钟进行分频后的计数器时钟。这个预分频后的时钟主要是用于的计数的。

        这个主时钟,对于时基单元来说可以是内部时钟,也可以是外部时钟。一般来说我们的内部时钟是72MHZ的,经过预分频比如    Prescaler = 72-1;那么现在的计数时钟是1MHZ。

        对于外部时钟来说,首先这个外部时钟是通过GPIO口输入来作为时基单元的主时钟的,那么这个时候设置的PSC参数就是对外部时钟分频,举个例子:比如我们把对射式光耦的触发频率作为主时钟频率,显然这个时钟是一个不稳定的偶发性时钟,完全取决于它的光耦触发频率。然后呢我们再设置时基单元的PSC = 2-1;那么现在的时钟频率就是feq_CK_CNT = 光耦触发频率 / (2-1)+1; 相当于光耦触发两次,计数器就会加1.

        那么对于CLockDivision,这个主要是对定时器的主时钟进行分频,一般来说这个时钟就是内部时钟72MHZ,所以定时器滤波的采样时钟(目前笔者认为是针对外部输入或者输入捕获的)可以直接是这个主时钟频率72MHZ也可以是分频后的频率比如2分频是36MHZ,这个分频后的频率写为fDTS。

        举个例子,假设主时钟频率是 72MHz,CKD 设置为分频因子 2,那么 fDTS 的频率就是 36MHz。此时,如果数字滤波器使用这个 fDTS 作为采样时钟,每个采样周期的时间是 1/36MHz≈27.78ns。如果设置滤波器的采样次数为 4 次,那么有效的滤波时间就是 4*27.78≈111ns,即只有信号稳定超过这个时间才会被确认。如果 CKD 设置为分频因子 4,fDTS 为 18MHz,采样周期为 55.56ns,四次采样就是 222ns,这样滤波时间更长,可以滤除更宽的脉冲噪声,但信号变化的检测会有更大的延迟。

STM32 定时器的外部时钟输入(如 ETR 引脚)最大频率为 APB 时钟的 1/4。若 APB 时钟为 72MHz,则外部输入信号最高为 18MHz

看一下手册上相关的部分的说明:

其实这个图笔者看不太懂,如果这个tDTS代表频率的话好像和上文的陈述相反的,如果tDTS代表的是采样时间的话那确实是正确的,比如10:代表4分频,4分频后的采样时间是不分频的4倍。

这个主要是针对ETR设置的,具体操作库函数是:

        TIM_ETRClockMode2Config(TIM_TypeDef* TIMx, uint16_t TIM_ExtTRGPrescaler, 
   uint16_t TIM_ExtTRGPolarity, uint16_t ExtTRGFilter);第二个参数是PSC的设置联系上下文,这个参数我们设置为2即TIM_ExtTRGPSC_DIV2,那代表光耦工作两次计数器加1.

        这个最后一项的参数就是寄存器ETF的相关设置,设置的就是外部触发滤波的方式共16种,这里说明一下这个框图里的描述“它记录到N个事件后会产生一个输出的跳变”,这里的N个事件指代的是什么意思?一开始笔者把它和PSC能混了,以为这个事件是指光耦的跳变电平信号,N个时间就是指N个跳变电平信号。其实不然,如果触发电平是上升沿,那么N个事件就是说在N个采样周期内采样到的电平都是高电平,同理如果触发电平是下降沿,那么N个事件就是说在N个采样周期内采样到的电平都是低电平。


对于输入信号的处理,区别分辩不同场景输入信号的处理方式(下文来着deepseek)

一、功能对比

功能模块ETR 外部触发通道定时器输入通道(CH1-CH4)外部中断(EXTI)
核心用途外部时钟同步或触发定时器操作输入捕获(频率、脉宽测量)、PWM 输入快速响应外部电平 / 边沿变化
信号处理能力支持高频信号(最高 APB/4)支持高频信号(受定时器时钟限制)低频信号(依赖中断响应速度)
硬件资源定时器专用引脚(如 TIMx_ETR)定时器复用引脚(TIMx_CH1~CH4)任意 GPIO(需配置为 EXTI)
信号滤波可配置数字滤波器(基于 tDTS)可配置数字滤波器(基于 tDTS)无硬件滤波,依赖软件去抖
分频 / 预分频支持外部时钟预分频(ETRPSC)支持输入捕获分频(ICPSC)无分频,直接响应边沿
触发事件类型上升沿、下降沿、双边沿上升沿、下降沿、双边沿上升沿、下降沿、双边沿
中断 / DMA 支持支持触发中断或 DMA 请求支持输入捕获中断或 DMA仅支持中断

二、应用场景对比

1. ETR 外部触发通道

  • 适用场景
    • 高频外部时钟输入(如外部晶振、高速脉冲计数)。
    • 定时器级联(主从模式,同步多个定时器)。
    • 精确触发 ADC/DAC 等外设(通过定时器触发输出)。
  • 示例
    使用 ETR 引脚接收 18MHz 外部时钟,驱动定时器计数(PSC=0),实现高精度计时。

2. 定时器输入通道(CH1-CH4)

  • 适用场景
    • PWM 输入模式测量占空比和频率(如电机控制)。
    • 编码器接口(正交编码信号解码)。
    • 输入捕获测量脉冲宽度(超声波测距、红外通信)。
  • 示例
    配置 TIMx_CH1 为输入捕获模式,测量 10kHz PWM 信号的上升沿和下降沿时间差,计算占空比。

3. 外部中断(EXTI)

  • 适用场景
    • 按键检测(低频率、非精确时序需求)。
    • 快速响应外部事件(如紧急停止信号)。
    • 简单电平状态监控(如传感器触发)。
  • 示例
    配置 EXTI13(连接按键 GPIO)为下降沿触发,检测按键按下事件并唤醒 MCU。

    

三、关键差异总结

  1. 信号处理能力

    • ETR:专为高频信号设计,支持外部时钟输入和复杂触发逻辑。
    • 定时器输入通道:适合中高频信号的时间参数测量(如脉宽、频率)。
    • EXTI:仅适合低频事件响应,无法处理高频或精确时序需求。
  2. 硬件集成度

    • ETR / 定时器通道:与定时器深度集成,支持滤波、分频等硬件预处理。
    • EXTI:独立于定时器,依赖软件处理信号抖动和事件响应。
  3. 中断响应速度

    • ETR / 定时器通道:通过硬件自动记录时间戳,中断延迟对测量精度无影响。
    • EXTI:中断延迟(通常 1~2μs)直接影响事件响应实时性。

四、替代性分析

1. 何时可以互相替代?

  • 低频事件检测(如按键检测):
    EXTI 和定时器输入通道均可实现,但 EXTI 更节省资源。
  • 边沿触发计数
    ETR 和输入通道均可实现,但 ETR 适合高频,输入通道适合带时间戳的计数。

2. 何时不可替代?

  • 高频信号处理(>100kHz):必须使用 ETR 或定时器输入通道。
  • 精确时间测量(如超声波测距):必须使用定时器输入捕获。
  • 硬件级信号同步(如 ADC 触发):必须使用 ETR 或定时器触发输出。

5、配置建议

  1. 高频信号(>1MHz)

    • 首选 ETR 外部时钟模式,配合预分频器(ETRPSC)降低频率至 APB/4 以内。
    • 例:144MHz 信号 → 外部分频 8 倍 → 18MHz → ETR 输入。
  2. 中频信号(10kHz~1MHz)

    • 使用定时器输入捕获通道,开启数字滤波(ICF)抗噪声。
    • 例:测量 100kHz PWM 占空比,配置 ICPSC 分频和双边沿捕获。
  3. 低频事件(<10kHz)

    • 使用 EXTI,配合软件去抖(如定时器轮询或二次检测)。
    • 例:检测按键按下,EXTI 触发中断后启动防抖延时。


然后对这个滤波器笔者自己的一些猜想和看法,首先由DEEPSEEK指出,高频信号适用的是ETR端口,但是ETR端口最大采样频率是18MHZ,为什么会这样呢?

从滤波逻辑来说,72M的每个周期都用于检测信号的话最大也只能能检测72MHZ的外源波形 ,如果我们极端点外源信号是144MHZ,那么可见的无论你怎么挑选检测周期,72M的每个周期内必然检测到边沿信号,一旦检测到边沿跳变信号,信号就会被滤波器过滤掉,因此它就不会输出任何信号。因此采样频率要尽量的快

显然滤波功能起码包括三个阶段,开始滤波,检测信号,结束滤波,三部分最少要三个周期  。因此72MHZ的主频只能检测18MHZ的信号是可以理解的,因为极限也就24MHZ。

         

相关文章:

  • 转动的图形-第16届蓝桥第5次STEMA测评Scratch真题第4题
  • Hugging Face汉化教程及注册使用详解
  • 23.(vue3.x+vite)引入组件并动态切换(component)
  • linux小主机搭建自己的nas(三)docker安装nextcloud
  • pth的模型格式怎么变成SafeTensors了?
  • 克隆虚拟机组成集群
  • 如何优化一条SQL语句的性能?
  • React中的useSyncExternalStore使用
  • Cross Encoder 架构类型
  • UART16550 IP core笔记二
  • SpringDataRedis的入门案例,以及RedisTemplate序列化实现
  • 小皮面板从未授权到RCE
  • 【pypi镜像源】使用devpi实现python镜像源代理(缓存加速,私有仓库,版本控制)
  • 基于Python的高效批量处理Splunk Session ID并写入MySQL的解决方案
  • 【人工智能-agent】--Dify中自然语言生成SQL查询数据库
  • 如何快速入门大模型?
  • 精益数据分析(55/126):双边市场模式的挑战、策略与创业阶段关联
  • o.redisson.client.handler.CommandsQueue : Exception occured. Channel
  • 【深度学习】计算机视觉(18)——从应用到设计
  • 【大模型MCP协议】MCP官方文档(Model Context Protocol)一、开始——1. 介绍
  • 来伊份发布关于消费者反映蜜枣粽问题处理的情况说明:与消费者达成和解
  • 北洋“修约外交”的台前幕后——民国条约研究会档案探研
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 体坛联播|巴萨4比3打服皇马,利物浦2比2战平阿森纳
  • 伊朗外长称正与美国进行“善意”的会谈
  • 新买宝马竟是“维修车”,男子发视频维权被4S店索赔100万