江协科技STM32学习- P17 TIM输入捕获

🚀write in front🚀

🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

💬本系列哔哩哔哩江科大STM32的视频为主以及自己的总结梳理📚
🚀Projeet source code🚀

💾工程代码放在了本人的Gitee仓库:iPickCan (iPickCan) - Gitee.com

引用:

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

Keil5 MDK版 下载与安装教程(STM32单片机编程软件)_mdk528-CSDN博客

STM32之Keil5 MDK的安装与下载_keil5下载程序到单片机stm32-CSDN博客

0. 江协科技/江科大-STM32入门教程-各章节详细笔记-查阅传送门-STM32标准库开发_江协科技stm32笔记-CSDN博客

【STM32】江科大STM32学习笔记汇总(已完结)_stm32江科大笔记-CSDN博客

江科大STM32学习笔记(上)_stm32博客-CSDN博客

STM32学习笔记一(基于标准库学习)_电平输出推免-CSDN博客

STM32 MCU学习资源-CSDN博客

术语:

|--------------------------------------|---------------------------------------------|
| 英文缩写 | 描述 |
| GPIO:General Purpose Input Onuput | 通用输入输出 |
| AFIO:Alternate Function Input Output | 复用输入输出 |
| AO:Analog Output | 模拟输出 |
| DO:Digital Output | 数字输出 |
| 内部时钟源 CK_INT:Clock Internal | 内部时钟源 |
| 外部时钟源 ETR:External clock | 时钟源 External clock |
| 外部时钟源 ETR:External clock mode 1 | 外部时钟源 Extern Input pin 时钟模式1 |
| 外部时钟源 ETR:External clock mode 2 | 外部时钟源 Extern Trigger 时钟模式2 |
| 外部时钟源 ITRx:Internal trigger inputs | 外部时钟源,ITRx (Internal trigger inputs)内部触发输入 |
| 外部时钟源 TIx:external input pin | 外部时钟源 TIx (external input pin)外部输入引脚 |
| CCR:Capture/Comapre Register | 捕获/比较寄存器 |
| OC:Output Compare | 输出比较 |
| IC:Input Capture | 输入捕获 |
| TI1FP1:TI1 Filter Polarity 1 | Extern Input 1 Filter Polarity 1,外部输入1滤波极性1 |
| TI1FP2:TI1 Filter Polarity 2 | Extern Input 1 Filter Polarity 2,外部输入1滤波极性2 |

正文:

0. 概述

从 2024/06/12 定下计划开始学习下江协科技STM32课程,接下来将会按照哔站上江协科技STM32的教学视频来学习入门STM32 开发,本文是视频教程 P2 STM32简介一讲的笔记。


定时器共四个部分,分为八个小节笔记。本小节为第一部分第一节。

🌳在第一部分,是定时器的基本定时的功能:定时中断功能、内外时钟源选择

🌳在第二部分,是定时器的输出比较功能,最常见的用途是产生PWM波形,用于驱动电机等设备

🌳在第三部分,是定时器的输入捕获功能和主从触发模式,来实现测量方波频率

🌳在第四部分,是定时器的编码器接口,能够更加方便读取正交编码器的输出波形,编码电机测速


1. 🚢输入捕获

1.1 输入捕获简介

输入捕获 ,即Input Capture,英文缩写为IC。输入捕获模式下,当通道输入引脚出现指定电平跳变瞬间(可以定义为上升沿、下降沿),当前CNT的值将被锁存到CCR中(检测电平跳变,然后执行动作(作用和外部中断差不多,只不过外部中断执行的动作是向CPU申请中断,输入捕获执行的是控制后续电路)),可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。在这里,脉冲间隔和频率差不多、电平持续时间和占空比也是互相对应的关系。

每个高级定时器和通用定时器都拥有4各输入捕获通道,且二者没有区别。基本定时器没有输入捕获的功能。

输入捕获模块可以配置为PWMI(PWM输入)模式主从触发模式 。PWMI模式是PWM的输入模式,专门用来同时测量PWM波形的频率和占空比的。主从触发模式可以实现对频率或占空比的硬件的全自动测量。把这两个功能结合起来,测量频率和占空比就是硬件全自动执行,软件不需进行任何干预,也不需进中断,需要测量的时候,直接读取CCR寄存器就行了,使用非常方便且极大地减轻了软件的压力。

如下图,左边为输入捕获电路,4个输入捕获和输出比较通道,共用4个CCR寄存器,另外它们的CH1到4的4个通道引脚也是共用的,所以对于同一个定时器,输入捕获和输出比较只能使用其中一个,不能同时使用。

🌿输入捕获对比输出比较:

  • 🌿输出比较,引脚是输出端口,根据CNT和CCR的大小关系来执行输出动作
  • 🌿输入捕获,引脚是输入端口,接收到输入信号执行CNT锁存到CCR的动作

1.2输入捕获的各部分电路

🌿从左向右依次进行电路分析:

🌿最左边是四个通道的引脚,参考引脚定义表,就指导引脚是复用在哪个位置

🌿然后引脚进来,有一个三输入的异或门,这个异或门的输入接在了通道1、2、3端口,异或门的执行逻辑是,当三个引脚的任何一个有电平翻转时,输出引脚就产生一次电平翻转,3个引脚电平都相同为0,3个引脚中有高有低为1。

🌿然后输出通过数据选择器,到达输入捕获通道1,数据选择器如果选择上面一个,那输入捕获通道1的输入就是三个引脚的异或值;若选择下面一个,异或门就没有用。设计异或门,其实还是为了三相无刷电机服务的,无刷电机有三个霍尔传感器检测转子的位置,可以根据转子的位置来进行换相。

🌿输入信号来到了输入滤波器和边沿检测器 (极性选择)。输入滤波器可以对信号进行滤波,避免一些高频的毛刺信号误触发;边沿检测器就是和外部中断一样,可以选择高电平触发或者低电平触发,当出现指定的电平时,边沿检测电路就会触发后续电路执行动作。设计了两套滤波和边沿检测电路,第一套电路经过滤波和极性选择得到TI1FP1(TI1 Filter Polarity 1) ,输入给通道1的后续电路。第二套电路,经过另一个滤波和极性选择,得到TI1FP2(TI1 Filter Polarity 2),输入给通道2的后续电路,同理,下面TI2信号进来,也经过两套滤波和极性选择得到TI2FP1输入通道1和TI2FP2输入通道2。

可以进行交叉连接,例如CH1引脚输入给通道2,CH2引脚输入给通道1,进行交叉连接的目的是两个:

  • 🌿1.一个通道灵活切换两个引脚,可以灵活切换后续捕获电路的输入,
  • 🌿2.两个通道同时捕获一个引脚,可以把一个引脚的输入,同时映射到两个捕获单元 ,这也是PWMI模式的经典结构,实现两个通道(IC)对一个引脚(CH)进行捕获,就可以同时测量频率和占空比。可以选择各自独立连接,也可以选择进行交叉连接。另外还有一个TRC信号,也可选择作为捕获部分的输入,TRC信号来源于最上面,设计也是为了无刷电机的驱动。

🌿然后来到了预分频器 。每个通道各有一个预分频器,可以选择对前面的信号进行分频,分频之后的触发信号,就可以触发电路进行工作了,每来一个触发信号,CNT的值就会向CCR转运一次 ,转运的同时会发生一个捕获事件 ,这个事件会在状态寄存器置标志位,同时也可以产生中断,如果需要在捕获的瞬间,处理一些事情的话,就可以开启这个捕获中断。比如,可以配置上升沿触发捕获,每来一个上升沿,CNT转运到CCR一次,又因为CNT计数器是由内部的标准时钟驱动的,所以CNT的数值可以用来记录两个上升沿之间的时间间隔(周期)再取倒数就是测周法测量的频率了,在一次捕获后将CNT清零(可以用主从触发模式来自动完成CNT清零)

🌿输入捕获通道1的详细框图如下所示:(如下是上面框图的一个细化结构,基本功能都是一样的)

如上图,电路细节内容如下

  • 🌾引脚进来,先经过一个滤波器,滤波器的输入是TI1就是CH1的引脚,输出的TI1F就是滤波后的信号

  • 🌾FDTS是滤波器的采样时钟来源

  • 🌾CCMR1寄存器里的ICF位可以控制滤波器的参数

  • 🌾滤波器的工作原理就是:以采样频率对输入信号进行采样,当连续N个值都为高电平,输出才为高电平,当连续N个值都为低电平,输出才为低电平,如果信号出现高频抖动,导致连续采样N个值不全都一样,那输出就不会变化,这样就可以达到滤波的效果。采样频率越低,采样个数N越大,滤波效果就越好。在实际应用中,如果波形噪声比较大,就可以把IC1F位参数设置大一点来过滤噪声。

  • 🌾滤波之后的信号通过边沿检测器。捕获上升沿或者下降沿

  • 🌾CCER寄存器里的CC1P位可以进行极性选择

  • 🌾最终得到TI1FP1触发信号

  • 🌾通过数据选择器,进入通道1后续的捕获电路

  • 🌾当然还有一套一样的电路得到TI1FP2触发信号,连通到通道2的后续电路,上图并没有画出来,同样,通道2有TI2FP1连通到通道1的后续,通道2也有TI2FP2连通到通道2的后续,总共有四种连接方式,然后经过数据选择器,进入后续捕获部分电路

  • 🌾CCMR寄存器的CC1S位可以对数据选择器进行选择

  • 🌾之后,CCMR寄存器的ICPS位可以配置分频器,可以选择不分频、2分频、4分频、8分频

  • 🌾CCMR寄存器的CC1E位,控制输出使能或失能。如果使能了输出,输入端产生指定边沿信号,经过层层电路,就可以最后将CNT的值转运到CCR里来每捕获一次CNT 的值,都要把CNT清0 一下,以便于下一次的捕获,从模式控制器就可以在捕获之后自动完成CNT的清零工作

  • 🌾TI1FP1信号和TI1F_ED边沿信号,都可以通向从模式控制器,比如TI1FP1信号的上升沿触发捕获,还可以同时触发从模式,这个从模式里就有电路,可以自动完成CNT的清零。从模式 就是完成自动化操作的利器

1.3 输入捕获的主模式、从模式、触发源选择(简称:主从触发模式)

  • 🌾CCR对CNT进行捕获 之后,需要对CNT进行一次清0 操作,这样每次捕获得到的值才是测周法,两个上升沿(下降沿)之间的时间间隔。这个清0操作,就需要用到主从触发模式 来自动完成。由输入捕获通道1的详细框图可得:经过滤波和极性选择的TI1FP1信号和经过滤波的边沿信号TI1F_ED都可以通向从模式控制器 ,之后便可以通过硬件电路自动完成CNT的清0操作。
  • 🌾主从触发模式即主模式、从模式和触发源选择 三个功能的简称。
    🌵主模式可以将定时器内部的信号映射到TRGO引脚,用于触发其他外设的操作;
    🌵从模式可以接收其他外设或自身外设的一些信号,用于触发自己的一些操作(定时器的运行);
    🌵触发源选择,即选择从模式的触发信号源功能,也可以认为它是从模式的一部分。
  • 🌾在从模式下,可以通过触发源选择功能选择一个信号产生TRGI信号,之后去触发从模式,从模式可以在上面列表中选择一项操作来自动执行。关于主从模式的详细说明可以参见手册:

1.4 输入捕获和PWMI基本结构

1.4.1输入捕获基本结构

下图是输出捕获模式测频率的基本结构图。

上图清晰地展示了输入捕获模式测量频率的过程,同时也是编程的逻辑基础。在这里我们只使用了一个通道,所以它只能测量频率。

  • 🌾首先,配置时基单元,启动寄存器,则CNT就会在预分频之后的时钟驱动下不断自增。测周法用CNT来计数,间接实现计时的功能。经过预分频后的时钟频率,就是测周法的标准频率fc。
  • 🌾之后,GPIO输入一个待测的方波信号,经过经过滤波器和边沿检测选择TI1FP1为上升沿触发,
  • 🌾之后数据选择器选择直连通道,分频器选择不分频。
  • 🌾当TI1FP1出现上升沿之后,CNT的值就会被CCR1转运捕获;同时触发源选择模块选择TI1FP1为触发信号,从模式选择复位操作,触发CNT清零
    (先后顺序是:先转运CNT的值到CCR,再触发从模式给CNT清零。或者是非阻塞的同时转移:CNT的值转移到CCR,同时0转移到CNT里面去,总之是先捕获,再清零)
  • 🌾当电路不断工作时,CCR1中的值始终是最新一个周期的计数值,即测周法的计次数 N。所以,当我们想读取信号的频率时,只需要读取CCR1得到N,再计算fc/N就得到频率了。当不需要读取时,整个电路全自动的测量,不需要占用任何软件资源。

2、🚢频率的测量方法

如上图是频率逐渐降低的方波波形,越往左频率越高,越往右频率越低,这里信号都是只有高低电平的数字信号,对于STM32测频率而言,它也是只能测量数字信号的。如果需要测量一个正弦波则需要搭建一个信号预处理电路,最简单的就是用运放搭建一个比较器,把正弦波转换为数字信号再输入给STM32就行了;如果你测量的信号电压非常高,那还要考虑隔离的问题,比如使用隔离放大器、电压互感器等元件,隔离高压端和低压端,保证电路的安全。总之,经过处理最终输入给STM32的信号是如上图的高低电平信号,高电平3.3v,低电平0v。

为了测量频率,有两种方法可以选择:测频法、测周法

测频法:定时器中断,并记录捕获次数;测周法:捕获中断,并记录定时器次数。

相关推荐
李永奉2 小时前
STM32-认识STM32
stm32·单片机·嵌入式硬件
La Pulga3 小时前
【STM32】I2C通信—软件模拟
c语言·stm32·单片机·嵌入式硬件·mcu
典则13 小时前
STM32FreeRtos入门(四)——任务状态和调度
stm32·单片机·嵌入式硬件
充哥单片机设计14 小时前
【STM32项目开源】基于STM32的智能天然气火灾监控
stm32·单片机·嵌入式硬件
充哥单片机设计14 小时前
【STM32项目开源】基于STM32的智能仓库火灾检测系统
stm32·单片机·嵌入式硬件
就叫飞六吧15 小时前
普中stm32大Dap烧录流程
stm32
A9better16 小时前
嵌入式开发学习日志38——stm32之看门狗
stm32·嵌入式硬件·学习
小莞尔17 小时前
【51单片机】【protues仿真】基于51单片机智能路灯控制系统
c语言·stm32·单片机·嵌入式硬件·51单片机
辰哥单片机设计1 天前
TT直流减速电机(STM32)
stm32
A9better1 天前
嵌入式开发学习日志36——stm32之USART串口通信前述
stm32·单片机·嵌入式硬件·学习