STM32
直播中

ytrwv

9年用户 932经验值
擅长:EMC/EMI设计
私信 关注
[问答]

STM8 TIM1的互补模式下同时输出有效电平应该怎么设置?

新手一枚,请教各位大神一个问题,在STM8高级定时器tiM1的互补模式中,死区的设置是为了管理输出的瞬间关断和接通,避免关闭前一个设备和打开后一个设备时因为开关速度的问题出现同时开启状态而增加负荷的情况(在没有彻底关闭前打开了后一个设备),尤其是电流过大时容易造成短路等损坏设备。那现在我想让互补的这两个通道同时为有效电平(即同时打开开关)应该怎么设置?

回帖(2)

何夏庄

2024-5-6 15:51:31
互补模式下无法同时有效, 不知道如果硬件修改为极性相反有效是不是可行
举报

张虎豹

2024-5-8 17:47:50
要在STM8的TIM1定时器的互补模式下同时输出有效电平,您需要调整死区时间(dead-time)和占空比(duty cycle)。以下是详细步骤:

1. 首先,确保您已经正确配置了TIM1定时器的基本参数,如时钟源、预分频器等。

2. 启用互补模式:在TIM1的CR2寄存器中,将CCPC(互补通道输出的强制操作)位设置为1。

3. 设置死区时间:在TIM1的BDTR寄存器中,配置DTG(死区时间)字段。死区时间是两个互补通道之间的最小时间间隔。要使两个通道同时为有效电平,您需要将死区时间设置为0。

   ```
   TIM1_BDTR.BDTR.DTG = 0;
   ```

4. 设置占空比:您需要确保两个互补通道的占空比之和小于100%。例如,如果一个通道的占空比为50%,另一个通道的占空比也应为50%。这样,两个通道将同时为有效电平。

   ```
   TIM1_CCR1H = (TIM1_ARR / 2) >> 8; // 设置通道1的占空比为50%
   TIM1_CCR1L = (TIM1_ARR / 2) & 0xFF;
   TIM1_CCR2H = (TIM1_ARR / 2) >> 8; // 设置通道2的占空比为50%
   TIM1_CCR2L = (TIM1_ARR / 2) & 0xFF;
   ```

5. 启动TIM1定时器:确保TIM1定时器已经启动。

   ```
   TIM1_CR1.CEN = 1;
   ```

通过以上步骤,您应该能够在STM8的TIM1定时器的互补模式下同时输出有效电平。请注意,这种方法可能会导致电流过大,因此在实际应用中需要谨慎使用。
举报

更多回帖

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