1. 程式人生 > >高級控制定時器(TIM1和TIM8) 關於死區時間的計算方法

高級控制定時器(TIM1和TIM8) 關於死區時間的計算方法

情況 範圍 定時器 理解 系統 進行 dts 計算方法 分享

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定時器時鐘頻率所對應的死區時間計算方法,換成其他時鐘頻率計算也是一樣,求出周期時間即可。

>>> 此時,若要計算死區設定時間,將範圍選定,進行反推,計算出DT(死區時間)的值即可。

高級控制定時器(TIM1和TIM8) 關於死區時間的計算方法