一个ePWM module包括Time-base (TB) module,Counter-compare (CC) module,Action-qualifier (AQ) module,Dead-band (DB) module,PWM-chopper (PC) module,Event-trigger (ET) module,Trip-zone (TZ) module等七个模块。正常的发出PWM波要配置TB、CC、AQ、DB、ET等五个模块。 Time-base (TB) module为定时器模块,有 TBCTL(控制寄存器)配置定时器的时钟、计数模式、同步模式 TBSTS(状态寄存器) TBPHSHR(高速PWM用) TBPHS(相位寄存器)计数器的起始计数位置,例如寄存器为0x0100则计数器从0x0100开始计数 TBCTR(计数器) TBPRD(周期寄存器)设置计数器的计数周期。只有TBPRD(周期寄存器)有影子寄存器。 本程序的设置为count-up-and-down mode计数模式,相位为零,ePWM2 、ePWM3、 ePWM4、 ePWM5、 ePWM6通过ePWM1的计数器到零时进行同步,计数周期为0.5ms。 Counter-compare (CC) module为比较器模块有 CMPCTL (比较控制寄存器)设置CMPA、CMPB的重载模式 CMPAHR(高速PWM用), CMPA(比较值寄存器A)设置EPWMxA的比较值,有影子寄存器。 CMPB(比较值寄存器B)设置EPWMxB的比较值,有影子寄存器。 本程序只应用了CMPA,设置计数器到零时重载CMPA。 Action-qualifier (AQ) module比较方式预设模块 AQCTLA (输出A比较方式控制寄存器)设置EPWMA的比较方式有CBD、CBU、CAD、CAU、PRD、ZRO,无影子寄存器,立即装载 AQCTLB (输出B比较方式控制寄存器)设置EPWMB的比较方式有CBD、CBU、CAD、CAU、PRD、ZRO,无影子寄存器,立即装载 AQSFRC (软件强制控制寄存器)设置AQCSFRC重载方式(RLDCSF),通过(OTSFB、ACTSFB)设置EPWMB、(OTSFA、ACTSFA)设置EPWMA启动一次强制置位无效、置零、置高、反向,当OTSFB、OTSFA被写1时,动作一次,写0无效,无影子寄存器 AQCSFRC (软件连续强制控制寄存器)可以强制EPWMA、EPWMB的输出为low或high或AQCSFRC不起作用,有影子寄存器,当寄存期被加载后的第二个时钟开始作用,如TBCLK=0时加载,TBCLK=1时开始起作用 说明: CBD为TBCTR(计数器)与CMPB在down计数时相等使输出为low或high或反向或不动作 CBU为TBCTR(计数器)与CMPB在up计数时相等使输出为low或high或反向或不动作 CAD为TBCTR(计数器)与CMPA在down计数时相等使输出为low或high或反向或不动作 CAU为TBCTR(计数器)与CMPA在up计数时相等使输出为low或high或反向或不动作 PRD为TBCTR(计数器)与TBPRD(周期寄存器)相等时使输出为low或high或反向或不动作 ZRO为TBCTR(计数器)计到零时使输出为low或high或反向或不动作 注意:以上均是相等时起作用,其它时间不管,只有AQCSFRC(软件连续强制控制寄存器)持续起作用 如同时出现比较则优先级如图 例:CMPA=100,CMPB=100,up计数,EPWMA初始为低,CAU设置高,CBU设置低,当TBCTR计到100时,CAU、CBU同时作用,根据优先级,EPWMA输出低。 当CMPA=100,CMPB=110,其它不变,当TBCTR计到100时,EPWMA输出高,计到110时EPWMA输出低。 本程序只应用了EPWMA输出通过Dead-band (DB) module产生互补的PWM波形。Action-qualifier (AQ) module比较方式预设模块配置如下:AQCTLA (输出A比较方式控制寄存器)的CAU置高,CAD置低,其它无效。在初始化中配置。 AQCSFRC (软件连续强制控制寄存器)通过AQSFRC(软件强制控制寄存器)的RLDCSF配置为TBCTR(计数器)计到零时装载,根据需要每次中断配置CSFA置高、置低或软件连续强制无效。其优先级最高,强制时CAU置高,CAD置低不起作用,无效时CAU置高,CAD置低起作用。 AQSFRC(软件强制控制寄存器)的ACTSFA配置为置低,当本周期软件连续强制无效时,向OTSFA写1,保证有效高周期的起始是低状态,防止上一周期结束时为高。 Dead-band (DB) module死区模块 DBCTL(死区控制寄存器)设置S5,S4,S3,S2,S1,S0开关选择的 DBRED(死区上升沿延时)上升沿延时时间 DBFED(死区下降沿延时)下降沿延时时间 本程序的设置为S5=0,S4=0,S3=1,S2=0,S1=1,S0=1;延时时间为5us。EPWMxA= EPWMxA in,EPWMxB为EPWMxA in的反向。 Event-trigger (ET) module中断事件模块 ETSEL(中断选择寄存器)使能及事件源选择(SOCA触发ADC转换,SOCB触发ADC转换,中断) ETPS(中断预设寄存器)xxxCNT记录时间发生次数,当与xxxPRD相等时,发出中断信号,xxxCNT停止计数,当标志为清除时xxxCNT置零重新计数 ET标志寄存器(中断标志寄存器)状态标志位,中断时为1 ETCLR(中断标志清除寄存器)写1清除相应标志位 ETFRC(强制中断寄存器)写1强制相应中断发生 本程序选择SOCA触发ADC转换,TBCTR=0位中断事件源,xxxPRD为1。 |