news 2026/6/10 9:21:27

STM32高级控制定时器的采样时钟分频是干嘛的

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32高级控制定时器的采样时钟分频是干嘛的

STM32高级控制定时器(如TIM1、TIM8)中采样时钟分频是高级定时器的核心特性之一。

一句话概括:它是为高可靠性、高噪声环境下的电机和电源控制而设计的“抗干扰同步器”

一 核心概念:它分频的是什么?

首先必须明确:采样时钟分频(CKD)分的不是定时器的主计数时钟(CK_INT),而是它的一个“影子时钟”——DTS。

  • CK_INT:驱动计数器(CNT)递增的时钟,由预分频器(PSC)对时钟源分频得到。它决定了PWM的频率和定时精度。

  • DTS数字定时器采样时钟。它是从CK_INT派生出来的,专门用于定时器内部需要与外部异步信号打交道的部分的同步时钟。

CKD的作用就是设置t_DTSt_CK_INT的比值(1:1, 2:1, 4:1)。分频比越大,DTS越慢。

二 为什么需要这个?—— 三大关键应用场景

高级定时器常用于驱动电机(BLDC/PMSM)、逆变器、开关电源等,这些环境噪声大、时序要求极其严格。CKD就是为此设计的“安全卫士”。

场景一:保护数字输入滤波器(抗噪声)

这是最直接的应用。定时器的输入通道(如TI1, TI2用于编码器或霍尔传感器)通常连接着长长的、充满开关噪声的电机线。

  • 问题:噪声会产生致命的虚假边沿,导致计数器误计数、PWM误触发。

  • 解决方案:每个输入通道都有一个数字滤波器,它需要连续采样N次(可配置)电平一致,才认为是一个有效边沿。

  • CKD的作用该滤波器的采样时钟就是DTS!通过CKD降低DTS频率,相当于:

    1. 拉长了采样间隔,让噪声脉冲(通常很窄)在两个采样点之间“漏过去”,从而被滤除。

    2. 相当于增加了滤波器的“时间窗口”,增强了抗宽脉冲噪声的能力。

  • 代价:信号的有效边沿检测会有一个由DTS周期决定的固定延迟。CKD分频比越大,延迟越长(抗扰性越好,响应越慢)。

场景二:精确控制死区时间(Dead Time)

这是高级定时器的灵魂功能,防止桥式电路(H桥、三相桥)上下管同时导通而短路炸管。

  • 问题:死区时间发生器的分辨率直接决定了你能设置多精细的死区。

  • 解决方案死区时间发生器的参考时钟就是DTS!

    • 死区时间 =DTG寄存器值×t_DTS

  • CKD的作用

    • CKD=00(t_DTS = t_CK_INT):分辨率最高,能设置很精细的死区(如几十纳秒),适合高频开关电源。

    • CKD=10(t_DTS = 4 * t_CK_INT):分辨率降低4倍,但能生成的最大死区时间延长了4倍。当你的功率器件(如大IGBT)关断较慢,需要较长的死区时间(如几微秒)时,就必须用分频的DTS,否则用高分辨率时钟可能需要非常大的DTG值,甚至可能超出寄存器范围。

  • 本质在死区时间精度和最大死区长之间进行权衡。

场景三:外部时钟/触发信号的再同步(抗亚稳态)

当定时器使用外部时钟模式(ETR引脚)或受其他定时器触发时,这些信号与内部时钟是异步的。

  • 问题:异步信号在寄存器采样时可能产生亚稳态(输出在0和1之间振荡一段时间),导致系统行为不可预测。

  • 解决方案:STM32使用一个同步电路来处理这些异步信号,这个电路通常需要2个DTS时钟周期来完成可靠的同步。

  • CKD的作用为这个同步电路提供时钟(DTS)。分频后的DTS频率更低,相当于给了同步电路更长的“稳定时间”,极大地降低了亚稳态传播到系统内部的风险,提高了整个定时器在复杂触发条件下的可靠性。

三 图示:CKD在系统里的位置

text

外部噪声信号 (如编码器A相) │ ▼ [输入引脚 TI1] │ ▼ [输入滤波器] ←---**时钟:DTS (由CKD分频得到)**│ ▼ [边沿检测] │ ▼ [编码器接口/捕获单元] ←---**时钟:CK_INT (由PSC分频得到)**│ ▼ [计数器 CNT]

关键:信号先经过用DTS时钟滤波,再送给用CK_INT时钟计数的核心逻辑。两者分离,各司其职。

四 实战配置思维

假设你用一个72MHz的定时器驱动一个带霍尔传感器的直流无刷电机。

  1. 计算PSC和ARR
    为了产生20kHz的PWM(周期50us),你设置PSC=71CK_INT = 72MHz/(71+1)=1MHzARR=49,这样PWM频率就是1MHz/(49+1)=20kHz。此时t_CK_INT = 1us

  2. 评估噪声环境
    电机线噪声严重,霍尔信号有约200ns的毛刺。

  3. 设置输入滤波器
    你需要滤除宽度小于200ns的毛刺。如果CKD=00(t_DTS=1us),滤波器需设置N=2(连续2个采样点),则能滤除宽度小于1us的噪声(安全)
    但如果你希望更稳健,可以设置CKD=10(t_DTS=4us),此时即使N=1,也能滤除宽度小于4us的噪声,抗扰性更强。

  4. 设置死区时间
    你的MOSFET需要至少500ns的死区。如果CKD=00,死区分辨率是1us,你只能设置0us或1us,不够精细。如果CKD=01(t_DTS=2us),分辨率2us,更不合适。因此,最好保持CKD=00,用高分辨率来精确产生500ns死区。
    注意:这与滤波需求可能冲突,你需要权衡,或者通过调整PSC来改变CK_INT的基频,从而间接影响t_DTS

总结

对于STM32高级控制定时器,采样时钟分频(CKD)不是一个用于“定时”的功能,而是一个用于“信号完整性和系统可靠性”的关键配置

  • 它不改变PWM的基本频率和定时周期(那是PSC和ARR的工作)。

  • 它的核心职责是

    1. 为输入数字滤波器提供可调节的采样时钟,以对抗恶劣电气环境下的噪声。

    2. 为死区时间发生器提供可调节的时基,在精度和最大时长间取得平衡。

    3. 为外部异步信号提供可靠的同步时钟域,防止亚稳态。

简单记忆:当你接上电机、电源等“脏”负载时,CKD就是你必须认真考虑的那个“护盾”开关。在干净的实验室数字电路里,它通常可以保持默认值(CKD=00)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:54:18

MySQL 对前N条数据求和的优化方案(含完整示例)

在数据分析场景中,我们经常需要计算分组数据中排名前N的记录的合计值。本文将详细介绍在MySQL中实现这一需求的几种方法,并对比它们的性能差异。 一、基础需求场景 假设我们有一个销售数据表sales_data,结构如下: CREATE TABLE…

作者头像 李华
网站建设 2026/6/10 14:22:12

【计算机毕业设计案例】基于Android二手图书交易系统设计基于Android的旧物交易平台的设计与实现(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 13:42:57

期刊投稿总被拒?宏智树AI解锁核心刊适配密码,新手也能高效见刊

作为深耕论文写作科普的教育博主,后台每天都被期刊投稿焦虑刷屏:“改了6版的期刊论文,被审稿人批‘文献引用不权威’”“实证图表没规范,返修花了整整一周”“选题贴合热点,却不符合期刊发文调性”——其实多数人投稿失…

作者头像 李华
网站建设 2026/6/10 13:34:18

【课程设计/毕业设计】基于安卓Android的闲置旧物二手交易平台的设计与实现基于Android的旧物交易平台的设计与实现【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 13:44:14

python对接mysql和模型类的故障

你疑惑的这两段代码(detail 接口的 mappings() 查询、Videos 模型类)本质上是「定义」和「查询实现」的关系,本身没有逻辑冲突,但存在「字段约束不匹配」和「查询方法兼容性」两个关键小坑,这也是为什么数据库有数据&a…

作者头像 李华
网站建设 2026/6/10 14:59:37

比官方便宜一半以上!OpenAI Responses API 教程

OpenAI 最近提供了一个创建模型响应的接口。提供文本或图像输入以生成文本或图像输出。让模型调用您自己的自定义代码或使用内置工具,如 web 搜索或文件搜索,以使用您自己的数据作为模型响应的输入。 本文档主要介绍 OpenAI Responses API 操作的使用流…

作者头像 李华