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.

TMS320F28035: 请教ePWM的TZ用法,想用COMP1OUT去控制epwm2A,同时COMP2OUT控制epwm2B, 这样的用法是否可行?

Part Number: TMS320F28035


专家,您好:

请教ePWM的TZ用法,想用COMP1OUT去控制epwm2A,同时COMP2OUT控制epwm2B。

代码单独配置COMP1OUT去控制epwm2A,可行。

代码单独配置COMP2OUT去控制epwm2B,可行。

但是把2着代码合并起来,就不行了。

请问,epwm2A和epwm2B的TZ是独立的吗?  这个思路是否可行?

谢谢!

  • epwm2A和epwm2B的TZ是独立的吗?

    是独立的。

  • 可以帮忙分析一下代码吗  谢谢  

    以下是配置comp1和comp2的代码:

    EALLOW;
    //1
    SysCtrlRegs.PCLKCR3.bit.COMP1ENCLK = 1; 
    Comp1Regs.COMPCTL.bit.COMPDACEN = 1; 

    Comp1Regs.COMPCTL.bit.COMPSOURCE = 0; //
    Comp1Regs.DACVAL.bit.DACVAL = 0; //

    AdcRegs.COMPHYSTCTL.bit.COMP1_HYST_DISABLE = 1;
    Comp1Regs.COMPCTL.bit.SYNCSEL = 0;//
    Comp1Regs.COMPCTL.bit.CMPINV = 0;
    //2
    SysCtrlRegs.PCLKCR3.bit.COMP2ENCLK = 1;
    Comp2Regs.COMPCTL.bit.COMPDACEN = 1; 

    Comp2Regs.COMPCTL.bit.COMPSOURCE = 0; //
    Comp2Regs.DACVAL.bit.DACVAL = 0; //

    AdcRegs.COMPHYSTCTL.bit.COMP2_HYST_DISABLE = 1;
    Comp2Regs.COMPCTL.bit.SYNCSEL = 0;//
    Comp2Regs.COMPCTL.bit.CMPINV = 0;

    EDIS;

    以下是配置epwm2A和B的代码:

    EALLOW;
    //
    SysCtrlRegs.PCLKCR1.bit.EPWM2ENCLK = 1; // 开启ePWM2外设时钟

    GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1; // Disable pull-up on GPIO2 (EPWM2A)
    GpioCtrlRegs.GPAPUD.bit.GPIO3 = 1; // Disable pull-up on GPIO3 (EPWM2B)
    GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; //
    GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; //

    EPwm2Regs.TBPRD = 300-1; // 
    EPwm2Regs.TBPHS.half.TBPHS = 0x0000; // Phase is 0
    EPwm2Regs.TBCTR = 0x0000; // Clear counter

    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UP; // Count up
    EPwm2Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm2Regs.TBCTL.bit.PRDLD = TB_SHADOW;

    //A
    EPwm2Regs.AQCTLA.bit.ZRO = AQ_SET; //
    EPwm2Regs.DCTRIPSEL.bit.DCAHCOMPSEL = DC_COMP1OUT;
    EPwm2Regs.TZDCSEL.bit.DCAEVT2 = TZ_DCAH_HI; // 
    EPwm2Regs.DCACTL.bit.EVT2SRCSEL = DC_EVT2; 
    EPwm2Regs.DCACTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC; //
    EPwm2Regs.TZSEL.bit.DCAEVT2 = 1;
    EPwm2Regs.TZCTL.bit.TZA = TZ_FORCE_LO;
    EPwm2Regs.TZCTL.bit.DCAEVT2 = TZ_NO_CHANGE;
    //B
    EPwm2Regs.AQCTLB.bit.ZRO = AQ_SET; //
    EPwm2Regs.DCTRIPSEL.bit.DCBHCOMPSEL = DC_COMP2OUT;
    EPwm2Regs.TZDCSEL.bit.DCBEVT2 = TZ_DCBH_HI; //
    EPwm2Regs.DCBCTL.bit.EVT2SRCSEL = DC_EVT2; 
    EPwm2Regs.DCBCTL.bit.EVT2FRCSYNCSEL = DC_EVT_ASYNC; //
    EPwm2Regs.TZSEL.bit.DCBEVT2 = 1; 
    EPwm2Regs.TZCTL.bit.TZB = TZ_FORCE_LO;
    EPwm2Regs.TZCTL.bit.DCBEVT2 = TZ_NO_CHANGE;
    EDIS;

  • 但是把2着代码合并起来,就不行了。

    请详细说明一下。