280049C的EPWM模块link功能是如何工作的?
把EPWM2-EPWMXLINK寄存器-CMPALINK位设置为0,link到EPWM1。
EPWM1 CMPA寄存器设置为shadow模式。
现在假设EPWM1 CMPA active寄存器为100,向CMPA shadow寄存器写入200.那么EPWM2 CMPA寄存器的值会是多少?这个值是直接写入EPWM2 shadow还是active寄存器?
Green Deng:
EPWMxLINK的功能主要是针对两个不同的EPWM模块提供了一种同时刷新寄存器的手段。EPWM模块中TBPRD、CMPA:CMPAHR、CMPB:CMPBHR、CMPC、CMPD寄存器都有对应的影寄存器(Shadow Register),对这些寄存器的赋值操作实际是将数值写入影寄存器中然后等待同步信号到来将这些值载入到对应的Active Register中实现对输出EPWM波的控制。EPWMxLINK的功能是在主路寄存器加载影寄存器中的数值的同时,加载从路EPWM模块对应的寄存器值。从而实现两路EPWM信息的同步刷新。
回到你的问题上,也就是1:EPWM2 CMPA寄存器的值会同时更新为200。2:这个值是直接写入EPWM2的active寄存器
,
shu hai feng:
也就是说不管EPWM2 CMPA设置成Shadow mode还是Immediate mode,把200写入EPWM1 shadow寄存器的时候,都直接把200立刻写入到EPWM2的active寄存器,不会等到EPWM1 CMPA从影子寄存器加载的时候才写入。这样理解对吗?
,
Green Deng:
应该是后者,即PWM1加载影寄存器中的数值的同时,加载EPWM2模块对应的寄存器值。
,
shu hai feng:
用板子试了试,LINK之后向EPWM1 CMPA写入200,EPWM2 CMPA同时变成200,没有任何延迟。 CMPA值的加载时刻只取决于每个模块各自CMPCTL寄存器的设置,不会受到影响。
,
Green Deng:
感谢反馈。