专家,您好:
请教ePWM的TZ用法,想用COMP1OUT去控制epwm2A,同时COMP2OUT控制epwm2B。
代码单独配置COMP1OUT去控制epwm2A,可行。
代码单独配置COMP2OUT去控制epwm2B,可行。
但是把2着代码合并起来,就不行了。
请问,epwm2A和epwm2B的TZ是独立的吗? 这个思路是否可行?
谢谢!
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.
专家,您好:
请教ePWM的TZ用法,想用COMP1OUT去控制epwm2A,同时COMP2OUT控制epwm2B。
代码单独配置COMP1OUT去控制epwm2A,可行。
代码单独配置COMP2OUT去控制epwm2B,可行。
但是把2着代码合并起来,就不行了。
请问,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;