野火STM32电机系列(五)使用Cubemx配置高级定时器TIM1

鸽了一段时间,放心不会断的哈,目前仅仅是显示屏坏了,不影响后面项目

前文已经配置了GPIO、编码器

本节讲解CubeMX高级定时器TIM1配置带死区的6路互补的PWM

同时配置信号触发后续ADC采集

板子引角的原理图如下

对应的:

Motor1–U+–PA8–TIM1_CH1

Motor1–U—PB13–TIM1_CH1N

Motor1–V+–PA9–TIM1_CH1

Motor1–V—PB14–TIM1_CH1N

Motor1–W+–PA10–TIM1_CH1

Motor1–W—PB15–TIM1_CH1N

接着配置具体参数如下:

由于pwm控制频率为10K,芯片的时钟周期为168Hz,这里采用中心对齐的上下计数模式的计数周期为16800/2。计算公式为:

这里重复计数填1,根据下图stm手册,为的是在后面再每个PWM周期产生一个中断事件

触发事件选择update Event(控制adc采样并进入中断)

 

 

 死区配置(这里根据MOS管具体情况设置,后期可以在程序中直接改)

 最后各路PWM配置只需要把占空比改成周期的一半(16800/2/2),上下管各导通百分之50等效于单路输出为0,同时便于观察死区。

 芯片的时钟树配置如下

生成代码

在初始化中开启PWM

		HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
		HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);
		HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);
		HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_2);
		HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);
		HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_3);

连接PWM1的两路互补引脚,示波器观察结果如图:

 一格25us,4格100us,刚好10Khz的频率,并带有死区,说明配置正确

物联沃分享整理
物联沃-IOTWORD物联网 » 野火STM32电机系列(五)使用Cubemx配置高级定时器TIM1

发表评论