STM32定时器输入捕获模式中分割系数Clock division以及滤波器采样频率的见解

刚入门32一个多月,最近学到输入捕获模式,对定时器初始化函数结构体中的一个Clock_division结构体成员产生了疑惑

我对定时器时钟频率的理解还不是很深,本文只是记一下目前简单的理解。

首先这个colck_division时钟分割系数并不是对定时器的时钟频率进行分割。我们都知道输入捕获模式下有一个数字滤波器,这个数字滤波器可以通过配置寄存器改变他的采样频率,从而将一些频率滤除。

下面上一个寄存器相关位的图

STM32定时器输入捕获模式中分割系数Clock division以及滤波器采样频率的见解_第1张图片STM32定时器输入捕获模式中分割系数Clock division以及滤波器采样频率的见解_第2张图片STM32定时器输入捕获模式中分割系数Clock division以及滤波器采样频率的见解_第3张图片

通过配置CKD几位,定时器输入频率fCK_INT与滤波器使用的频率fDTS之间建立关系,而不是对fCK_INT进行分频。而ETF几位,会设置滤波器的采样频率fsampling与fDTS的比例系数之间的比例关系(实际上就是与定时器输入频率CK_INT之间有一定的比例)

后面的N是以fsampling这个采样频率 输入信号采样多少次,也就是说如果N=8,我们要捕获输入高电平,那么必须以fsampling在低电平后连续检测八次都为高电平,才认定为真的捕获到有效高电平。这个和防抖的原理差不多。

我这里引用从另外一个帖子看到的例子。比如定时器输入频率CK_INT为72MHz,当设置CKD[1:0]为01即tDTS = 2 x tCK_INT,那么

fDTS=fCK_INT/2=36MHz,这时我们再设置ETF[3:0]为0100:采样频率fSAMPLING=fDTS/2=18MHz, N=6即检测至少6个采样周期都为高电平信号认为有效。由于采样周期18MHz,采样周期宽度为1/18MHz,检测六个周期即为6/18MHz≈0.334us,也就是输入高电平信号宽度如果比这个宽度还小,那么将永远不会被认定为有效电平,也就完成了滤除脉冲宽度小于0.334us的的输入信号。

当输入信号频率实在太高时(大于CK_INT频率的1/4时),可以配置ETPS几位对输入信号进行降频处理以完成采样。










0100:采样频率fSAMPLING=fDTS/2, N=6

你可能感兴趣的:(STM32定时器输入捕获模式中分割系数Clock division以及滤波器采样频率的见解)