定时器中BDTR死区时间和刹车功能配置
目录
一、代码示例
注意事项:
二、死区时间计算(2us是一个常见的经验值!!!)
1、基础知识了解
1)DTG[7:0]: 死区发生器设置 (Dead-time generator setup)
2)每种模式计算出的死区时间范围
a)区间1:直接模式
b)区间2:二倍延展模式
c)区间3:八倍延展模式
d)区间4:十六倍延展模式
总结
3) 步长
2、通俗易懂示例
示例1
实例2
三、定时器刹车功能什么作用?
1)防止意外动作
2)避免硬件损坏
3)提高系统稳定性
4)简化软件设计
5)支持特殊应用需求
一、代码示例
// 配置死区时间和刹车功能TIM_BDTRInitTypeDef TIM_BDTRInitStruct= {0};TIM_BDTRInitStruct.TIM_OSSIState = TIM_OSSIState_Disable; /* 非工作状态输出(禁用) */
TIM_BDTRInitStruct.TIM_OSSRState = TIM_OSSRState_Disable; /* 非工作状态输出(禁用) */
TIM_BDTRInitStruct.TIM_LOCKLevel = TIM_LOCKLevel_OFF; /* 锁定级别(无锁定) */
/* 定时周期 = (ARR+ 1)* (Prc + 1)/ SystemClock */
TIM_BDTRInitStruct.TIM_DeadTime = 0x02; /* 设置死区时间(假设2个周期,一个周期1ms)*/
TIM_BDTRInitStruct.TIM_Break = TIM_Break_Disable; /* 禁用刹车功能 */
TIM_BDTRInitStruct.TIM_BreakPolarity = TIM_BreakPolarity_High; /* 刹车极性(高电平有效) */
TIM_BDTRInitStruct.TIM_AutomaticOutput = TIM_AutomaticOutput_Enable; /* 启用自动输出 */TIM_BDTRConfig(TIM1, &TIM_BDTRInitStruct); /* 配置死区时间和刹车参数 */
注意事项:
1)死区时间计算:确保计算准确性,避免过短或过长。
过短:可能无法防止直通;
过长:影响系统性能。
2)刹车信号:刹车功能的实现需要外部信号连接到定时器的刹车输入引脚(如TIM1_BKIN),并根据实际需求设置刹车极性;
3)锁定级别:如需在运行过程中修改死区时间或刹车配置,应确保锁定级别设置为无锁定。
二、死区时间计算(2us是一个常见的经验值!!!)
牢记!!!
2us是一个常见的经验值,能够在保证安全的同时,尽量减少对系统性能的影响。
1、基础知识了解
1)DTG[7:0]: 死区发生器设置 (Dead-time generator setup)
DTG[7:5]决定了死区时间计算模式和倍数:
>> 0xx:直接模式,倍数为1;
>> 10x:二倍延展模式,倍数为2;
>> 110:八倍延展模式,倍数为8;
>> 111:十六倍延展模式,倍数为16
2)每种模式计算出的死区时间范围
下文中tDTS实际上是
假设定时器时钟频率72MHz(未分频),则定时器时钟周期:
tDTS = 1 / (72e6) = 13.89 ns
a)区间1:直接模式
DTG值范围0x00-0x7F (十进制0-127)
死区时间计算公式1
DT = DTG x tDTS
时间范围:
>> 最小值:0 x 13.89 ns = 0 ns
>>最大值:127 x 13.89 ns = 1763.89 ns
b)区间2:二倍延展模式
DTG值范围0x80-0xBF (DTG[5:0]为0-63)
死区时间计算公式2
DT = (64 + DTG[5:0]) x 2 x tDTS
时间范围:
>> 最小值:(64 + 0) x 2 x 13.89 ns = 1778.4 ns
>> 最大值:(64 + 63) x 2 x 13.89 ns = 3528.06 ns
c)区间3:八倍延展模式
DTG值范围:0xC0-0xDF(DTG[4:0] 为0-31)
死区时间计算公式3
DT = (32 + DTG[4:0]) x 8 x tDTS
时间范围:
>> 最小值:(32 + 0)x 8 x 13.89 ns = 3555.84 ns = 3.56 us
>> 最大值:(32 + 31)x 8 x 13.89 ns = 7000.56 ns = 7 us
d)区间4:十六倍延展模式
DTG值范围:0xE0-0XFF(DTG[4:0]为0 - 31)
死区时间计算公式4
DT = (32 + DTG[4:0]) x 16 x tDTS
时间范围:
>> 最小值:(32 + 0)x 16 x 13.89 ns = 7111.68 ns = 7.11 us
>> 最大值:(32 + 31) x 16 x 13.89 ns = 14001.12 ns = 14 us
总结
模式 | 时间范围 |
区间1:直接模式 | 0 ns - 1763.89 ns |
区间2:二倍延展模式 | 1778.4 ns - 3528.06 ns |
区间3:八倍延展模式 | 3.56 us - 7 us |
区间4:十六倍延展模式 | 7.11 us - 14 us |
表格1
3) 步长
a)概念:指用于计算死区时间的基本单位,它决定了死区时间的最小增量。直接影响死区时间的精度和范围。
b)作用:
>> 确定死区时间的最小增量:步长越小,死区时间的调整精度越高
>> 与乘数结合计算死区时间:死区时间DT = 步长 x 乘数
总结
模式 | 步长时间 |
区间1:DTG[7:5] = 0xx | 1 x tDTS |
区间2:DTG[7:5] = 10x | 2 x tDTS |
区间3:DTG[7:5] = 110 | 8 x tDTS |
区间4:DTG[7:5] = 111 | 16 x tDTS |
表格2
2、通俗易懂示例
根据表格1和表格2来计算,先根据表格1来确定用哪个公式,再利用表格2确定DTG[7:5]值,无关位写0
示例1
假设定时器时钟频率为1MHz,希望设置死区时间为2us
第一步:计算时钟周期
tDTS = 1 / 1MHz = 1us
第二步:由于2us在公式2范围内(1777.92ns - 3528.06ns ),使用公式2:
2us = (64 + DTG[5:0]) x 2 x 1us
>>解得:DTG[5:0] = 7.994 = 8
>> DTG[7:0] = 0b1000 1000 = 0x88 = 136
实例2
假设定时器时钟频率为1MHz,希望设置死区时间为4us
第一步:计算时钟周期
tDTS = 1 / 1MHz = 1us
第二步:由于4us在公式3范围内(3555.84ns - 7000.56ns ),使用公式3:
4us = (32 + DTG[4:0]) x 8 x 1us
>>解得:DTG[4:0] = 10.943 = 11
>> DTG[7:0] = 0b1100 1011 = 0xCB = 203
三、定时器刹车功能什么作用?
1)防止意外动作
>> 故障保护:当系统检测到故障或异情况(如过流、过压、短路等)时,刹车功能可以立即停止输出信号,防止电机或其他设备继续运行,避免造成更大的损坏或危险。
>> 紧急停止:紧急情况下,需要立即停止设备运行,刹车功能能够迅速响应,强制关闭输出,确保设备和人员安全。
2)避免硬件损坏
>> 防止直通短路(H桥);
>> 保护功率器件;
3)提高系统稳定性
>> 防止失控:在某些应用中,如电机控制出现故障,电机可能会失去控制,导致意外运动。刹车功能可以及时介入,强制停止电机,保持系统的稳定;
>> 配合死区时间:刹车功能通常与死区时间配合使用。死区时间可以防止互补输出信号同时切换,而刹车功能则提供了额外的安全保障,确保在异常情况下系统能够安全停止。
4)简化软件设计
>> 硬件级保护:刹车功能由硬件实现,响应速度快于软件控制,提高系统的实时性和可靠性;
>> 减少软件复杂性:不需要编写复杂的故障处理和安全保护代码;
5)支持特殊应用需求
>> 精确控制:如伺服系统,刹车功能可以帮助实现快速、准确的停止,满足特定的控制要求;
>> 符合安全标准:对于某些安全领域较高的应用,如工业自动化、汽车电子等,刹车功能是满足相关安全标准和规范的重要措施。