STSPIN32F0A高级定时器输出PWM的问题

STSPIN32F0A是意法半导体新研发的高度集成的BLDC驱动主控芯片,内部集成了3路半桥驱动、3个轨到轨运算法放大器、3.3VDCDC、12VDCDC与STM32F031内核等无刷电机所需要驱动的资源。其中3路半桥驱动控制器还包括一个过流保护比较器,其内部结构图如图所示。

img


配置完成STM32F031 TIM1的PWM输出后该芯片的最终输出引脚仍然无PWM信号输出,其中用于配置过流保护比较器电压阈值的PF6 与PF7均以置位以及PA11也已置位,但依旧没有输出信号。
手册上说,过电流保护信号触发后,会关闭所有高侧(HS1、2、3)输出,过电流比较器的输入电压,读取到比较器的输出值(PA12,PB12),发现跟设置的阈值和输入电压并无关系,高低电平是随机的,而且不管是高还是低,所有高侧驱动都是没有输出的,低侧(LS1、2、3)都输出1.5V直流。

img


有没有同学知道是什么问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
可能存在以下几种可能性:

  1. 配置错误: 检查TIM1的PWM输出配置是否正确,确认TIM1已被正确初始化和使能,检查TIM1 PWM输出引脚是否与STSPIN32F0A的对应引脚连接正确。

  2. 过流保护触发: 检查过流保护比较器电压阈值是否设置正确,以及是否触发了过流保护,如有可能,尝试调整比较器电压阈值。

  3. 电流过大: 检查电机的电流是否超过了STSPIN32F0A的额定值,如果存在这种情况,可以尝试降低电机的占空比,从而降低电流。

  4. 硬件故障: 检查硬件电路是否正常连接,如电源是否稳定,STM32F031是否损坏,检查STSPIN32F0A芯片是否损坏。

示例代码如下:

/* TIM1 PWM输出配置 */
TIM_OCInitTypeDef TIM_OCStruct;
TIM_OCStruct.TIM_OCMode = TIM_OCMode_PWM1; 
TIM_OCStruct.TIM_OutputState = TIM_OutputState_Enable; 
TIM_OCStruct.TIM_Pulse = 50; 
TIM_OCStruct.TIM_OCPolarity = TIM_OCPolarity_Low;
TIM_OC3Init(TIM1, &TIM_OCStruct);
TIM_OC3PreloadConfig(TIM1, TIM_OCPreload_Enable);

/* GPIO引脚配置 */
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; 
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_Level_3; 
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; 
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStruct);

/* 过流保护比较器电压阈值配置 */
ADC_InitTypeDef ADC_InitStruct;
ADC_InitStruct.ADC_ContinuousConvMode = DISABLE;
ADC_InitStruct.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;
ADC_Init(ADC1, &ADC_InitStruct);

/* 过流保护比较器配置 */
COMP_InitTypeDef COMP_InitStruct;
COMP_InitStruct.COMP_InvertingInput = COMP_InvertingInput_VREFINT;
COMP_InitStruct.COMP_Output = COMP_Output_TIM1IC1;
COMP_InitStruct.COMP_Vref = COMP_Vref_3V;
COMP_Init(COMP1, &COMP_InitStruct);

希望这能对问题的解决有所帮助。
如果我的回答解决了您的问题,请采纳!