wpzahu 发表于 2018-9-4 14:05:27

STM32 FOC5.0 ADC和PWM配置

用MotorControl Workbench把 Nucleo-IHM002调试转起来了,看了下工程里面的代码和CubeMX配置文件,还有好多不理解的地方,希望大家一起帮忙讨论下!
1、第一个就是ADC和PWM配置


   TIM1里面 CH1-3为PWM输出,CH4用于产生同步信号触发ADC采样,但是CebeMX上面的ADC没有看到相关配置,而在程序里面有sConfigInjected.ExternalTrigInjecConv = ADC_EXTERNALTRIGINJECCONV_T1_TRGO;

对于整个ADC和PWM的配置和工作过程,还不太熟悉,大家帮忙解答下哈!

wpzahu 发表于 2018-9-4 14:07:46

还有 TIM1对于CH4的配置,为什么是 sConfigOC.Pulse = 1092;?
sConfigOC.OCMode = TIM_OCMODE_PWM2;
sConfigOC.Pulse = 1092;
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
{
    _Error_Handler(__FILE__, __LINE__);
}

子曰好人 发表于 2018-9-4 14:46:04

wpzahu 发表于 2018-9-4 14:07
还有 TIM1对于CH4的配置,为什么是 sConfigOC.Pulse = 1092;?
sConfigOC.OCMode = TIM_OCMODE_PWM2;
s ...

你这份代码不是工程默认生成的吧,我用workbench5.1.3生成的代码里面是这样子的
sConfigOC.OCMode = TIM_OCMODE_PWM2;
    sConfigOC.Pulse = (((PWM_PERIOD_CYCLES) / 2) - (HTMIN));
    if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4) != HAL_OK)
    {
      _Error_Handler(__FILE__, __LINE__);
    }
pulse的值应该是通过设置进行一系列计算所得的采样点

wpzahu 发表于 2018-9-4 15:06:27

子曰好人 发表于 2018-9-4 14:46
你这份代码不是工程默认生成的吧,我用workbench5.1.3生成的代码里面是这样子的

pulse的值应该是通过设 ...

不是,是Workbench5.03和CubeMX配置生成的

子曰好人 发表于 2018-9-4 15:13:13

wpzahu 发表于 2018-9-4 15:06
不是,是Workbench5.03和CubeMX配置生成的

换新版本吧,最新版本5.2.0,可以看到这个值的计算过程

LT-386596 发表于 2018-9-4 18:32:13

好问题, 同问!

feixiang20 发表于 2018-9-4 23:39:19

代码都是配置自动生成,比如
sConfigOC.OCMode = TIM_OCMODE_TIMING;
sConfigOC.Pulse = 0;也有=12,=25,=200, =VALUE等等,调节脉宽我们需要调节sConfigOC.Pulse
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
页: [1]
查看完整版本: STM32 FOC5.0 ADC和PWM配置