AQCTL.bit.LDAQAMODE与CMPCTL.bit.LOADAMODE之间是什么关系?
是不是只用配置CMPCTL.bit.LOADAMODE即可?
Susan Yang:
我们会在确认后给您回复。请问您现在是想实现什么功能?
,
WilliamFang:
EPwm7Regs.TBPRD = EPWM_TIMER_TBPRD;EPwm7Regs.TBPHS.bit.TBPHS = 0x0000;EPwm7Regs.TBCTR = 0x0000;EPwm7Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;EPwm7Regs.TBCTL.bit.PHSEN = TB_DISABLE;EPwm7Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;EPwm7Regs.TBCTL.bit.CLKDIV = TB_DIV1;EPwm7Regs.TBCTL.bit.SYNCOSEL = TB_CTR_ZERO;EPwm7Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;EPwm7Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO_PRD;EPwm7Regs.CMPA.bit.CMPA = EPWM_TIMER_TBPRD >> 1;EPwm7Regs.AQCTL.bit.LDAQAMODE = CC_CTR_ZERO_PRD;EPwm7Regs.AQCTLA.bit.CAU = AQ_CLEAR;EPwm7Regs.AQCTLA.bit.CAD = AQ_SET;EPwm7Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;EPwm7Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;EPwm7Regs.DBCTL.bit.IN_MODE = DBA_ALL;EPwm7Regs.DBRED.bit.DBRED = EPWM_MIN_DB;EPwm7Regs.DBFED.bit.DBFED = EPWM_MIN_DB;EPwm7Regs.ETSEL.bit.INTSEL = ET_CTR_PRDZERO;EPwm7Regs.ETSEL.bit.INTEN = 1;EPwm7Regs.ETPS.bit.INTPRD = ET_1ST;
,
WilliamFang:
我想知道
需不需要既配置CMPCTL.bit.LOADAMODE又配置AQCTL.bit.LDAQAMODE
以及何时需要配置AQCTL.bit.LDAQAMODE
,
Susan Yang:
ePWM是有很多子模块的,如
1 :计数比较子模块(CC)
此模块实现与TB的比较及控制。产生CMPA、CMPB比较事件;控制PWM的占空比。
CMPCTL:计数比较控制寄存器。决定是否使用影子寄存器及计数值的重装方法。
CMPA:计数比较值设定寄存器A
CMPAM:CMPA的影子寄存器。
CMPB:计数比较值设定寄存器B2、功能限定子模块(AQ)
这个子模块主要对TB及CC模块产生的事件,作出相应的响应,如计数器到达设定同期时、到达0时、到达CMPA时、到达CMPB时,相应的EPWMxA、EPWMxB的输出状态。
AQCTLA:设定EPWMxA在以上事件时的输出
AQCTLB:设定EPWMxB在以上事件时的输出“需不需要既配置CMPCTL.bit.LOADAMODE又配置AQCTL.bit.LDAQAMODE
以及何时需要配置AQCTL.bit.LDAQAMODE”这取决于您具体的应用中是否使用到了这个子模块以及是否需要使用影子模式
,
Susan Yang:
使用影子寄存器的好处在于可以设定何时将shadow寄存器更新到Active寄存器中。
,
WilliamFang:
我用到了影子模式,是不是只要用到影子模式就要配置CMPCTL?
,
Susan Yang:
若是您用到了计数比较子模块(CC)且需要使用影子模式,就需要配置CMPCTL
,
WilliamFang:
但是我看官方AQ例程里没有配置,是因为没用到吗?
,
Susan Yang:
那应该是,这不是必须要使用的
,
Susan Yang:
感谢确认答案,后续有其他问题欢迎随时发帖