zoukankan      html  css  js  c++  java
  • 高级控制定时器(TIM1和TIM8) 关于死区时间的计算方法

    TIM1  和TIM8  刹车和死区寄存器(TIMx_BDTR):

    死区时间控制寄存器位:

    首先,理解这些计算位的含意,如下:

      DT 为需要计算的死区时间;

      TDTS为系统时钟所产生的周期时间;

      Tdtg为步进计算值,Tdtg = TDTS * 倍数;

     

    接着,以定时器设定为72MHz进行计算举例:

      TDTS = 1 / 72MHz = 13.89ns;

      当第一种情况,求死区范围方法,即:DTG[7:5] = 0xx => DT = DTG[7:0] × T dtg ,T dtg  = T DTS。

      >>>  可以计算出死区时间为:(0 ~ 2^8 - 1) * 13.89 = 0 ~ 1764ns;

      //DTG[7:5]对应的范围:0 ~ 2^8-1, 下面的对应位也一样,不再说明。

      当第二种情况,求死区范围方法,即:DTG[7:5] = 10x => DT = (64+DTG[5:0]) × T dtg ,T dtg  = 2 × T DTS ;

      >>>  可以计算出死区时间为:(64 + 0 ~ 64 + 2 ^ 6 - 1)  * 2 * 13.89 = 1777.9ns ~ 3528.88ns;

      当第三种情况,求死区范围方法,即:DTG[7:5] = 110 => DT = (32+DTG[4:0]) × T dtg ,T dtg  = 8 × T DTS ;

      >>>  可以计算出死区时间为:(32 + 0 ~ 32 + 2 ^ 5 - 1)  * 8 * 13.89 = 3555.84ns ~ 7000.56ns;

      当第四种情况,求死区范围方法,即:DTG[7:5]=111 => DT=(32+DTG[4:0])× T dtg ,T dtg  = 16 × T DTS ;

      >>>  可以计算出死区时间为:(32 + 0 ~ 32 + 2 ^ 5 - 1)  * 16 * 13.89 = 7157.76ns ~ 14001.12ns;

    以上便是72MHz定时器时钟频率所对应的死区时间计算方法,换成其他时钟频率计算也是一样,求出周期时间即可。

    >>> 此时,若要计算死区设定时间,将范围选定,进行反推,计算出DTG(死区发生器配置)的值即可。

    eg:设置3us的死区时间,那么属于第二种情况;

      DTG[7:5] = 0b10x,T dtg = 27.78;

      DTG[5:0] = 3000 ÷ 27.78 - 64 = 108 - 64 = 44 = 0b101100;

      DTG[7:0] = 0b10 101100 = 0xAC。

  • 相关阅读:
    Queue
    Singly-Linked List
    Array
    HTTP请求详解
    封装element的API
    uniapp登录逻辑
    Selector学习笔记 (未完待续)
    <Scalable IO in Java>学习
    Spring PropertyMapper源码阅读笔记
    leetcode 字节跳动探索系列
  • 原文地址:https://www.cnblogs.com/ownDefine/p/10806125.html
Copyright © 2011-2022 走看看