工具/软件:
尊敬的 TI 专家:
我们现在使用 AM2612 r5f 4 通道 PWM 模块与高速继电器输出配合使用。
我们希望在 GPIO 输出上的指定时间段内生成 PWMA&B 脉冲被闭合或断开、并且 PWMA 和 PWMB 的波形完全反转。
现在波形有一个像下图所示的问题:黄色是 PWMA、蓝色是 PWMB。 当计时器时钟超时时、存在随机重叠的高电平部分、这是不允许的。
但我不知道如何防止它。

请找到 example.syscfg 文件的附件。
e2e.ti.com/.../7206.example.syscfg.txt
STOP PWM 的计时器时钟功能代码如下所示:
void PWMTimerCb (ClockP_Object *clkInst、void *arg)
{
uint32_t temp =(int) arg;
CNT ++;
如果是 1
/*如果 EnableMask = 1&DisableMask = 1、则设置 PWM 禁用*/
IF (temp & 1)
{
EPWM_setActionQualifierAction (HSHB1_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setDeadBandDelayPolarity (HSHB1_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setActionQualifierAction (HSHB1_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
}
IF (temp & 2)
{
EPWM_setActionQualifierAction (HSHB2_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setDeadBandDelayPolarity (HSHB2_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setActionQualifierAction (HSHB2_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
}
IF (temp & 4)
{
EPWM_setActionQualifierAction (HSHB3_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setDeadBandDelayPolarity (HSHB3_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setActionQualifierAction (HSHB3_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
}
IF (temp & 8)
{
EPWM_setActionQualifierAction (HSHB4_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setDeadBandDelayPolarity (HSHB4_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_HIGH);
EPWM_setActionQualifierAction (HSHB4_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_LOW、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
}
#endif
}
PWM 启动代码:
if( j == 0 )
{
EPWM_setActionQualifierAction (HSHB1_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (HSHB1_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setDeadBandDelayPolarity (HSHB1_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_LOW);
}
else if( j ==1 )
{
EPWM_setActionQualifierAction (HSHB2_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (HSHB2_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setDeadBandDelayPolarity (HSHB2_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_LOW);
}
else if( j == 2 )
{
EPWM_setActionQualifierAction (HSHB3_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (HSHB3_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setDeadBandDelayPolarity (HSHB3_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_LOW);
}
else if( j == 3)
{
EPWM_setActionQualifierAction (HSHB4_BASE_ADDR、EPWM_AQ_OUTPUT_B、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPB);
EPWM_setActionQualifierAction (HSHB4_BASE_ADDR、EPWM_AQ_OUTPUT_A、EPWM_AQ_OUTPUT_HIGH、EPWM_AQ_OUTPUT_ON_TIMEBASE_UP_CMPA);
EPWM_setDeadBandDelayPolarity (HSHB4_BASE_ADDR、EPWM_DB_FED、EPWM_DB_POLARITY_ACTIVE_LOW);
}
}
此致、
Ly




