TMS320F280025 EPWM:计数器比较(CC)子模块
`
ePWM内部的countercompare子模块如图所示。
比较子模块的目的
counter-compare子模块将时基计数器值作为输入。该值将持续与计数器A (CMPA)、计数器B (CMPB)、计数器C (CMPC)和计数器D (CMPD)寄存器进行比较。当时基计数器等于其中一个比较寄存器时,反比较单元生成一个适当的事件。
•使用CMPA、CMPB、CMPC和CMPD寄存器根据可编程时间戳生成事件:
—CTR = CMPA:时基计数器等于A寄存器(TBCTR = CMPA)
—CTR = CMPB:时基计数器等于B寄存器(TBCTR = CMPB)
—CTR = CMPC:时基计数器等于C寄存器(TBCTR = CMPC)
—CTR = CMPD:时间基计数器等于反比较D寄存器(TBCTR = CMPD)
•控制PWM占空比,如果动作限定子模块使用反比较A (CMPA)和反比较B (CMPB)进行适当配置
•阴影新的比较值以防止在有源PWM周期期间损坏或故障
控制和监视反比较子模块
比较子模块的操作亮点
比较子模块负责生成可在动作限定符和事件触发器子模块中使用的事件。有四个独立的比较事件:
- CTR = CMPA:时基计数器等于counter-compare A寄存器(TBCTR = CMPA)。
- CTR = CMPB:时基计数器等于计数器B寄存器(TBCTR = CMPB)。
- CTR = CMPC:时基计数器等于计数器比较C寄存器(TBCTR = CMPC)。此事件只能用于在事件触发器子模块中生成事件。
- CTR = CMPD:时基计数器等于D寄存器(TBCTR = CMPD)。此事件只能用于在事件触发子模块中生成事件。
对于up-count或down-count模式,每个事件每个周期只发生一次。对于上下计数模式,如果比较值在0x00-TBPRD之间,则每个事件每个周期发生两次;如果比较值等于0x00或等于TBPRD,则每周期一次。这些事件应用于动作限定子模块,其中事件由计数器方向限定,并在启用时转换为动作。
比较寄存器CMPA和CMPB各有一个相关的影子寄存器。遮蔽提供了一种保持寄存器更新与硬件同步的方法。当使用遮蔽时,对活动寄存器的更新只发生在战略点。这可以防止由于软件异步修改寄存器而导致的损坏或虚假操作。活动寄存器和影子寄存器的内存地址是相同的。写入或读取寄存器是由CMPCTL[shdwmode]和CMPCTL[SHDWBMODE]位决定的。这些位分别启用和禁用CMPC阴影寄存器和CMPD阴影寄存器。两种荷载模式的行为为:
Shadow Mode:
通过清除CMPCTL[shdwmode]位使能CMPA的Shadow模式,通过清除CMPCTL[SHDWBMODE]位使能CMPB的Shadow寄存器。CMPA和CMPB默认开启阴影模式。
如果影子寄存器被启用,那么影子寄存器的内容在以下事件之一上被转移到活动寄存器,由CMPCTL[loadmode], CMPCTL[LOADASYNC]和CMPCTL[LOADBSYNC]寄存器位指定:
•CTR = PRD:等于周期的时基计数器(TBCTR = TBPRD)。
•CTR = 0:时基计数器等于零(TBCTR = 0x00)•CTR = PRD和CTR = Zero
•由DCAEVT1或DCBEVT1或EPWMxSYNCI或TBCTL[SWFSYNC]引起的同步事件
•同步事件或由LOADAMODE/LOADBMODE做出的选择
只有活动寄存器的内容被counter-compare子模块用来生成事件发送到动作限定符。
立即加载模式:
如果选择立即加载模式(即CMPCTL[shdwmode] = 1或CMPCTL[SHDWBMODE] = 1),则对寄存器的读操作或写操作将直接进入活动寄存器。
额外的比较器
类型2及以上的ePWMs上的比较子模块负责基于两个比较寄存器生成两个额外的独立比较事件,这两个比较寄存器被馈送给Event Trigger子模块: - CTR = CMPC:时基计数器等于计数器比较C寄存器(TBCTR = CMPC)。
- CTR = CMPD:时基计数器等于D寄存器(TBCTR = CMPD)。
比较寄存器CMPC和CMPD各有一个相关的影子寄存器。默认情况下,这个寄存器是隐藏的。活动寄存器和影子寄存器的内存地址是相同的。活动CMPC和CMPD寄存器中的值与时基计数器(TBCTR)进行比较。当值相等时,计数器比较模块分别生成一个“时基计数器等于计数器比较C或计数器比较D”事件。该寄存器的遮蔽是由CMPCTL2[SHDWCMODE]和CMPCTL2[SHDWDMODE]位开启和关闭的。这些位分别启用和禁用CMPC阴影寄存器和CMPD阴影寄存器。两种加载模式的行为描述如下:
阴影模式:
通过清除CMPCTL2[SHDWCMODE]位来启用CMPC的阴影模式,通过清除CMPCTL2[SHDWDMODE]位来启用CMPD的阴影寄存器。默认情况下,CMPC和CMPD都启用阴影模式。
如果影子寄存器被启用,那么影子寄存器的内容在以下事件之一上被转移到活动寄存器,由CMPCTL2[LOADCMODE], CMPCTL2[loadmode], CMPCTL2[LOADCSYNC]和CMPCTL2[LOADDSYNC]寄存器位指定:
•CTR = PRD:等于周期的时基计数器(TBCTR = TBPRD)。
•CTR = 0:时基计数器等于零(TBCTR = 0x00)
•CTR = PRD和CTR = Zero
•由DCAEVT1或DCBEVT1或EPWMxSYNCI或TBCTL[SWFSYNC]引起的同步事件
•同步事件或由LOADCMODE/ loadmode做出的选择
只有活动寄存器的内容被counter-compare子模块用来生成事件发送到动作限定符。
立即加载模式:
如果选择立即加载模式(即CMPCTL2[SHDWCMODE] = 1或CMPCTL2[SHDWDMODE] = 1),则对寄存器的读操作或写操作将直接进入活动寄存器。
全局加载支持
全局加载控制机制也可以通过在全局加载配置寄存器(GLDCFG)中配置适当的位来用于所有的反比较寄存器。当选择全局加载模式时,将内容从影子寄存器传输到活动寄存器,对于启用此模式的所有寄存器,发生在与全局阴影到活动负载控制寄存器(GLDCTL)中的配置位定义的相同事件中。
计数模式定时波形
反比较模块可以在所有三种计数模式下生成比较事件:
•上计数模式:用于生成不对称PWM波形。
•Down-count模式:用于产生不对称的PWM波形。
•上下计数模式:用于产生对称的PWM波形。
为了更好地说明前三种模式的工作原理,图中的时序图展示了事件产生的时间和EPWMxSYNCI信号的交互方式。