Other Parts Discussed in Thread: CONTROLSUITE, TMS320F2800137
器件型号: TMS320F2800137
Thread 中讨论的其他器件: controlSUITE
您好、
我们已经提供了一个基于 TMS320F2800137 芯片的通用电机控制实验室、但我们希望同时驱动 PMSM 和 ACIM 电机。 由于通用电机控制的 ACIM 支持有限、我们希望使用控制套件内的 HVMotorCtrl+PfcKit_v2.0 中提供的 ACIM 支持的代码 (ti\controlSUITE\development_kits\HVMotorCtrl+PfcKit_v2.1\HACI_sensored)。 通用电机控制与 HVMotorCtrl+PfcKit_v2.0 (HVACI_Sensored) 之间存在差异、我们需要询问我们所做的更改。 我们应该如何解决在 PWM 初始化部分中发现的差异?
相关的 PWM INIT 部分:
1.HVMotorCtrl+PfcKit_v2.0 (HVACI_Sensored):
#define AQCTLA_INIT_STATE ( CAD_SET + CAU_CLEAR )
#define PWM_INIT_MACRO (CH1、CH2、ch3、v) \
/*设置同步*/ \
…… 其他初始化代码
.... 其他初始化代码
.... 其他初始化代码
/*初始化动作限定符输出 EPWM1-EPWM3*/ \的寄存器
(*ePWM[CH1]).AQCTLA.ALL = AQCTLA_INIT_STATE; \
(*ePWM[CH2]).AQCTLA.ALL = AQCTLA_INIT_STATE; \
(*ePWM[ch3]).AQCTLA.ALL = AQCTLA_INIT_STATE; \
\
...... 其他初始化代码
… 其他初始化代码
… 其他初始化代码
2.通用电机控制
EPWM_setActionQualifierAction (obj->pwmHandle[CnT]、
EPWM_AQ_OUTPUT_A、
EPWM_AQ_OUTPUT_HIGH、
EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setActionQualifierAction (obj->pwmHandle[CnT]、
EPWM_AQ_OUTPUT_A、
EPWM_AQ_OUTPUT_HIGH、
EPWM_AQ_OUTPUT_ON_TIMEBASE_PERIOD);
EPWM_setActionQualifierAction (obj->pwmHandle[CnT]、
EPWM_AQ_OUTPUT_A、
EPWM_AQ_OUTPUT_LOW、
EPWM_AQ_OUTPUT_ON_TIMEBASE_DOWN_CMPA);
EPWM_setActionQualifierAction (obj->pwmHandle[CnT]、
EPWM_AQ_OUTPUT_A、
EPWM_AQ_OUTPUT_LOW、
EPWM_AQ_OUTPUT_ON_TIMEBASE_ZERO);
----------------------------------------------------------------------------------------
如何解决“合格行动“中的差异?
我们尝试通过写入周期 pPWMData->cmpValue[pwmCnT]而不是 pPWMData->cmpValue[pwmCnT]来反转触发时间。
Uint16_t 周期= EPWM_getTimeBasePeriod (obj->pwmHandle[0]);
用于 (pwmCnt=0;pwmCnt<3;pwmCnt++)
{
// cmpValue 已在主文件中计算。
//直接写入 CMPA 和 CMPB
EPWM_setCounterCompareValue (obj->pwmHandle[pwmCnT]、
EPWM_COUNTER_COMPARE_A、
Period - pPWMData->cmpValue[pwmCnT]);
EPWM_setCounterCompareValue (obj->pwmHandle[pwmCnT]、
EPWM_COUNTER_COMPARE_B、
Period - pPWMData->cmpValue[pwmCnT]);
};
该解决方案是否合适?