TI中文支持网
TI专业的中文技术问题搜集分享网站

F28069 InstaSPIN-FOC PWM配置

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

Johnson Chen1:

在HAL_init(&hal,sizeof(hal));函数里面,更改成下面内容::

// initialize PWM handles obj->pwmHandle[0] = PWM_init((void *)PWM_ePWM2_BASE_ADDR,sizeof(PWM_Obj)); obj->pwmHandle[1] = PWM_init((void *)PWM_ePWM3_BASE_ADDR,sizeof(PWM_Obj)); obj->pwmHandle[2] = PWM_init((void *)PWM_ePWM4_BASE_ADDR,sizeof(PWM_Obj));

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

谢谢CHen老师的回复!我这样改了之后的确三路都有PWM输出,但是占空比都是不变的。而且核心板上的LED2没有闪烁,说明没有进入中断。是不是还有其他中断配置和EPWM1有关系?

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

chen老师,在这一部分里面是用EPWM1_INT作为中断触发源,那么能否改为EPWM1_INT呢?lab里的代码风格看着不是很习惯,

都是用的结构体对寄存器进行操作,书上都是直接写寄存器的值。

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

Johnson Chen1:

回复 FoCus Lai:

程序里面是通过ADC转换完成来产生中断的,中断使能是通过HAL_enableAdcInts()函数,因此不用关PWM1_INT.

你要做的是将ADC 转换的触发源改到EPWM1,请修改HAL_setupAdcs()里面下面所用SOC的触发源为ADC_SocTrigSrc_EPWM2_ADCSOCA:

ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_0,ADC_SocTrigSrc_EPWM2_ADCSOCA);

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

Johnson Chen1

程序里面是通过ADC转换完成来产生中断的,中断使能是通过HAL_enableAdcInts()函数,因此不用关PWM1_INT.

你要做的是将ADC 转换的触发源改到EPWM1,��修改HAL_setupAdcs()里面下面所用SOC的触发源为ADC_SocTrigSrc_EPWM2_ADCSOCA:

ADC_setSocTrigSrc(obj->adcHandle,ADC_SocNumber_0,ADC_SocTrigSrc_EPWM2_ADCSOCA);

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

Johnson Chen1:

回复 FoCus Lai:

有把所有的SOC触发源设置为ADC_SocTrigSrc_EPWM2_ADCSOCA吗?

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

所有的都改过了

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

HAL_setTrigger函数里也把PWM_Number_1改为了PWM_Number_2

PWM_Obj *pwm1 = (PWM_Obj *)obj->pwmHandle[PWM_Number_2];//PWM_Number_1 PWM_Obj *pwm2 = (PWM_Obj *)obj->pwmHandle[PWM_Number_3];//PWM_Number_2 PWM_Obj *pwm3 = (PWM_Obj *)obj->pwmHandle[PWM_Number_4];//PWM_Number_3

if(ignoreShunt == use_all) { if(pwm->CMPAM >= (pwm->CMPA + pwm->DBFED)) { pwm1->CMPB = (pwm->CMPAM – (pwm->CMPA + pwm->DBFED)) / 2 + 1; PWM_setSocAPulseSrc(obj->pwmHandle[PWM_Number_2],PWM_SocPulseSrc_CounterEqualCmpBDecr);//PWM_Number_1 } else { pwm1->CMPB = ((pwm->CMPA + pwm->DBFED) – pwm->CMPAM ) / 2 + 1; PWM_setSocAPulseSrc(obj->pwmHandle[PWM_Number_2],PWM_SocPulseSrc_CounterEqualCmpBIncr);//PWM_Number_1 } } else { pwm1->CMPB = offset; PWM_setSocAPulseSrc(obj->pwmHandle[PWM_Number_2],PWM_SocPulseSrc_CounterEqualCmpBIncr);//PWM_Number_1 }

各位老师好,我有个问题想请教一下。我用的自己的板子,然后核心控制卡是F28069 InstaSPIN FOC。TI高压控制套件上的PWM输出是GPIO0到6,而我板子上的输出是2到7,如下图所示。

我把PWM配置成如下定义

发现只有两路输出有PWM信号,然后我把GPIO0配置成pwm输出,结果在D_Brake_ON引脚检测到了pwm信号。

GPIO_setMode(obj->gpioHandle,GPIO_Number_0,GPIO_0_Mode_EPWM1A);

那么我的板子上是不是该配制成EPWM2、EPWM3、EPWM4这三路作为输出呢?我试着改了下hal.c中的HAL_setupPwms,结果还是没有得到三路输出,而且核心板上表示中断的红灯也不闪了。请问一下到底该怎么配置呢,谢谢!

FoCus Lai:

回复 Johnson Chen1:

用ADC_SocTrigSrc_EPWM2_ADCSOCA不能触发中断

  

PWM handles设置如下

 然后我改为ADC_SocTrigSrc_EPWM3_ADCSOCA之后就可以触发中断了。但是只有ePWM3和ePWM4有输出,但是ePWM2没有输出。

 

如果触发源为ADC_SocTrigSrc_EPWM2_ADCSOCA,而PWM Handle改为如下设置

则只有ePWM2和ePWM4有输出,但是ePWM3没有输出。导致这种现象的原因是中断优先级还是其他什么的,该怎么处理?

赞(0)
未经允许不得转载:TI中文支持网 » F28069 InstaSPIN-FOC PWM配置
分享到: 更多 (0)