STM TIM(三) 输入捕获

news2025/1/11 6:53:54

STM TIM(三) 输入捕获

输入捕获简介

  • IC(Input Capture)输入捕获

  • 输入捕获模式下,当通道输入引脚出现指定电平跳变时(上升沿或下降沿),当前CNT的值将被锁存到CCR中(把当前CNT的值读出来,写入到CCR中),可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。

    • TIMx_CH1~4边沿信号输入引脚,一旦有边沿,比如说上升沿,那输入滤波和边沿检测电路就会检测到这个上升沿,让输入捕获电路产生动作,作用与外部中断类似,都是检测电平跳变,然后执行动作,只不过外部中断执行的动作是向CPU申请中断,而这里电路执行的动作就是,控制后续电路,让当前CNT的值锁存到CCR中。

对比一下输出比较

  • 输入捕获,引脚是输入端口,是接受到输入信号,执行CNT锁存到CCR的动作。
  • 输出比较,引脚是输出端口,是根据CNT和CCR的大小关系来执行输出动作。
  • 每个高级定时器和通用定时器都拥有4个输入捕获通道

  • 可配置为PWMI模式,同时测量频率和占空比

    • PWM的输入模式,专门为测量PWM频率和占空比而设计的
  • 可配合主从触发模式,实现硬件全自动测量

  • 将PWMI模式和主从触发模式结合起来,测量频率和占空比就是全自动进行。软件不需要进行任何干预,也不需要进中断,需要测量的时候,直接读取CCR寄存器就行了,使用非常方便,而且极大地减轻了软件的压力。

频率测量

对于STM32而言,只能测量数字信号

频率的定义,1S内出现了多少个重复的周期,频率就是多少Hz

在这里插入图片描述

在这里插入图片描述

  • 测频法,比如我们要测量信号的频率,就可以自定一个闸门时间T,通常设置为1S,在1S时间内,对信号上升沿进行计次,从0开始计,每来一个上升沿,计次+1,每来一个上升沿,其实就是来了一个周期的信号,所以在1S时间内,来了多少个周期,频率就是多少Hz。
    • 所以我们在1S的闸门时间内,对上升沿计次,计次多少,频率就是多少Hz。这种直接按频率定义来进行测量的方法,就叫测频法。
    • 闸门时间也不是必须为1S,也可以2S的闸门时间,那计次值除2,就是频率,也可以0.5S的闸门时间,计次乘2,也是频率。
  • 测周法的基本原理就是,周期的倒数就是频率,我们如果能测出一个周期的时间,再取个倒数,就可以得到频率。捕获信号的两个上升沿,然后测量一下者之间持续的时间即可。
    • 但实际上,并没有一个精度无穷大的秒表来测量时间,测量时间的方法,实际上也是定时器计次,我们使用一个已知的标准频率fc的计次时钟,来驱动计数器,从一个上升沿开始计,计数器从0开始,一直计到下一个上升沿,停止,计一个数的时间是1/fc,计N个数,时间就是N/fc,N/fc就是周期,再取个倒数,就得到了公式,fx=fc/N,这就是测周法。
  • 中界频率,当有一个频率,测频法和测周法计次的N相同,就说明误差相同。
    • 测频法计次和测周法计次,计次数量N,尽量要大一些,N越大,相对误差越小,因为在这些方法中,计次可能会存在±1误差。
      • 比如测频法,在闸门时间内,并不是每个周期信号都是完整的,比如在最后时间里,可能一个周期刚出现一半,闸门时间就到了,那这只有半个周期,只能舍弃掉或者当作一整个周期来看,因为计次只有整数,不能计0.5个数。在这个过程就会出现多计一个,或者少计一个的情况,这就叫做正负1误差。
      • 另外在测周法中,标准时刻fc计次,在最后时刻,有可能,一个数刚数到一半,计时就结束了,那这半个数也只能舍弃或者按一整个数来算,这里也会出现±1误差。正负1误差是这两种方法都固有的误差,要想减小正负1误差的影响,就要尽量多计一些数,当计次N比较大时,正负1对N的影响就会很小。
    • 当待测信号频率小于中界频率时,测周法误差更小,选用测周法更合适;当待测信号频率大于中界频率时,测频法误差更小,选用测频法更合适。

测频法和测周法比较

  • 测频法和测周法比较
    • 测频法适合测量高频信号,测频法,在闸门时间内,最好要多出现一些上升沿,计次数量多一些,这样有助于减小误差。
      • 假如定了1S的闸门时间,结果信号频率非常低,1S的闸门时间甚至1个上升沿都没有,频率总不能是0吧。测频法在计次N很小时,误差会非常大。因此,测频法要求,信号频率要稍微高一些。
    • 测周法适合测量低频信号
      • 低频信号,周期比较长,计次就会比较多,有助于减小误差,否则,比如标准频率fc为1MHz,待测信号频率太高,比如待测信号500KHz,那在一个周期内只能计一两个数,如果待测信号再高一些,甚至一个数也计不到,总不能认定频率无穷大吧。因此,测周法需要待测频率低一些。
    • 测频法测量结果更新的慢一些,数值相对稳定
      • 测频法测量的是在闸门时间内的多个周期,所以自带一个均值滤波,如果在闸门时间内波形频率有变化,那得到的其实是这一段时间的平均频率。如果闸门时间选为1S,那么每隔1S才能得到一次结果。因此,测频法结果个更新慢,测量结果是一段时间的平均值,值比较平滑。
    • 测周法更新的快,数据跳变也非常快
      • 测周法,只测量一个周期,就能出一次结果,所以出结果的速度取决于待测信号的频率,一般而言,待测信号都是几百几千Hz,所以一般情况下,测周法结果更新更快,但是只测量一个周期,所以结果值会受噪声的影响,波动比较大。

内部电路

  • 四个通道的引脚TIMx_CH1~4,参考引脚定义表,就能直到这个引脚复用在了哪个位置。
  • 引脚进来,有一个三输入的异或门,这个异或门的输入接在了通道1,2,3端口,异或门的执行逻辑是,当三个输入引脚的任何一个有电平翻转时,输出引脚就产生一次电平翻转。
  • 之后输出通过数据选择器,到达输入捕获通道1,数据选择器如果选择上面一个,那输入捕获通道1的输入,就是3个引脚的异或值,如果选择下面一个,那异或门就没有用,4个通道各用各的引脚。
    • 设计这个异或门,其实还是为三相无刷电机服务的,无刷电机有三个霍尔传感器检测转子的位置,可以根据转子的位置进行换相。
    • 有了这个异或门就可以在前三个通道接上无刷电机的霍尔传感器,然后这个定时器就作为无刷电机的接口定时器,去驱动换相电路工作。
  • 输入信号过来,来到了输入滤波器和边沿检测器
    • 输入滤波器可以对信号进行滤波,避免一些高频的毛刺信号误触发
    • 边沿检测器,可以选择高电平触发或者低电平触发,当出现指定的电平时,边沿检测电路就会触发后续电路执行动作。
    • 这里其实是设计了两套滤波和边沿检测电路,第一套电路经过滤波和极性选择,得到TI1FP1(TI1 Filter Polarity 1),输入给通道1的后续电路,第二套电路经过另一个滤波和极性选择,得到TI1FP2(TI1 Filter Polarity 2),输入给下面通道2的后续电路。同理下面TI2信号进来,也经过两套滤波和极性选择,得到TI2FP1和TI1FP2,其中TI2FP1输入给上面,TI2FP2输入给下面。
      • 在这里,两个信号进来,可以选择各走各的,也可以选择进行一个交叉(下面通道3和通道4也是同样的结构),让CH2引脚输入给通道1或者CH1引脚输入给通道2。这里进行交叉连接,目的主要有二
        • 可以灵活切换后续捕获电路的输入,比如一会想以CH1作为输入,一会想以CH2作为输入,这样就可以通过这个数据选择器,灵活地进行选择。
        • 可以把一个引脚的输入,同时映射到两个捕获单元,这也是PWMI的经典结构。第一个捕获通道,使用上升沿触发,用来捕获周期;第二个通道,使用下降沿触发,用来捕获占空比。两个通道同时对一个引脚进行捕获,就可以同时测量频率和占空比。
    • TRC信号,也可以选择作为捕获部分的输入,用于无刷电机的驱动
  • 输入信号进行滤波和极性选择后,就来到了预分频器,每个通道各有一个,可以选择对前面的信号进行分频。
  • 分频之后的触发信号,就可以触发捕获电路进行工作了,每来一个触发信号,CNT的值就会向CCR转运一次,转运的同时,会发生一个捕获事件,这个事件会在状态寄存器只标志位,同时也可以产生中断,如果需要在捕获的瞬间,处理一些事情的话,就可以开启这个捕获中断。
  • 比如我们可以配置上升沿触发捕获,每来一个上升沿,CNT转运到CCR一次,又因为这个CNT计数器是由内部的标准时钟驱动的,所以CNT的数值,其实就可用来记录两个上升沿之间的时间间隔,这个时间间隔就是周期,再取个倒数,就是测周法测量的频率了。

  • 上升沿用于触发输入捕获,CNT用于计数计时,每来一个上升沿,取一下CNT的值,自动存在CCR里,CCR捕获到的值,就是计数值N,CNT的驱动时钟就是fc, fc/N,就得到了待测信号的频率。

  • 每次捕获之后,都要把CNT清0一下,这样下次上升沿再捕获的时候,取出的CNT才是两个上升沿的时间间隔。这个在一次捕获后自动将CNT清零的步骤,我们可以用主从触发模式,自动来完成。

在这里插入图片描述

输入捕获通道

  • 滤波器的输入是TI1,就是CH1的引脚,输出的TI1F,就是滤波后的信号,fDTS是滤波器的采样时钟来源,CCR寄存器里的ICF位可以控制滤波器的参数。
    • 数字滤波器由一个事件计数器组成,它记录到N个事件后会产生一个输出的跳变。简单理解,滤波器的工作原理就是,以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平,连续N个值都为低电平,输出才为低电平,如果信号出现高频抖动,导致连续采样N个值不全都一样,那输出就不会变化,就可以达到滤波的效果。采样频率越低,采样个数N越大,滤波效果越好。 在实际应用中,如果波形噪声比较大,就可以把这个参数设置大一些,这样就可以过滤噪声了。
  • 滤波之后的信号TI1F通过边沿检测器,捕获上升沿或者下降沿,配置CCER寄存器里的CC1P位,就可以选择极性了,最终得到TI1FP1触发信号,通过数据选择器,进入通道1后续的捕获电路。
  • CCMR1寄存器的CC1S位可以对数据选择器进行选择,ICPS位可以配置分频器(不分频、2分频、4分频、8分频)
  • CCER寄存器的CC1E位,可以控制输出使能或失能。如果使能了输出,输入端产生指定边沿信号,经过层层电路,就可以将CNT的值,转运到CCR里面来。
    • 每捕获一次CNT的值,都要把CNT清零一下,以便于下一次的捕获,这里硬件电路,就可以在捕获之后自动完成CNT的清零工作。
      • TI1FP1信号和TI1F_ED(TI1的边沿信号)都可以通向从模式控制器,比如TI1FP1信号的上升沿触发捕获,并且还可以同时触发从模式,这个从模式中就有电路可以自动完成CNT的清零。

在这里插入图片描述

主从触发模式

  • 主模式可以将定时器内部的信号,映射到TRGO引脚,用于触发别的外设,所以这部分叫做主模式。
    • 实现定时器的级联,可以选择一个定时器的主模式输出更新信号到TRGO,另一个定时器选择上一个定时器触发从模式,从模式选择外部时钟模式1的操作,这样就能实现定时器的级联。
    • 复位、使能、更新、比较脉冲、比较
  • 从模式就是接收其他外设或者自身外设的一些信号,用于控制自身定时器的运行,也就是被别的信号控制,所以这部分叫从模式。
  • 触发源选择,就是选择从模式的触发信号源,可以认为是从模式的一部分。触发源选择,选择指定的一个信号,得到TRGI,TRGI去触发从模式,从模式可以在下面这个列表里,选择一项操作来自动执行。
    • 比如想让TI1FP1信号自动触发CNT清零,那触发源选择,就可以选中这里的TI1FP1,从模式执行的操作,就可以选择执行Reset的操作,这样TI1FP1的信号就可以自动触发从模式,从模式自动清零CNT了。实现硬件全自动测量。

在这里插入图片描述

输入捕获基本结构

  • 将时基单元配置完成,启动定时器,CNT就会在预分频之后的时钟驱动下,不断自增,这个CNT就是测周法用来计数计时的东西。经过预分频之后的时钟频率,就是驱动CNT的标准频率fc
  • 输入捕获通道1的GPIO口,输入一个如图所示的方波信号,经过滤波器和边沿检测,选择TI1FP1为上升沿触发,之后输入选择直连的通道,分频器选择不分频,当TI1FP1出现上升沿之后,CNT的当前计数值转运到CCR1里,同时触发源选择,TI1FP1为触发信号,从模式选择复位操作,这样TI1FP1的上升沿,也会通过上面这一路,去触发CNT清零。
    • 先转运CNT的值到CCR里,再触发从模式给CNT清零,或者是非阻塞的同时转移,CNT的值转移到CCR,同时0转移到CNT里面里,总之肯定不会是先清零再捕获,要不然捕获值肯定都是0了。
  • 左上角的图,信号出现一个上升沿,CCR1=CNT,就是把CNT的值转运到CCR1里面去,这是输入捕获自动执行的,然后CNT=0,清零计数器,这是从模式自动执行的,然后在一个周期之内,CNT在标准时钟的驱动下,不断自增,并且由于之前清零过了,所以CNT就是从上升沿开始,从0开始计数,一直++,直到下一次上升沿来临,然后执行相同的操作,CCR1=CNT,CNT=0,第二次捕获的时候,计数值就自动放在CCR1里面,然后下一个周期,继续同样的过程,CNT从0开始自增,直到下一个上升沿,这时CCR1刷新为第二个周期的计数值,然后不断重复这个过程,所以在这个电路工作时,CCR1始终保持为最新一个周期的计数值,这个计数值就是测周法中的计次N,然后fc/N,就是信号的频率。
    • 所以当我们想要读取信号的频率时,只需要读取CCR1得到N,再计算fc/N,就可以得到频率。当我们不需要读取的时候,整个电路全自动的测量,不需要占用任何软件资源。

注意事项

  • 首先CNT的值是有上限的,ARR一般设置为最大65536,CNT最大也只能计65536个数,如果信号频率太低,CNT计数值可能会溢出。
  • 从模式的触发源选择,只有TI1FP1和TI2FP2,没有TI3和TI4的信号,如果这里想使用从模式自动清零CNT,就只能用通道1和通道2,对于通道3和通道4,就只能开启捕获中断,在中断里手动清零了,不过这样,程序就会处于频繁中断的状态,比较消耗软件资源。

在这里插入图片描述

PWMI基本结构

  • PWMI模式使用了两个通道同时捕获一个引脚,可以同时测量周期和占空比。
  • 首先,TI1FP1配置上升沿触发,触发捕获和清零CNT,正常地捕获周期,这时再来一个TI1FP2,配置为下降沿触发,通过交叉通道,去触发通道2的捕获单元。
  • 看一下左上角的图,最开始上升沿,CCR1捕获,同时清零CNT,之后CNT一直++,然后在下降沿这个时刻,触发CCR2捕获,所以这时CCR2的值,就是高电平期间的计数值,CCR2捕获,并不触发CNT清零,所以CNT继续++,直到下一次上升沿,CCR1捕获周期,CNT清零,这样执行之后,CCR1就是一整个周期的计数值,CCR2就是高电平期间的计数值,用CCR2/CCR1,就可以得到占空比,这就是PWMI模式,使用两个通道来捕获频率和占空比的思路。
  • 另外这里可以两个通道同时捕获第一个引脚的输入,这样通道2的前面这一部分就没有用到,当然也可以配置两个通道同时捕获第二个引脚的输入,这样我们就是使用TI2FP1和TI2FP2两个引脚了。这两个输入可以灵活切换。

在这里插入图片描述

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

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

相关文章

FL Studio21版无限破解版下载 软件内置破解补丁

FL Studio是一款非常好用方便的音频媒体制作工具,它的功能是非常的强大全面的,想必那些喜欢音乐创作的朋友们应该都知道这款软件是多么的好用吧,它还能够给用户们带来更多的创作灵感,进一步加强提升我们的音乐制作能力。该软件还有…

财报解读:若开启价格战“防沉迷”,特斯拉还有多少“杀手锏”?

“暴风雨中,再强的船也有麻烦。”近日的财报会议上,特斯拉首席执行官埃隆马斯克坦承了特斯拉处境的严峻。 根据三季报,特斯拉的营收净利未达预期;第三季度毛利率为17.9%,呈现下滑态势,前两个季…

Maven配置阿里云中央仓库settings.xml

Maven配置阿里云settings.xml 前言一、阿里云settings.xml二、使用步骤1.任意目录创建settings.xml2.使用阿里云仓库 总结 前言 国内网络从maven中央仓库下载文件通常是比较慢的,所以建议配置阿里云代理镜像以提高jar包下载速度,IDEA中我们需要配置自己…

无法查看 spring-boot-starter-parent的pom.xml

1. idea版本:2022.3 2. 使用Spring Initializr创建一个简单的spring-boot项目,发现无法查看 spring-boot-starter-parent的pom.xml ctrl鼠标左键 和 ctrl B 都无法进入 3. 解决:清除缓存重启(🤧😰&#…

C++项目——云备份-④-服务端配置信息模块设计与实现

文章目录 专栏导读1.系统配置信息设计2.系统配置信息实现3.配置文件加载类设计(单例模式)4.配置文件加载类实现与整理 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划…

ps 图框选择工具

上文 PS 图层剪贴蒙版使用方法 我们为了能够开展 图框工具 的学习 先学习了剪贴蒙版 那么 我们现在就可以开始接触图框工具了 我们先在左侧菜单中选中图框工具 上方属性里面 有一个 矩形 圆形 这就是选择的区域形状 很好理解 这里 我们先选择 矩形 这里 我先将多余的两个图层…

GalaxyBase分布式集群关闭后启动

文章目录 1 环境2 按照官方文档操作3 启动操作3.1 将主节点的所有容器服务启动3.2 将从节点的容器graph服务启动 4 官方文档的操作仍然报错5 关于docker命令 前面由于服务器关机下电,导致重启,遇见很多问题,官方文档的参考并不是很清晰明确&a…

APP破解去广告

1.修改图标和名称 名称直接改 找到图标在进去把他替换掉 2.修改app包名实现分身 修改包名实现app分身_Tian翊的博客-CSDN博客 3.修改资源去广告 安卓逆向006之修改APK资源去广告_修改安装包去除app内广告-CSDN博客 打开模拟器后在cmd命令行输入adb devices连接上 在模拟器中…

基于Java的在线教育网站管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

ROS学习记录2018.7.10

ROS学习记录2018.7.10 1.ROS基础了解 开源机器人操作系统ROS(robot operation system) 分级: 1.计算图集(一种网络结构) 1.节点:执行运算的进程(做基础处理的单元)2.消息&#x…

业务架构、应用架构、技术架构、数据架构

架构规划的重要性 如果没有进行合理的架构规划,将会引发一系列的问题。为了避免这些问题的发生,企业需要进行业务架构、应用架构、技术架构和数据架构的全面规划和设计,以构建一个清晰、可持续发展的企业架构。 https://www.zhihu.com/que…

【Vue3-Flask-BS架构Web应用】实践笔记1-使用一个bat脚本自动化完整部署环境

前言 近年来,Web开发已经成为计算机科学领域中最热门和多产的领域之一。Python和Vue.js是两个备受欢迎的工具,用于构建现代Web应用程序。在本教程中,我们将探索如何使用这两个工具来创建一个完整的Web项目。我们将完成从安装Python和Vue.js到…

柏林自由大学物理学家发布测试量子计算机质量的新方法

​(图片来源:网络) 量子技术,尤其是量子计算机,将促进未来的技术发展。科学家认为,量子计算机将帮助他们解决即使是最快的超级计算机也无法处理的问题。大型国际IT公司以及美国、中国等一直在为这项技术的开…

适用于 Mac 或 Windows 的 4 种最佳 JPEG/PNG图片 恢复软件

您的计算机或外部存储驱动器上很可能有大量 JPEG /PNG图片照片,但不知何故,您意识到一些重要的 JPEG /PNG图片文件丢失或被删除,它们对您来说意义重大,您想要找回它们. 4 种最佳 JPEG/PNG图片 恢复软件 要成功执行 JPEG /PNG图片…

性能测试的指南:测试类型、性能测试步骤、最佳实践等!

近期公司为了节省成本搞了一波机房迁移,整合了一些南美部署架构。有一些上google云和有些下阿里云等大的调整。 在做机房迁移项目当中就需要思考如何进行性能测试,这种大的机房迁移SRE(运维)会针对组件会做一些单组件的性能测试&a…

Linux--安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一,操作系统介绍 1.1.什么是操作系统 操作系统(Operating System,简称OS)是一种系统软件,它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源,为应用程序提供接口和服务,并协调…

2023-10-26 用C语言实现一个大整数加法

点击 <C 语言编程核心突破> 快速C语言入门 用C语言实现一个大整数加法 前言一、思路和代码设计数字对齐:字符对齐: 二、代码总结 前言 要解决问题: 实现大整数加法 想到的思路: 用字符代替数字, 逐个计算, 过10进位. 其它的补充: 同样思路可以解决减法, 乘法, 但除法…

ubuntu安装idea

idea下载 选择第一个.tar.gz(Linux)下载 解压后 进入bin目录在终端运行./idea.sh即可

数据安全法开始正式实施的时间是什么时候?主要目的是什么?

大数据时代&#xff0c;数据生成贯穿于经济活动的方方面面&#xff0c;贯穿于企业&#xff0c;贯穿于民生。数据是国家基础性战略资源&#xff0c;没有数据安全就没有国家安全。所以保障数据安全至关重要。那你知道数据安全法开始正式实施的时间是什么时候&#xff1f;主要目的…