- 死区时间概念
从BLDC控制换相电路可得出:
当两路互补PWM输出时,为了使桥式换相电路上管T1和下管T2、上管T3和下管T4、上管T5和下管T6不会因为开关速度问题发生同时导通而设置的一个包含时段。
假设STM32高级定时器OCx和OCxN输出互补通道PWM,极性都是高电平有效,则下图标注"延时"那段时间就是死区时间,此时间段上管和下管都没有导通。
2. STM32高级定时器死区时间计算
- 配置断路和死区寄存器(TIMx_BDTR)
2. 死区时间计算示例
假设STM32F407的高级定时器1的时钟为168MHz,设置tDTS = 1/168us。
计算公式表:
DTG[7:5]值 | tdtg值 | 死区时间 |
DTG[7:5]=0xx | tdtg=tDTS=1/168us | DTG[7:0] /168 us |
DTG[7:5]=10x | tdtg=2tDTS=2/168 us | (64+DTG[5:0]) /84 us |
DTG[7:5]=110 | tdtg=8tDTS=8/168us | (32+DTG[4:0]) /21 us |
DTG[7:5]=111 | tdtg=16tDTS=16/168us | 2*(32+DTG[4:0]) /21 us |
死区时间设置2us,经过估算该死区时间落在DTG[7:5]=110段。
(32+DTG[4:0]) /21 us= 2us,计算出DTG[4:0]=10=01010B
再与DTG[7:5]拼接,最后算得DTG[7:0]=10=11001010B=0xCA。
死区时间设置4us,经过估算该死区时间落在DTG[7:5]=111段。
2*(32+DTG[4:0]) /21 us= 4us,计算出DTG[4:0]=10=01010B
再与DTG[7:5]拼接,最后算得DTG[7:0]=10=11101010B=0xEA。
3. 配置死区时间过程可能出现的问题
问题1:发现插入死区时间后,没有互补脉冲输出了。一般是死区参数设置不合适导致出现了以下两种情况。
如果延迟时间大于有效输出(OCx或OCxN)的宽度,则不会产生响应的脉冲。