芯源半导体CW32
直播中

远风

10年用户 1155经验值
擅长:MEMS/传感技术 模拟技术 存储技术
私信 关注
[问答]

请问ATIM高级定时器不想进入到死区应该怎么配置?

AtiM高级定时器不想进入到死区应该怎么配置?我设置成0不好使呢

回帖(1)

挽你何用

3 天前

要避免ATIM高级定时器进入死区(Dead Time)状态,需要通过正确配置相关寄存器来完全禁用死区时间功能。以下是关键配置步骤和注意事项:


核心配置步骤(以STM32为例):




  1. 禁用死区时间

    设置死区时间寄存器 BDTR.DTG = 0x00(确保所有位为0)。


    TIMx->BDTR &= ~TIM_BDTR_DTG;  // 清除DTG[7:0]位



  2. 关闭刹车功能

    确保刹车输入无效(禁用刹车):


    TIMx->BDTR &= ~TIM_BDTR_BKE;  // 禁止刹车



  3. 使能主输出(MOE)

    必须开启主输出使能位:


    TIMx->BDTR |= TIM_BDTR_MOE;  // 主输出使能



  4. 检查互补通道配置

    如果不需要互补输出(CHxN),禁用互补通道:


    TIMx->CCER &= ~TIM_CCER_CCxNE;  // 例:禁用CH1互补通道





常见问题排查:




  1. 死区时间未完全禁用  



    • 确保 DTG=0刹车功能关闭(BKE=0):  
      TIMx->BDTR = (TIMx->BDTR & ~TIM_BDTR_DTG) | TIM_BDTR_MOE;
      TIMx->BDTR &= ~TIM_BDTR_BKE;




  2. 寄存器锁定问题  



    • 若BDTR被锁定(LOCK机制),需先解锁:
      TIMx->BDTR |= TIM_BDTR_LOCK_0;  // 最低锁等级(允许修改)




  3. 硬件特性限制  



    • 某些型号有最小死区时间(如STM32F4约90ns),但通常DTG=0可绕过。




  4. 互补通道未关闭  



    • 若未使用CHxN但使能了互补通道,强制关闭:
      TIMx->CCER &= ~(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE);  // 禁用所有互补通道






完整配置代码示例(寄存器版):


// 1. 配置定时器基本参数(模式、周期等)
TIMx->CR1 = ... ;  // 设置时钟分频等
TIMx->ARR = 1000;  // 自动重载值

// 2. 禁用死区并使能输出
TIMx->BDTR &= ~(TIM_BDTR_DTG | TIM_BDTR_BKE);  // 清除死区和刹车
TIMx->BDTR |= TIM_BDTR_MOE;                   // 主输出使能

// 3. 关闭所有互补通道(可选)
TIMx->CCER &= ~(TIM_CCER_CC1NE | TIM_CCER_CC2NE | TIM_CCER_CC3NE);


注意:  



  • MOE(主输出使能)必须置1,否则无PWM输出。  

  • 使用HAL库时,调用HAL_TIMEx_ConfigBreakDeadTime()并设置.DeadTime = 0。  

  • 检查硬件手册确认是否存在最小死区限制。



通过以上步骤,定时器将完全跳过死区逻辑,输出无延迟的PWM信号。若仍有问题,需检查电路设计是否强制要求死区(如半桥驱动)。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分