美文网首页我爱编程
运动控制器17:STM32的通用定时器

运动控制器17:STM32的通用定时器

作者: 吴松乾 | 来源:发表于2018-01-12 15:33 被阅读0次

    TIMx简介

    • 可编程预分频驱动
    • 16位
    • 自动装载计数器
    • 用于
      • 输入:测试脉冲宽度
      • 输出:产生输出波形(输出比较和PWM)
    • RCC预分频和定时器预分频,精度:nus级
    • 定时器完全独立

    TIMx主要功能

    • 通用定时器包括TIM2 3 4 5
    • 16位向上,向下,向上/向下自动装载
    • 预分频
    • 4个通道:输入捕获,输出比较,PWM生成,单脉冲输出
    • 外部信号控制定时器实现同步
    • 中断:更新,触发事件(起停,初始化和外内触发)以及输入捕获和输出比较
    • 支持编码器和霍尔传感器
    • 触发输入可用于电流管理

    TIMx功能描述

    时基单元

    • 定时器组成为16位计数器和自动装载寄存器
    • 可向上,向下和上下双向计数
    • 三个重要寄存器:计数器,预分频,自动装载
    • 更新事件:UEV
    • 自动装载寄存器:ARR
    • 预装载寄存器:PSC

    计数器模式,一共有三种

    向上计数模式
    • 从0到ARR,产生UEV
    • 可以禁止更新,否则ARR的影子寄存器也会被更新
    • 更新时,所有的寄存器都更新
    向下计数模式
    • 基本同上文,从ARR到0
    双向计数模式
    • 基本同上文,有两次UEV产生

    时钟选择

    1. 内部时钟最常用
    2. 外部时钟模式有两种,TIx和ETR
      流程如下:(相当于是计数)
      • 设置检测的通道
      • 选择滤波器带宽
      • 上升沿极性
      • 选择定时器时钟模式
      • 选择触发输入源
      • 启动定时器
        ETR模式时,设置滤波,分频,检测沿和开启模式和定时器即可,基本同TIX
    3. 内部触发IIRx,可以将两个定时器进行联动

    捕获和比较通道

    • 包括比较寄存器
      • 输入为数字滤波,多路复用和预分频器
      • 输出为比较器和输出控制

    输入捕获模式

    • 捕获的概念一定要搞懂:捕获模式下,当检测到某种边沿的信号时,计数器的当前值被锁存到CCR中,SR置位,产生中断或者DMA操作,这样的功能可以用来测试PWM的宽度。
    • 编程步骤如下:
    • 选择输入端
    • 配置滤波器的带宽
    • 设置有效边沿
    • 设置预分频
    • 允许捕获寄存器操作
    • 允许中断
    PWM输入模式
    • 这个是输入捕获模式的一个特例,比如我们要测试PWM的占空比,CCR1用于保存周期,CCR2保存高电平事件,如下图:


      3.png
    • 操作如下:
    • 设置CCR1和CCR2的有效输入
    • 设置CCR1和CCR2有效极性
    • 设置有效的触发信号

    输出比较模式

    • 比较输出功能用于控制一个输出的波形,或者指示一段时间已经到,将计数器与比较寄存器进行对比,相同时输出到设置的引脚,输出的电平同样可以设置。
    • 设置中断位,产生中断或者DMA操作
    • 输出比较模式的设置流程如下:
    • 选择时钟
    • 将数据写入ARR和CCR中
    • 如需要,设置中断和DMA
    • 设置输出模式(电平极性)
    • 启动


      4.png

    PWM模式

    比如要输出周期为8,高电平占3的PWM输出波形,则ARR为8,而CCRX为3,

    • ARR决定频率
    • CCRx决定占空比
    • 同样可以分为向上对齐,向下对齐和中央对齐的方式,下面是中央对齐方式的输出


      5.png

    单脉冲模式

    外部引脚接收到一个脉冲,比如按键,我们需要延时TDELAY以后,产生一个脉宽为TPULSE的脉冲。其中延时由CCR1来决定,脉冲由ARR-CCR1来决定.

    在外部事件时清除OCXREF

    这种方式下可以用于做电流控制,正常比较输出模式下,计数超过CCRX时,输出为低电平,如果CCRX固定,则输出的脉宽是固定的,但如果有外部引脚输入一个高电平(电流超出),则直接拉低输出。

    编码器接口模式

    这个在步进电机上会有用到,重点关注一下,图如下:


    6.png
    • 可以设置在T1和T2计数或者同时计数
    • 选择极性,这里为上升沿计数,同时可以设置滤波器
    • 通过两个输入的顺序,确定方向,这个方向值实时检测,相当于两个脉冲的顺序,为定时器增加了一个方向控制的信号,当然,定时器的其他功能都可以正常使用。
    • 增量编码器还有一个引脚为机械零点,我们可以设置成为外部中断,在中断服务程序中设置计数器进行复位。
    • 编码器输出给单片机建议使用比较器进行隔离,以提高抗干扰能力
    • 两个编码器输入事件的间隔信息,我们可以读取以后,从而转换成机械的动态信息(速度,加速度,减速度)

    定时器输入异或功能

    定时器和外部触发的同步

    定时器和外部信号组合在一起,有三种模式

    1. 复位模式
      外部脉冲输入时,所有的寄存器重新读取,重新计时,同时触发标志,进行中断和DMA请求。
    2. 门控模式
      只在有外部信号时计数,其他事件计数器暂停。
    3. 触发模式
      有某个事件时,使能计数器
    4. 外部时钟模式+触发模式
      时钟由外部输入,同时用触发信号进行控制。

    定时器同步

    一个定时器处于主模式,对另外一个处于从模式的定时器进行复位,启动,停止和提供时钟等操作。

    1. 做为分频器

    配置定时器1为主模式,每次中断时输出一个上升沿
    上升沿连接到定时器2,配置定时器2为从模式
    把定时器2用外部时钟模式1下,这样就连接起来了
    最后启动两个定时器

    1. 使能从定时器

    同样设置定时器1为主模式
    设置定时器1的OC1REF波形,输出比较
    配置定时器2的触发
    定时器2为门控模式,也就是说,定时器1溢出以后,才控制定时器2开始计数
    最后启动两个定时器

    1. 一个定时器去启动另一个定时器

    有点类似于接力棒,一个定时器截至以后,另外一个接着计数,但是计数器1在重新计数

    4.外部信号同步启动两个定时器

    相关文章

      网友评论

        本文标题:运动控制器17:STM32的通用定时器

        本文链接:https://www.haomeiwen.com/subject/ckyfoxtx.html