【STM32的通用定时器CR1的CKD[1:0]: 时钟分频因子 (Clock division)】

在 STM32 的通用定时器(如 TIM2, TIM3, TIM4, TIM5 等)中,CR1 (Control Register 1) 寄存器中的 CKD[1:0] (Clock division) 位域是一个与抗干扰和数字滤波相关的设置,它并不直接影响定时器计数器 (CNT) 的计数频率(计数频率由预分频器 PSC 决定)。它的主要作用是控制定时器内部时钟 (CK_INT) 相对于外部时钟 (ETR) 或外部触发输入 (TIx) 的数字滤波器采样频率,以及死区时间生成的时钟基准

核心概念:

  1. 定时器时钟源 (CK_PSC) 这是驱动定时器预分频器 (PSC) 和计数器 (CNT) 的最终时钟源。它可以来自内部时钟 (CK_INT)、外部时钟模式 1 (ETR)、外部时钟模式 2 (TIx) 或内部触发输入 (ITRx)

  2. 数字滤波器: 定时器对外部输入信号(如 ETR, TI1, TI2)有内置的数字滤波器,用于抑制高频噪声(毛刺)。滤波器通过采样输入信号来工作。

  3. 死区时间生成: 在高级定时器 (TIM1, TIM8) 中用于互补 PWM 输出时,需要插入死区时间以防止上下管同时导通。死区时间的分辨率也需要一个时钟基准。

CKD[1:0] 的作用: 它定义了用于数字滤波采样死区时间分辨率的时钟 (t_DTS) 相对于定时器内部时钟 (CK_INT) 的分频关系。

CKD[1:0] 的取值与含义:

CKD[1:0]分频因子数字滤波/死区时间基准时钟 (t_DTS)说明抗干扰能力延迟/分辨率
0001t_DTS = t_CK_INT不分频。采样频率最高。最低最小
0112t_DTS = 2 * t_CK_INT2 分频。采样频率为 CK_INT 的一半。中等中等
1024t_DTS = 4 * t_CK_INT4 分频。采样频率为 CK_INT 的四分之一。最高最大
113ReservedReserved保留。勿使用此设置。--

详细解释:

  1. 对数字滤波器的影响:

    • 数字滤波器通过检测 N 个连续的 t_DTS 周期内输入信号是否稳定为高或低电平来判断有效边沿。N 是可配置的(通过 TIMx_CCMRx 寄存器的 ICxF[3:0] 位)。

    • CKD 决定了 t_DTS 的周期长度:

      • CKD=00 (t_DTS = t_CK_INT):滤波器采样频率最高。能过滤掉更窄的毛刺(即更高频的噪声),但对信号真实边沿的延迟最小

      • CKD=01 (t_DTS = 2*t_CK_INT):采样频率中等。能过滤中等宽度的毛刺,延迟中等。

      • CKD=10 (t_DTS = 4*t_CK_INT):采样频率最低。能过滤更宽的毛刺(即较低频的噪声),但对信号真实边沿的延迟最大

    • 选择原则: 如果外部输入信号环境噪声大(毛刺多且宽),选择更高的分频因子(如 10 - 4分频)可以更好地抑制噪声,但会增加信号延迟。如果环境比较干净或者需要低延迟,选择低的分频因子(如 00 - 不分频或 01 - 2分频)。

    • 影响的功能模块:

      • 输入捕获通道: 用于测量脉冲宽度、频率等。CKD[1:0] 影响捕获到信号边沿的准确性和抗噪性。

      • 外部时钟模式: 当使用外部信号作为计数器时钟源时(ETRTIx)。

      • 外部触发输入 (ETR): 用于复位、启动、停止计数器或触发从模式操作(如门控模式)。

      • 触发输出 (TRGO): 在某些从模式(如复位模式)下,CKD[1:0] 也会影响 TRGO 信号对外部触发输入的响应。

  2. 对死区时间生成的影响 (仅高级定时器 TIM1/TIM8):

    • 死区时间 (DTG) 的值是以 t_DTS 的倍数来配置的。

    • CKD 决定了 t_DTS 的周期长度,从而决定了死区时间的最小步进(分辨率):

      • CKD=00t_DTS 最小,死区时间分辨率最高(能配置更精细的死区时间)。

      • CKD=10t_DTS 最大,死区时间分辨率最低(配置步进变大)。

    • 选择原则: 如果需要非常精细地控制死区时间,选择低的分频因子(如 00)。如果对死区时间精度要求不高,或者 CK_INT 频率很高导致 t_DTS 已经足够小,可以选择更高的分频因子以换取更好的抗噪能力(如果同时使用了外部触发输入)。

  3. 对定时器基本在代码中配置: 通过设置 TIMx->CR1 寄存器的 CKD[1:0] 位。

    // 示例:设置 CKD[1:0] = 01 (2分频)
    TIMx->CR1 &= ~TIM_CR1_CKD; // 先清零 CKD 位
    TIMx->CR1 |= TIM_CR1_CKD_1; // CKD[1:0] = 01 (TIM_CR1_CKD_1 宏通常对应 0x0200)
  4. 计数 (CNT) 频率的影响:

    • CKD 设置对定时器计数器 CNT 的计数频率 (CK_CNT) 完全没有影响!

     5. 与输入滤波器 (ICxF[3:0], ETF[3:0]) 的关系:CKD[1:0] 设置的tDTS 是输入滤波器工作的基础时钟。

       输入滤波器配置位(如 IC1F[3:0] 用于输入通道 1)决定了需要连续采样到多少次稳定电平才确认有效边沿(N=2, 4, 6, 8 等)。实际能滤除的噪声最小宽度是 N * tDTS。因此,CKD[1:0] 和输入滤波器位 共同决定了滤波器的性能

 

总结与使用建议:

  • CKD[1:0] 的核心作用是设置 t_DTS 时钟,用于数字滤波采样和死区时间分辨率。

  • 它不改变定时器计数器 (CNT) 的计数频率,计数频率由预分频器 (PSC) 控制。

  • 选择 CKD 值是一个在抗干扰能力 (噪声抑制) 和响应速度/分辨率 (延迟) 之间的权衡:

    • 高噪声环境: 选择 CKD=10 (4分频) 获得最强的抗噪能力(过滤更宽的毛刺),但信号延迟最大,死区时间分辨率最低。

    • 低噪声环境或需要低延迟/高分辨率: 选择 CKD=00 (不分频) 获得最小的信号延迟和最高的死区时间分辨率,但抗噪能力最弱(只能过滤很窄的毛刺)。

    • 折中方案: CKD=01 (2分频) 提供中等性能。

  • 如果不使用外部触发输入 (ETR, TIx) 或者使用但环境非常干净,并且不使用高级定时器的死区时间(或者对死区分辨率要求不高),通常保持默认值 CKD=00 即可。

  • 如果遇到外部信号误触发问题(噪声引起),尝试增大 CKD 值(并配合配置滤波器的采样数 ICxF)是首要的解决方案之一。

简单记忆:

  • CKD“清洁度/延迟 开关”

  • 00“快快净净” (响应快,环境干净时用)。

  • 10“慢慢抗脏” (抗干扰强,响应慢,环境脏时用)。

  • 01“折中之道”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/84869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

渲染学进阶内容——机械动力的渲染系统(2)

Flywheel代码 这篇来研究一下实例 InstanceHandle 接口深度解析 接口核心作用 InstanceHandle 是 Flywheel 渲染引擎中的 GPU实例句柄 接口,它提供了对底层渲染实例的直接控制能力。这个接口是**实例化渲染(Instanced Rendering)**系统的核心操作接口,与之前讨论的 Vis…

Redis:极速缓存与数据结构存储揭秘

Redis —— 这个强大又灵活的 开源、内存中的数据结构存储系统。它常被用作数据库、缓存、消息代理和流处理引擎。 核心特点 (为什么它这么受欢迎?): 内存存储 (In-Memory): 数据主要存储在 RAM 中,读写操作直接在内存中进行。核心优势&…

vulnyx Diff3r3ntS3c writeup

信息收集 arp-scan nmap 这里默认的话是只有80端口的,这个22端口是我拿到root后开的 获取userFlag 直接上web看看 扫个目录 把网页拉到最下面可以看到一个文件上传点 我们尝试上传一个php文件 失败了,那xxx呢 上传成功了,看来后端的后缀名…

【构建】CMake 构建系统重点内容

CMake 构建系统重点内容 1 基本语法与结构 cmake_minimum_required() 指定使用的最低 CMake 版本,防止不同版本行为不一致: cmake_minimum_required(VERSION 3.16)project() 定义项目名称、语言和版本: project(MyApp VERSION 1.0 LANGU…

Packagerun:VSCode 扩展 快捷执行命令

Packagerun:VSCode 快捷命令扩展(兼容cursor) Packagerun 是一个为 前端和node开发者设计的 VSCode 扩展,旨在简化 package.json 中脚本的执行,并支持自定义命令以提升开发效率。通过右键菜单、快捷键或自定义配置&am…

【C语言】计算机组成、计算机语言介绍

1.1 计算机组成 1946年2月14日,由美国军方定制的世界上第一台电子计算机“电子数字积分计算机”( ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世。 计算机(俗称电脑)堪称是人类智慧的结晶,随着计算机的不断发展,各行各…

(九)山东大学软件学院项目实训-基于大模型的模拟面试系统-面试对话标题自动总结

面试对话标题自动总结 主要实现思路:每当AI回复用户之后,调用方法查看当前对话是否大于三条,如果大于则将用户的两条和AI回复的一条对话传给DeepSeek让其进行总结(后端),总结后调用updateChatTopic进行更新…

降阶法求解偏微分方程

求解给定的四个偏微分方程,采用降阶法,令 v = u x v = u_x v=ux​,从而将原方程转化为关于 v v v 的一阶方程。 方程 u x y = 0 u_{xy} = 0 uxy​=0 令 v = u x v = u_x v=ux​,则方程变为 v y = 0 v_y = 0 vy​=0。解得 v = C 1 ( x ) v = C_1(x) v=C1​(x),即 u …

提的缺陷开发不改,测试该怎么办?

经历长时间的细致检查,逐条执行数十条测试用例,终于发现一处疑似缺陷。截图留存、粘贴日志,认真整理好各项信息,将它提交到缺陷管理系统。可不到五分钟,这条缺陷就被打回了。开发人员给出的回复十分简洁:“…

【Flutter】Widget、Element和Render的关系-Flutter三棵树

【Flutter】Widget、Element和Render的关系-Flutter三棵树 一、前言 在 Flutter 中,所谓的“三棵树”是指: Widget Tree(部件树)Element Tree(元素树)Render Tree(渲染树) 它们是…

IO之详解cin(c++IO关键理解)

目录 cin原理介绍 控制符(hex、oct、dec) cin如何检查输入 cin与字符串 cin.get(char ch) cin.get(void) istream &get(char*,int) istream &get(char*,int,char) istream &getline(char*,int); 遇到文件结尾EOF 无法完成一次完整输入:设置f…

Bootstrap 5学习教程,从入门到精通, Bootstrap 5 分页(Pagination)知识点及案例代码(13)

Bootstrap 5 分页(Pagination)知识点及案例代码 Bootstrap 5 提供了强大的分页组件,帮助开发者轻松实现分页功能。以下是关于 Bootstrap 5 分页的详细语法知识点以及一个完整的案例代码,包含详细注释,帮助初学者快速上…

Dina靶机渗透

1.信息查询 1.1. Ip查询 arp-scan -l 192.168.220.137 1.2. 端口收集 nmap -T4 -A -p- 192.168.220.137 1.3. 目录扫描 dirsearch -u 192.168.220.137 -e* -i 200 通过访问 robots.txt 文件发现有些禁止访问得目录 User-agent: *Disallow: /ange1Disallow: /angel1Dis…

通俗理解存储过程注入

【通俗理解】存储过程注入:SQL注入的“豪华升级版” 一、从厨房做菜说起:为什么需要存储过程? 想象你经营一家连锁餐厅,每道菜的制作流程非常复杂(比如“招牌红烧肉”需要先焯水、再炒糖色、最后慢炖1小时&#xff09…

【算法】基于中位数和MAD鲁棒平均值计算算法

问题 在项目中,需要对异常值进行剔除,需要一种鲁棒性比较好的方法,总结了一个实践方法。 方法 基于中位数和MAD(中位数绝对偏差)的鲁棒平均值计算算法的详细过程,按照您要求的步骤分解: 算法…

插入点(position) 和对齐点(AlignmentPoint)详解——CAD c#二次开发

在 AutoCAD 中,文本对象的位置由插入点(position) 和对齐点(Alignment Point) 共同控制,两者的关系取决于文本的对齐方式。以下是详细说明: 一、插入点与对齐点的定义 1. 插入点(p…

QT打包应用

本次工程使用qt mingGw 64-bit 下面详细介绍下windows平台qt应用程序打包流程 1、先编译项目的release版本生成exe文件 2、创建脚本运行windeployqt.exe完成打包 rundeploy.bat脚本 set PATHE:\Tools\qt\Qt5\5.14.2\mingw73_64\bin;%PATH% windeployqt.exe MyDesignWidget.ex…

[软件测试]:什么是自动化测试?selenium+webdriver-manager的安装,实现你的第一个脚本

目录 1. 什么是自动化测试? 回归测试 自动化分类 2. web自动化测试 3. selenium 1. 什么是自动化测试? 通过自动化测试工具,编写脚本,自动执行测试用例,主要用于回归测试,性能测试等重复测试任务 常…

使用OpenCV和Python进行图像掩膜与直方图分析

文章目录 引言1. 准备工作2. 加载并显示原始图像3. 创建掩膜3. 应用掩膜5. 计算并显示直方图6. 结果分析7. 总结 引言 在图像处理中,掩膜(Mask)是一个非常重要的概念,它允许我们选择性地处理图像的特定区域。今天,我将通过一个实际的例子来展…

Genio 1200 Evaluation MT8395平台安装ubuntu

官网教程: Getting Started with Genio 1200 Evaluation Kit — Ubuntu on Genio documentation Windows PC工具: Setup Tool Environment (Windows) — IoT Yocto documentation 镜像下载地址: Install Ubuntu on MediaTek Genio | Ubu…