如何计算STM32高级定时器的死区时间?

STM32———高级定时器的死区时间计算方法

1.定时器的时钟分频因子和预分频系数的区别:

1.1 时钟分频因子(Clock division),决定定时器的工作时钟频率.
tDTS=fDTS ; tCK_INT=fCK_INT

1.2 预分频系数决定计数器的工作时钟的,配合自动重装载值Period完成定时功能。

2. 死区的时间计算过程
计算公式
上图是计算公式:
DT为死区时间;
TDTS为定时器的时钟周期;
Tdtg为步长,等于定时器的时钟周期时长乘以倍数;
DTG寄存器为死区时间存储值。

例如:系统时钟为72MHz,时钟分频因子为1分频。
定时器的时钟周期:TDTS=1/tDTS=1/tCK_INT=1/72MHz=13.89ns.
根据公式可算出可能的死区时间范围如下四种情况:
1.DT=DTG[7:0]×Tdtg,Tdtg=TDTS
DT=(0~127)×13.89ns
DT=0~1763.89ns
2.DT=(64+DTG[5:0])×Tdtg,Tdtg=2×TDTS
DT=(64+(0~63))×2×13.89ns
DT=(64~127)×2×13.89ns
DT=1777.92ns~3528.06ns
3.(32+DTG[4:0])×Tdtg,Tdtg=8×TDTS
DT=(32+(0~31))×8×13.89ns
DT=(32~63)×8×13.89ns
DT=3555.84ns~7000.56ns
DT=3.56us~7us
4.(32+DTG[4:0])×Tdtg,Tdtg=16×TDTS
DT=(32+(0~31))×16×13.89ns
DT=(32~63)×16×13.89ns
DT=7111.68ns~14001.12ns
DT=7.11168us~14us

死区时间范围 步长
0~1763.89ns Tdtg =13.89ns
1777.92ns~3528.06ns Tdtg×2
3555.84ns~7000.56ns Tdtg×8
7111.68ns~14001.12ns Tdtg×16

1.假如 定时器的工作时钟频率72MHz,时钟分频因子1分频,死区时间设置为152ns。则DTG寄存器值为多少?
因为:死区时间152ns在步长Tdtg =13.89ns的死区范围内
所以:DTG寄存器值=152ns÷13.89ns=10.943≈11。
2.假如 定时器的工作时钟频率72MHz,时钟分频因子1分频,死区时间设置为2us。则DTG寄存器值为多少?
因为:死区时间2us在步长Tdtg ×2的死区范围内
所以:DTG[7:6] = 0b10。
DTG[5:0]寄存器值=2000ns÷(13.89ns*2)-64=7.994240460763139≈8. 二进制为:0x001000.
综上所述:DTG[7:0] = 0b10001000 = 0x88=136

物联沃分享整理
物联沃-IOTWORD物联网 » 如何计算STM32高级定时器的死区时间?

发表评论