STM32 高级定时器死区时间计算与互补 PWM 输出配置避坑

· 行业用户 · 19 浏览

回答(4)

刹车输入BKIN建议使能滤波和上拉,否则电机干扰会误触发封波,导致互补PWM突然消失。
电机控制王工 · 2026-11-11
调试时先关死区看波形,再逐步加死区;注意互补输出默认高阻,MOE没开示波器一片平。
嵌入式小刘 · 2026-11-11
死区计算别只看CubeMX显示值,它按整数分频取整,实际死区可能偏大。建议手算DTG并回读BDTR寄存器验证。
硬件老张 · 2026-11-11
STM32高级定时器(TIM1/TIM8)死区时间由BDTR寄存器DGT[7:0]位配置,实际死区=DTG值×tDTS,其中tDTS=1/fCK_INT(或分频后时钟)。关键坑:1)DTG不是线性编码,0~127为DTG×tDTS,128~191为(64+DTG[5:0])×2×tDTS,192~255为(32+DTG[5:0])×8×tDTS,必须按分段公式反算;2)互补输出必须使能MOE(BDTR bit15),否则无输出;3)死区时间要大于驱动+MOS开关延时,但需小于最小脉宽,否则窄脉冲被吞;4)CCER中CCxE/CCxNE同时置位才互补,刹车BKIN要配置BKPolarity和自动恢复;5)用CubeMX生成后务必核对BDTR实际值,建议用示波器测互补边沿死区。
mcuku 阿沐 · 2026-11-11