STM32F4单片机对于定时器1的死区时间计算

STM32F4单片机对于定时器1的死区时间计算

1.理论依据

根据博客STM32高级控制定时器(TIM1和TIM8) 关于死区时间的计算方法提及的,如图:
STM32F4单片机对于定时器1的死区时间计算

2.推论

可以看出,死区时间的设置分为4种算法,而不是想当然的计数乘以机器周期,类似阶梯收费,每一梯队的步长不同,因而可以得到四个区间(由于STM32F407VE单片机的主频是168M,这里仅描述168M下的情况):

寄存器[7:5] 计算式 区间 (us) 步长(us)
0xx (0~127) / 168 0~0.7559 0.0059
10x (64+ (0~63) ) / (168/2) 0.7619~1.511 0.0119
110 (32+ (0~31) ) / (168/8) 1.5238~3 .0476
111 (32+ (0~31) ) / (168/16) 3.0476~6 0.0952

然后,进一步可对公式进行反推
( 168 / 2 )*yms-64=x;
( 168 / 8 )*yms-32=x;
(168 / 16)*yms-32=x;

式中yms为某区间内需要的死区时间,x为最终填入寄存器DTG的数值。

例如:我需要5us的死区时间,则选择区间3(111),然后经过计算得,X=20.5,取整数21。
则DTG的值:[7:5]=111,[4:0]=1 0101(21),DTR=1111 0101=0xF5=245。

填入程序
STM32F4单片机对于定时器1的死区时间计算

用示波器观察可以发现,死区时间和计算的吻合。
STM32F4单片机对于定时器1的死区时间计算

3.总结

综上所述。我们在设置死区时间的时候应先选择合适的区间,再根据公式反推需要填写的值。