STM32高级定时器死区时间设置探究
一、死区设置位置:
决定死区时间设置的位是‘刹车和死区寄存器TIM1->BDTR’中的DTG[7:0],设置范围是0x00~0xff。
二、死区时间设置公式如下:
DT为死区持续时间,TDTS为系统时钟周期时长,Tdtg为系统时钟周期时长乘以倍数后的死区设置时间步进值。
在72M的定时器时钟下TDTS=1/72M=13.89ns.
所以以第一个公式,死区时间能以13.89ns的步进从0调整到127*13.89ns=1764ns
第二个公式则能(64+0)*2*13.89~(64+63)*2*13.89=1777.9ns~3528.88ns
换个角度看,就是(128~254)*13.89
同理,第三个公式就是3555.84ns~7000.56ns
换个角度看,就是(256~504)*13.89
第四个公式就是7111.68ns~14001.12ns
换个角度看,就是(512~1008)*13.89
综上:
死区时间就是不同的公式代表不同范围的死区时间设置,这个范围是互不重叠的。
而但是在不同的死区时间范围内死区时间设置步进是不同的。
若某个系统时钟下的死区时间不够,可以通过改变定时器时钟来改变最大死区时间范围。
当根据硬件电路的特性定下死区时间后,可以根据目标死区时间范围来找到相应的公式,然后代入公式求解出相应的整数(有时候不一定是整数,那就选择最近的那个),拼接DTG[7:5]+DTG[4:0]即可。
例子:这样当我需要3us的死区持续时间时,则可这么计算:
3us在第二个公式决定的死区范围之内。
所以选择第二个公式。
3000/(13.89*2)=108,所以DTG[5:0]=108-64=44,所以DTG=127+44=171=0Xab
TIM1->BDTR|=0xab;
反过来验算//72Mhz,死区时间=13.89nsX108*2=3000us
经示波器验证,完全正确。
By zxx2013.07.18。