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

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。

         

http://www.xdnf.cn/news/5667.html

相关文章:

  • AI与IoT携手,精准农业未来已来
  • Nacos源码—8.Nacos升级gRPC分析六
  • 2025年5月12日第一轮
  • 最大子数组和
  • Ubuntu虚拟机文件系统扩容
  • 通过Windows操作系统双因素认证实现工业设备安全运维:安当SLA
  • 论文学习_A Survey of Binary Code Similarity
  • 生成式人工智能认证(GAI认证)适合人群
  • 电商平台一站式网络安全架构设计指南
  • 自动化测试与功能测试详解
  • 【办公类-99-06】20250512用Python制作PPT的GIF照片动图(统一图片大小、自定义不同切换秒数,以蝴蝶为例)
  • 并发笔记-信号量(四)
  • ActiveMQ 高级特性:延迟消息与优先级队列实战(二)
  • MultiTTS 1.7.6 | 最强离线语音引擎,提供多音色无障碍朗读功能,附带语音包
  • 使用PhpStudy搭建Web测试服务器
  • 机动车授权签字人备考考试题库及答案
  • HLS图像处理:从算法到硬件的创新加速之旅
  • 蓝牙AVDTP协议概述
  • 配置Hadoop集群环境准备
  • Python集成开发环境之Thonny
  • Python实例题:Django搭建简易博客
  • FEKO许可证的安全与合规性
  • uni-app微信小程序登录流程详解
  • linux-驱动开发之设备树详解(RK平台为例)
  • 【递归、搜索与回溯】专题一:递归(一)
  • Java面试高阶篇:Spring Boot+Quarkus+Redis高并发架构设计与性能优化实战
  • Maven 项目构建时编译错误问题排查与解决
  • Spring Boot整合Kafka实战指南:从环境搭建到消息处理全解析
  • 【MCP】魔搭社区MCP服务(高德地图、everything文件搜索)
  • Ai网站流式渲染总结