STM32F4单片机对于定时器1的死区时间计算
STM32F4单片机对于定时器1的死区时间计算
1.理论依据
根据博客STM32高级控制定时器(TIM1和TIM8) 关于死区时间的计算方法提及的,如图:
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。
填入程序
用示波器观察可以发现,死区时间和计算的吻合。
3.总结
综上所述。我们在设置死区时间的时候应先选择合适的区间,再根据公式反推需要填写的值。