This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F280025C: 关于ePWM模块信号同步时,会有周期性不同步

Part Number: TMS320F280025C

利用两个epwm模块 epwm1A和 epwm2A。epwm1A设置为同步信号输出,epwm2A接收epwm1A的同步信号。当epwm1A的PRD改变时,CMA变为0.1*PRD。epwm2A的PRD跟随epwm1A变化,CMA也是0.1*PRD。而此过程,epwm1A与epwm2A的相对相移需要一直保持恒定。

正常情况如下,这是我需要的波形。注意绿色为1A,黄色为2A,后面的波形都是以此情况。

但是在运行过程中,它会周期性出现以下两种波形,这是为什么?

只有当我的PRD由小变大的时候才出现,而PRD由大变小一切正常。如下图。

代码配置如下

初始化PWM

改变PRD,CMA,PHS代码如下

  • 您好,您的初始化代码中,有关装载的配置只明确配置了ePWM2的周期装载时刻,我建议您将装载的时刻全部都明确配置一下试试看。

    另外希望您除了上传代码截图以外,也能一并将代码通过代码插入功能上传,谢谢:

  • 你好,非常感谢你的回复,我明确配置了EPWM1的装载方式,问题仍然存在。根据手册,利用寄存器LINK,问题也没有解决。代码如下。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //
    // Included Files
    //
    #include "driverlib.h"
    #include "device.h"
    __interrupt void cpuTimer0ISR(void);
    void initCPUTimers(void);
    void configCPUTimer(uint32_t cpuTimer, float freq, float period);
    void pin_init(void);
    void init_PWM(void);
    #define myEPWM1_BASE EPWM1_BASE
    #define myEPWM2_BASE EPWM2_BASE
    uint32_t epwm_period1 = 1000;
    uint32_t epwm_compare1 = 100;
    uint32_t epwm_shift = 500;
    //
    // Main
    //
    void main(void)
    {
    //
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • 方便发下您的工程吗?我看下

  • Yale LI,你好。你将我发的代码放入tms320f28002x的空工程就好啦。将代码拷贝,粘帖到empty_projectmain.c中即可。要使用drverlib哈。 我使用的是2820025c ladpad.

  • 好的,我看一下