IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 高级定时器TIM1&TIM8工作原理和功能 -> 正文阅读

[嵌入式]高级定时器TIM1&TIM8工作原理和功能

目???录

1.?TIM功能框图及简述

2. ??时钟源部分

3.?控制器部分

4. 时基部分

5. 输入捕获部分

6. 输入捕获和输出比较共用部分

7. 输出比较部分

8. 产生中断/DMA的条件

9. 各寄存器功能简单总结

10. 一般配置思路


1.?TIM功能框图及简述

????????1:时钟源部分

????????2:控制器部分

????????3:时基部分

????????4:输入捕获部分

????????5:输入捕获和输出比较共用部分

????????6:输出比较部分

? ? ? ? 高级TIM所包含的部分基本为这6个,下面将一一讲解,了解整体架构后,再看说明书去配置,会事半功倍。

2. ??时钟源部分

? ? ? ? 首先使用高级TIM,就必须要选择时钟源,高级TIM提供了4种方式提供时钟源。

? ? ? ?1. 内部时钟源---------CK_INT:就是片上提供的系统时钟。

? ? ? 2. 外部时钟模式1—外部GPIO Tix:可以通过GPIO或者其他方式连接该引脚,从而提供时钟(通过它提供时钟的方式不经常用)

? ? ? ? 信号的运行路径如下:

? ? ? ? 以下为外部时钟1部分的详图:

? ? ? ?3. 外部时钟模式2—外部GPIO ETR:与外部时钟模式1类似,可以通过GPIO或者其他方式连接该引脚,从而提供时钟(通过它提供时钟的方式不经常用)

? ? ? ? 以下为外部时钟2部分的详图?

????????外部时钟1和2的区别:

? ? ? ? ? ? 1.外部时钟1提供没有divider(分频器),外部时钟2提供divider,2模式可以进行降频。

? ? ? ? ? ? 2.外部时钟1共有4个通道可用(CHx),外部时钟2仅有一个通道可用(CH1)。

? ? ? ? 4. 内部触发输入:

? ? ? ? 使用该模式时,可以将另一个TIM设置为主模式,从而可以TRGO输出时钟,用作该TIM的时钟。简单讲,就是两个TIM共用一个时钟

????????内部触发输入如下图:

????????作用:

????????接收“主定时器”发送的时钟。

????????如下图:

?

3.?控制器部分

????????

? ? ? ? 如图为控制器部分框图。

? ? ? ? 讲完时钟了,要了解下控制器部分,其实控制器用作选择做这三件事:

? ? ? ? ? ? ? ? 1. 是否设置为主模式,这样的话就能把自己的时钟,通过TRGO这个引脚,输出出去,这个引脚可以连接到另一个TIM的ITRx引脚,从而实现共用时钟,其实上面提到过。

? ? ? ? ? ? ? ? 2. 是否配置触发模式,就是不通过使能寄存器来让TIM工作,而是通过一个规定电平来触发,可以是上升沿、下降沿,从而让TIM工作,或者复位,等。

? ? ? ? ? ? ? ? 3. 选择那种方式提供时钟,时钟源部分只是讲了,有哪些时钟,但真正选择用哪一个,在该部分配置。

????????看两个寄存器的功能描述涵括其所拥有的作用(实际牵连的寄存器不仅此两个):

????????主模式选择位

????????位6:4 MMS[1:0]:Master mode selection

????????这些位可选择主模式下将要发送到从定时器以实现同步的信息(TRGO)。

????????作用

????????使能输出TRGO(Trigger Output)提供自己的时钟给其他定时器

????????例如如图:?TIM1将自己的时钟做为TRGO提供,TIM2接收TRGI,做为TIM2的时钟。

????????从模式选择位

  1. 000禁止从模式:选择内部时钟,直接提供时钟到时基部分,无法开启触发功能。
  2. 100复位模式:所选触发输入(外部时钟输入)上升或下降时,reset时基部分的计数器。
  3. 101门控模式高电平或低电平使能时基部分的计数器,反向电平停止计数。
  4. 110触发模式:上升沿或下降沿启动计数器
  5. 另外外部时钟也可选择不使用触发的模式。

????????作用:

????????使能输出TRGI(Trigger Input)

????????控制器的作用:

  1. 提供Trigger Output
  2. 提供Trigger Input
  3. 选择时钟。

????????注:

????????1.?触发共三种功能: 复位、门控、启动。

????????2.这里提到的主模式和从模式没太大关系,一个TIM可以同时使用主从模式。

????????????????例如:TIM1可使用内部时钟 +?启动trigger +?提供TRGO。

????????????????效果:触发后,启动时钟并把时钟提供给“从TIM”。

????????3.常使用外部时钟1的通道作为触发通道

? ? ? ? ? ? ? ? 例如:可以使用CH1作为触发,我们设置为上升沿触发,之后,选择时钟源为内部时钟源。这里不要晕,触发和时钟源是两回事,CH1可以作为提供时钟源的引脚(配置CH1为外部时钟模式1),也可以作为触发,他们使用的通道和信号的路径是一样的而已,当然CH1配置为触发时,就不能再作为外部时钟引脚了,可以用CH2!但是UP没试过,理论可以。

4. 时基部分

? ? ? ? 时基部分,是整个TIM最最最核心的部分,可以说是大脑,下面一切功能都是围绕CNT这个寄存器做的。

? ? ? ? PSC是分频器,可以通过它来给输入过来的时钟分频进行分频,之后,在配置使能后,每个CK_CNT(就是从分频器出来的时钟),CNT counter就++或者--,看下面怎么配置的,当CNT==ARR(auto-reload register,自动装置寄存器,就是当CNT上下溢了,就可以将ARR的值重新给CNT),就产生更新事件。这里根据配置,不一定就是CNT==ARR,也可能CNT==0,下面会讲解。

????????REP寄存器用于配置重复计数(RCR),CNT每次自动重装时REP-1,到REP等于0时产生更新事件(可以是中断,可以是唤醒DMA,在于如何配置相应寄存器)。

????????预分频寄存器(PSC)为16位寄存器。

????????计数寄存器(CNT)为16位寄存器。

????????自动装载寄存器(ARR)为16位寄存器。

????????和TIM类似,控制器提供CK_PSC到PSC,PSC提供CK_CNT到CNT,CNT开始计数。

????????CNT计数方式共三种,up?/?down?/?center

????????Up:CNT从0开始++计数,当值等于自动装载寄存器(ARR)时,产生更新事件,CNT再次从0计数。

????????Down:CNT从自动装载寄存器值(ARR)开始-?-?计数,到0时,产生更新事件,CNT再次装载ARR的值。

????????CenterCNT从0开始++计数,等于ARR-1时,产生更新事件,CNT此时等于ARR-1,从该值-?-计数,等于0时,产生更新事件。

5. 输入捕获部分

? ? ? ? OK,以上的基础部分讲解完毕,下面就是重要的功能部分了。

????????作用:

????????测量输入信号的周期

????????测量输入PWM信号的占空比/周期。

????????工作原理:

????????当捕获到信号的跳变沿(上升/下降/双沿)时,把CNT的值锁存到CCR中,产生更新事件(中断/DMA)。

????????测量原理(以下为软件操作)

????????每次产生更新事件(中断/DMA),在处理函数中(中断/DMA)读取CCR的值并保存,将上次捕获的CCR值与本次相减,结果可计算脉宽或周期。

????????注:

????????当设置单沿捕获时,结果可计算周期

????????当设置双沿捕获时,结果可计算周期/脉宽,但是无法知道脉宽是高电平的,还是低电平的,因为无法具体判断是上升还是下降触发的

????????整体框图如下:

????????如图,一个输入信号通道可以占用两个捕获通道(IC1和IC2),TI1FP1可以给IC1TI1FP2可以给IC2,因此可以用该方法测量输入PWM的占空比及周期。

????????测量PWM输入的占空比及周期

????????CH1做为输入通道,IC1捕获上升沿,IC2捕获下降沿。

????????与普通方法比较:

  1. 普通方法该过程需要产生两个中断,该方法仅需要产生一个中断。就是说,PWM输入捕获模式,其实就是用了两个寄存器来分别捕获上升沿、下降沿触发时的CNT的值了,看上图可知,TI1刚上升时,IC1和IC2复位(或者IC1捕获CNT的值,这里其实是配置成了触发复位的方式),也可以理解为,TI1刚上升时,IC1捕获CNT的值,TI1下降沿时,IC2捕获CNT的值,此时可以让IC2不产生中断,只让IC1产生中断,(因为下个触发是IC1,所以IC2的值不会变化,这样就不影响)这样就能少一个中断的产生。
  2. 普通方法测PWM,只能用双沿触发,因为无法判断上升还是下降沿,因此无法算出占空比。

????????如下图:

????????无法确定是A,还是B。

6. 输入捕获和输出比较共用部分

????????捕获/比较寄存器(CCR)为16bit。

????????输入捕获时:该寄存器做捕获寄存器。

????????输出比较时:该寄存器做比较寄存器。

????????因此不管是输入捕获还是输出比较,亦或是两者混合,同时使用的个数都不能超过4。

7. 输出比较部分

????????作用:

????????通过定时器的外部引脚对外输出控制信号。

????????常用做PWM输出

????????工作原理:

????????CNT <= ?CCR 时输出高/低电平。

????????CNT > ??CCR 时输出反向电平。

????????PWM输出:

????????PWM输出与普通输出比较原理一样,仅寄存器配置的不同。

????????总体分两种:边沿对齐模式、中心对齐模式

????????其实就是基时部分CNT的计数方式,up/down 为边沿对齐,center为中心对齐

????????简单解释下:看上图,拿DOWN模式举例,CNT初始值等于ARR,假设CNT==ARR==0XFFFF,我们假设配置假设CNT <= CCR 输出高,CNT>CCR输出低。刚开始,CNT==ARR且CNT>CCR,此时输出低,随着CNT- - ,当CNT==CCR了,此时就输出高,后面就好是CNT<CCR,依旧输出高。

????????假设CNT <= CCR 输出高,CNT>CCR输出低。输出的PWM如下图:

????????整体框图

8. 产生中断/DMA的条件

????????以下各条件可通过寄存器使能或关闭:例如你可以配置CNT==0时,不让他产生更新事件(中断/DMA),例如:你可以配置捕获输入CCR1,捕获到目标信号后,不产生中断。

  1. 更新事件(CNT上/下溢出)
  2. 捕获(输入捕获时,捕获到目标信号)
  3. 比较(输出比较时,CNT == CCR)

9. 各寄存器功能简单总结

一下部分为UP呕心沥血整理的,当想配置对应部分了,就可以直接到对应寄存器里找,另外,并不是非常准确,毕竟STM在这块设计就很乱,如果看手册了就知道我这话的意思了,但整体是准确的。

1.??CR1: ?时基配置。

2.??CR2: ?控制器配置。

3.??SMCR: ?控制器配置。

4.??DIER: ???使能 中断/DMA相关配置。

5.??SR: ???状态 中断相关配置。

6.??ERG:??是否产生中断/DMA?中断/DMA相关配置。

7.??CCMR1:CH1/CH2 捕获/比较配置。

8.??CCMR1:CH3/CH4?捕获/比较配置。

9.??CCER: ?使能 捕获/比较配置。

10.??CNT: ?计数寄存器。

11.??PSC: 分频寄存器。

12.??ARR: 自动装载寄存器。

13.??DCR: DMA配置相关。

14. DMAR: DMA配置相关。

15. CCR1/CCR2/CCR3/CCR4:捕获/比较寄存器。

10. 一般配置思路

其实你看到的所有乱七八糟的功能,都是通过这几个部分的不同工作模式,组合而成的。

例如:

????????什么单脉冲模式啊:就是CH2做触发,使用内部时钟,使用比较输出,输出一个脉冲。

1:时钟源部分

2:控制器部分

3:时基部分

4:功能部分:

????????输入捕获部分

????????输出比较部分

以上按照1-4的顺序配置,即可

有了以上知识,再去看STM的高级定时器TIM1&TIM8的说明书部分,应该会清晰很多。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:12:15  更:2022-09-24 21:14:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 1:08:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计