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。