128335ePWM模块中产生PWM的必要配置2一个ePWMmodule包括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(事件触发模块)等五个模块。3Time-base(TB)moduleTime-base(TB)module为定时器模块,有TBCTL(控制寄存器)配置定时器的时钟、计数模式、同步模式TBSTS(状态寄存器)TBPHSHR(高速PWM用)TBPHS(相位寄存器)计数器的起始计数位置,例如寄存器为0x0100则计数器从0x0100开始计数TBCTR(计数器)TBPRD(周期寄存器)设置计数器的计数周期。只有TBPRD(周期寄存器)有影子寄存器。本程序的设置为count-up-and-downmode计数模式,相位为零,ePWM2、ePWM3、ePWM4、ePWM5、ePWM6,通过ePWM1的计数器到零时进行同步,计数周期为0.5ms。4Counter-compare(CC)moduleCounter-compare(CC)module为比较器模块有CMPCTL(比较控制寄存器)设置CMPA、CMPB的重载模式CMPAHR(高速PWM用),CMPA(比较值寄存器A)设置EPWMxA的比较值,有影子寄存器。CMPB(比较值寄存器B)设置EPWMxB的比较值,有影子寄存器。本程序只应用了CMPA,设置计数器到零时重载CMPA。5Action-qualifier(AQ)moduleAction-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或反向或6不动作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波形。7Action-qualifier(AQ)module比较方式预设模块配置如下:AQCTLA(输出A比较方式控制寄存器)的CAU置高,CAD置低,其它无效。在初始化中配置。AQCSFRC(软件连续强制控制寄存器)通过AQSFRC(软件强制控制寄存器)的RLDCSF配置为TBCTR(计数器)计到零时装载,根据需要每次中断配置CSFA置高、置低或软件连续强制无效。其优先级最高,强制时CAU置高,CAD置低不起作用,无效时CAU置高,CAD置低起作用。AQSFRC(软件强制控制寄存器)的ACTSFA配置为置低,当本周期软件连续强制无效时,向OTSFA写1,保证有效高周期的起始是低状态,防止上一周期结束时为高。8Dead-band(DB)moduleDead-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=EPWMxAin,EPWMxB为EPWMxAin的反向。-9-Event-trigger(ET)moduleEvent-trigger(ET)module中断事件模块ETSEL(中断选择寄存器)使能及事件源选择(SOCA触发ADC转换,SOCB触发ADC转换,中断)ETPS(中断预设寄存器)xxxCNT记录时间发生次数,当与xxxPRD相等时,发出中断信号,xxxCNT停止计数,当标志为清除时xxxCNT置零重新计数ETFLG(中断标志寄存器)状态标志位,中断时为1ETCLR(中断标志清除寄存器)写1清除相应标志位ETFRC(强制中断寄存器)写1强制相应中断发生本程序选择SOCA触发ADC转换,TBCTR=0位中断事件源,xxxPRD为1。TMS320F280X系列DSP的EPWM讨论我们大家知道.2812,2407等系列的EVA.EVB模块等能产生丰富的PWM波型.但是要作为一个系列的话.我还是推荐大检查使用280X系列.一个主要原因是它们的引脚可以完全共用.这就为我们研发从低到高的产品提供了一个通用平台.2809好象百元左右吧.2808是80RMB.小袖珍的热门DSP28016可能也就超不过30RMB.那可是32位60M主频的带全基本上的接口.我觉的280X系列从价位和封装上为我们提供了灵活的选择余地.-10-但是现在280X的资料好象很少.看了一下他们的EPWM模块有些没弄明白.比如为使所有EPWM在一个同步时基上工作.他们的EPWMXSYNCI和EPWMXSYNCO是不是要级联起来.但是好象没看见EPWM1-EPWM6有外接这么多同步时钟接口啊.是不是在软件里Writinga1totheTBCTL[SWFSYNC]controlbitinvokesasoftwareforcedsynchronization.ThispulseisORedwiththesynchronizationinputsignal,andthereforehasthesameeffectasapulseonEPWMxSYNCI.就不用管外设的同步始终接口EPWMSYNCI和EPWMSYNCO啊.其实多半做PWM控制的都希望能用硬件产生有固定时基的时钟信号啊.再就是有没有类似2407和2812等的影子寄存器(同步缓存寄存器).在定时周期中断中不用担心会在不恰当的时候改变了比较和周期寄存器的内容.他们只会在当前执行了前一控制内容后再执行改变的寄存器内容.避免了时空错乱啊.280X有没有类似的设置啊?TOP61IC代码工厂*永久免费*所有代码都通过官方审核,保证代码的完整性.ikki9899新手上路发短消息加为好友2#大中小发表于2009-8-908:44只看该作者ThisfeatureenablestheePWMmoduletobeautomaticallysynchronizedtothetimebaseofanotherePWMmodule.LeadorlagphasecontrolcanbeaddedtothewaveformsgeneratedbydifferentePWMmodulestosynchronizethem.Inup-down-countmode,theTBCTL[PSHDIR]bit-11-当前离线configuresthedirectionofthetime-basecounterimmediatelyafterasynchronizationevent.Thenewdirectionisindependentofthedirectionpriortothesynchronizationevent.TheTBPHSbitisignoredincount-uporcount-downmodes.SeeFigure2-7throughFigure2-10forexamples.ClearingtheTBCTL[PHSEN]bitconfigurestheePWMtoignorethesynchronizationinputpulse.Thesynchronizationpulsecanstillbeallowedtoflow-throughtotheEPWMxSYNCOandbeusedtosynchronizeotherePWMmodules.Inthisway,youcansetupamastertime-base(forexample,ePWM1)anddownstreammodules(ePWM2-ePWMx)mayelecttoruninsynchronizationwiththemaster.SeetheApplicationtoPowerTopologiesChapter3formoredetailsonsynchronizationstrategies.以上是很关键的一段话.大概意思是如果你选择EPWM1模块的时基,你就可以使能下游的其余EPWMX模块和EPWM1有共同的时基.用这些EPWM可以组成灵活的相位关系.但是万变不离其踪.他们有一个共同的时基.所有的相位和周期都是相对这个时基的增减关系啊.我们也不用担心动态改变比较和周期寄存器的内容会对占空比产生不确定的影响.TI的工程师早为我们设计好了同步缓存寄存器的内容.类似于2812和2407的影子寄存器.只有在下-12-一个比较周期里才可以改变占空比的.这个设计非常有用的.再就是刘和平老师翻译的影子寄存器我感觉有些怪异.还是叫同步缓存寄存器好理解些啊.TOPcccdv新手上路发短消息加为好友当前离线3#大中小发表于2009-8-908:45只看该作者有啊,呵呵,感觉2812和28016不是一个应用场合的东西。2812主要是有地址和数据总线可以带一大堆东西,flash/ram,显示器,等等。只要加几个片选信号做一个地址扩展,跟访问内部地址差不多。28016就是做电机控制器用用了,顶多接片LCD,再I2C或spi加个eeprom,不会再有其他东西了。这种场合,不可能用2812这么贵的芯片了。不过感觉这种场合用28016还是有点没意思,100个脚,封装太大了。实际用的又不可能这么多。还有,其中AD有16个脚,一般项多用2,3个,电源加上地又有10多个脚,能做IO口的只有30多个。管脚利用率太低了。要不是以前用的有点习惯了,宁可选freescale的dspTOPshlplato新手上路发短消息加为好友当前离线4#大中小发表于2009-8-908:47只看该作者去ti里面找spru791D吧(如果没有记错的话),pwm同步是可以设置的,他们内部是级