DSP的EPWM设置与使用详解 -- 以F28069为例

原理

  • EPWM的几个基本模块

Time-Base Module

挖坑

Counter Compare Module

挖坑

Action Qualifier Module

挖坑

Dead-Band Generator Module

挖坑

PWM Chopper (PC) Module

挖坑

Trip Zone Module

挖坑

Event Trigger Module

挖坑

实例详解

    /* registers assignment */
    EALLOW;

    /* EPWM1 configuration */
    EPwm4Regs.TBPRD = PRD;                       // Set timer period
    EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;        // Disable phase loading
    EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;       // Clock ratio to SYSCLKOUT
    EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
    EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;    // Load registers every ZERO
    //EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    //EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
    EPwm4Regs.CMPA.half.CMPA = CAMP1_START;
    EPwm4Regs.AQCTLA.bit.CAU = AQ_CLEAR;            // Set PWM1A on Zero
    EPwm4Regs.AQCTLA.bit.CAD = AQ_SET;
    //only epwm4a is used, so there's no need to set epwm4b
    //EPwm4Regs.AQCTLB.bit.CAU = AQ_SET;          // Clear PWM1B on Zero
    //EPwm4Regs.AQCTLB.bit.CAD = AQ_CLEAR;
    EPwm4Regs.ETSEL.bit.SOCAEN = 0;    // Disable SOC on A group !!! Don't forget to enable it after the configuration of isr
    EPwm4Regs.ETSEL.bit.SOCASEL = 2;   // Select SOC on up-count
    EPwm4Regs.ETPS.bit.SOCAPRD = 1;       // Generate pulse on 1st event

    EDIS;

解释一下上段代码中的几个寄存器。

  • EPwm4Regs.TBCTL.bit.CTRMODE 计数模式
  • EPwm4Regs.TBCTL.bit.PHSEN 相位寄存器,此处不用
  • EPwm4Regs.TBCTL.bit.HSPCLKDIV : High Speed Time-base Clock Prescale Bits
  • EPwm4Regs.TBCTL.bit.CLKDIV : Time-base Clock Prescale Bits
  • TBCLK = SYSCLKOUT / (HSPCLKDIV × CLKDIV),反正都是分频作用,应该没什么不同。
  • EPwm4Regs.CMPA.half.CMPA 比较器的比较值。应当和事件寄存器AQCTLA相互配合,比如在此例中,用的UPDOWN计数模式
  • EPwm4Regs.AQCTLA.bit.CAU设置为AQ_CLEAR,则当计数值超越CMPA的时候,EPWM4A置零;反之,当计数值减小到其以下的时候,EPWM4A置高。
  • 如果需要EPWM4B和EPWM4A信号互补,则对齐设置相反的CAU和CAD的值即可。
    注意,都是CAD/CAU,不是CBD/CBU,否则如果CMPA和CMPB的值不同,则得不到相互互补的两个信号了。
  • EPwm4Regs.ETSEL.bit.SOCAEN 规定了EPWM4A的SOC信号使能与否
  • EPwm4Regs.ETSEL.bit.SOCASEL则规定了EPWM4A的SOC信号在何时发出。详见数据手册 page366

此处,我们将其设置为2,Enable event time-base counter equal to period (TBCTR = TBPRD),配合UPDOWN的计数模式,以实现在EPWM波的中间进行采样的效果(这样可以采样到平均值而非峰值或谷值)

  • SOCAPRD规定了需要出现多少次事件,才会发出SOC信号。详见page367。此处,我们希望每一个周期进行一次采样,因此,每出现一次事件,就进行一次采样。

你可能感兴趣的:(#,DSP,程序调试)