首页 (完整word版)svpwm源程序

(完整word版)svpwm源程序

举报
开通vip

(完整word版)svpwm源程序/TIFile$Revision:/main/8$//Checkin$Date:April21,200815:41:53$//###########################################################################//FILE:Example_2833xEPwmUpDownAQ.c//TITLE:空间电压矢量产生程序SVPWM//ASSUMPTIONS:ThisprogramrequirestheDSP2833xheaderfiles.MonitoreP...

(完整word版)svpwm源程序
/TIFile$Revision:/main/8$//Checkin$Date:April21,200815:41:53$//###########################################################################//FILE:Example_2833xEPwmUpDownAQ.c//TITLE:空间电压矢量产生程序SVPWM//ASSUMPTIONS:ThisprogramrequirestheDSP2833xheaderfiles.MonitorePWM1-ePWM3pinsonanoscilloscopeasdescribedbelow.////EPWM1AisonGPIO0-------5脚//EPWM1BisonGPIO1-------6脚////EPWM2AisonGPIO2-------7脚//EPWM2BisonGPIO3-------10脚////EPWM3AisonGPIO4-------11脚//EPWM3BisonGPIO5-------12脚//////###########################################################################$TIRelease:DSP2833x/DSP2823xHeaderFilesV1.20$$ReleaseDate:August1,2008$//############################################################################include"DSP28x_Project.h"//DeviceHeaderfileandExamplesIncludeFilePrototypestatementsforfunctionsfoundwithinthisfile.voidInitEPwm1Example(void);voidInitEPwm2Example(void);voidInitEPwm3Example(void);voidsvpwmGen(void);interruptvoidsvpwm_isr(void);volatilefloatUalpha,Ubeta;volatilefloatA,B,C;volatilefloatT0,T1,T2,T3,T4,T5,T6;volatilefloatTaon,Tbon,Tcon;floatUa,Ub,Uc;floatTs;inta,b,c;intN=0,sector=0;#defineTPRD800#defineUdc800voidmain(void){Step1.InitializeSystemControl:PLL,WatchDog,enablePeripheralClocksThisexamplefunctionisfoundintheDSP2833x_SysCtrl.cfile.InitSysCtrl();Step2.InitalizeGPIO:ThisexamplefunctionisfoundintheDSP2833x_Gpio.cfileandillustrateshowtosettheGPIOtoit'sdefaultstate.InitGpio();//SkippedforthisexampleForthiscasejustinitGPIOpinsforePWM1,ePWM2,ePWM3ThesefunctionsareintheDSP2833x_EPwm.cfileInitEPwm1Gpio();InitEPwm2Gpio();InitEPwm3Gpio();Step3.ClearallinterruptsandinitializePIEvectortable:DisableCPUinterruptsDINT;InitializethePIEcontrolregisterstotheirdefaultstate.ThedefaultstateisallPIEinterruptsdisabledandflagsarecleared.ThisfunctionisfoundintheDSP2833x_PieCtrl.cfile.InitPieCtrl();DisableCPUinterruptsandclearallCPUinterruptflags:IER=0x0000;IFR=0x0000;InitializethePIEvectortablewithpointerstotheshellInterruptServiceRoutines(ISR).Thiswillpopulatetheentiretable,eveniftheinterruptisnotusedinthisexample.Thisisusefulfordebugpurposes.TheshellISRroutinesarefoundinDSP2833x_DefaultIsr.c.ThisfunctionisfoundinDSP2833x_PieVect.c.InitPieVectTable();Interruptsthatareusedinthisexamplearere-mappedtoISRfunctionsfoundwithinthisfile.EALLOW;//ThisisneededtowritetoEALLOWprotectedregistersPieVectTable.EPWM1_INT=&svpwm_isr;//PieVectTable.EPWM2_INT=&epwm2_isr;//PieVectTable.EPWM3_INT=&epwm3_isr;EDIS;//ThisisneededtodisablewritetoEALLOWprotectedregistersStep4.InitializealltheDevicePeripherals:ThisfunctionisfoundinDSP2833x_InitPeripherals.cInitPeripherals();//NotrequiredforthisexampleForthisexample,onlyinitializetheePWMEALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=0;EDIS;InitEPwm1Example();InitEPwm2Example();InitEPwm3Example();EALLOW;SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC=1;EDIS;Step5.Userspecificcode,enableinterrupts:EnableCPUINT3whichisconnectedtoEPWM1-3INT:IER|=M_INT3;EnableEPWMINTninthePIE:Group3interrupt1-3PieCtrlRegs.PIEIER3.bit.INTx1=1;//PieCtrlRegs.PIEIER3.bit.INTx2=1;//PieCtrlRegs.PIEIER3.bit.INTx3=1;//EnableglobalInterruptsandhigherpriorityreal-timedebugevents:EINT;//EnableGlobalinterruptINTMERTM;//EnableGlobalrealtimeinterruptDBGMStep6.IDLEloop.Justsitandloopforever(optional):for(;;){asm("NOP");}}//main结束//=======================================================================interruptvoidsvpwm_isr(void){svpwmGen();SetComparevaluesEPwm1Regs.CMPA.half.CMPA=Taon;EPwm2Regs.CMPA.half.CMPA=Tbon;EPwm3Regs.CMPA.half.CMPA=Tcon;ClearINTflagforthistimerEPwm1Regs.ETCLR.bit.INT=1;adjustdutyforoutputEPWM1AadjustdutyforoutputEPWM2AadjustdutyforoutputEPWM3AAcknowledgethisinterrupttoreceivemoreinterruptsfromgroup3PieCtrlRegs.PIEACK.all=PIEACK_GROUP3;}voidInitEPwm1Example(){//SetupTBCLKEPwm1Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcountsEPwm1Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozeroEPwm1Regs.TBCTR=0x0000;//Clearcounter//SetupcountermodeEPwm1Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//SymmetricalmodeEPwm1Regs.TBCTL.bit.PHSEN=TB_DISABLE;//////////////////////////MastermoduleEPwm1Regs.TBCTL.bit.PRDLD=TB_SHADOW;EPwm1Regs.TBCTL.bit.SYNCOSEL=TB_CTR_ZERO;/////////////////////Syncdown-streammodule//SetupTpwmEPwm1Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUTEPwm1Regs.TBCTL.bit.CLKDIV=5;//原为TB_DIV1,对于上下计数:Tpwm=2xTBPRDxTTBCLKFpwm=1/(Tpwm)//SetupshadowingEPwm1Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm1Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm1Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=ZeroEPwm1Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero//SetactionsEPwm1Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM1AEPwm1Regs.AQCTLA.bit.CAD=AQ_CLEAR;//SetDead-bandEPwm1Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmoduleEPwm1Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementaryEPwm1Regs.DBFED=50;//FED=50TBCLKsEPwm1Regs.DBRED=50;//RED=50TBCLKs//InterruptwherewewillchangetheCompareValuesEPwm1Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm1Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm1Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent/*SetComparevalues//==============================================================EPwm1Regs.CMPA.half.CMPA=500;//adjustdutyforoutputEPWM1AEPwm2Regs.CMPA.half.CMPA=600;//adjustdutyforoutputEPWM2AEPwm3Regs.CMPA.half.CMPA=700;//adjustdutyforoutputEPWM3A*/}voidInitEPwm2Example(){//SetupTBCLKEPwm2Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcountsEPwm2Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozeroEPwm2Regs.TBCTR=0x0000;//Clearcounter//SetupcountermodeEPwm2Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//SymmetricalmodeEPwm2Regs.TBCTL.bit.PHSEN=TB_ENABLE;//////////////////////////////SlavemoduleEPwm2Regs.TBCTL.bit.PRDLD=TB_SHADOW;EPwm2Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;///////////////////////////syncflow-through//SetupTpwmEPwm2Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUTEPwm2Regs.TBCTL.bit.CLKDIV=5;//ForUpandDownCount--Tpwm=2xTBPRDxTTBCLK;Fpwm=1/(Tpwm)SetupshadowingEPwm2Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm2Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm2Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=ZeroEPwm2Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero//SetactionsEPwm2Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM2AEPwm2Regs.AQCTLA.bit.CAD=AQ_CLEAR;//SetDead-bandEPwm2Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmoduleEPwm2Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementaryEPwm2Regs.DBFED=50;//FED=50TBCLKsEPwm2Regs.DBRED=50;//RED=50TBCLKs//InterruptwherewewillchangetheCompareValuesEPwm2Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm2Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm2Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent//SetComparevalues}voidInitEPwm3Example(){//SetupTBCLKEPwm3Regs.TBPRD=TPRD;//TPRD=800,Period=1600TBCLKcountsEPwm3Regs.TBPHS.half.TBPHS=0;//SetPhaseregistertozeroEPwm1Regs.TBCTR=0x0000;//Clearcounter//SetupcountermodeEPwm3Regs.TBCTL.bit.CTRMODE=TB_COUNT_UPDOWN;//SymmetricalmodeEPwm3Regs.TBCTL.bit.PHSEN=TB_ENABLE;////////////////////////////////SlavemoduleEPwm3Regs.TBCTL.bit.PRDLD=TB_SHADOW;EPwm3Regs.TBCTL.bit.SYNCOSEL=TB_SYNC_IN;//////////////////////////////syncflow-through//SetupTpwmEPwm3Regs.TBCTL.bit.HSPCLKDIV=TB_DIV2;//ClockratiotoSYSCLKOUTEPwm3Regs.TBCTL.bit.CLKDIV=5;//ForUpandDownCount:Tpwm=2xTBPRDxTTBCLK;Fpwm=1/(Tpwm)SetupshadowingEPwm3Regs.CMPCTL.bit.SHDWAMODE=CC_SHADOW;EPwm3Regs.CMPCTL.bit.SHDWBMODE=CC_SHADOW;EPwm3Regs.CMPCTL.bit.LOADAMODE=CC_CTR_ZERO;//loadonCTR=ZeroEPwm3Regs.CMPCTL.bit.LOADBMODE=CC_CTR_ZERO;//loadonCTR=Zero//SetactionsEPwm3Regs.AQCTLA.bit.CAU=AQ_SET;//setactionsforEPWM3AEPwm3Regs.AQCTLA.bit.CAD=AQ_CLEAR;//SetDead-bandEPwm3Regs.DBCTL.bit.OUT_MODE=DB_FULL_ENABLE;//enableDead-bandmoduleEPwm3Regs.DBCTL.bit.POLSEL=DB_ACTV_HIC;//ActiveHicomplementaryEPwm3Regs.DBFED=50;//FED=50TBCLKsEPwm3Regs.DBRED=50;//RED=50TBCLKs//InterruptwherewewillchangetheCompareValuesEPwm3Regs.ETSEL.bit.INTSEL=ET_CTR_ZERO;//SelectINTonZeroeventEPwm3Regs.ETSEL.bit.INTEN=1;//EnableINTEPwm3Regs.ETPS.bit.INTPRD=ET_3RD;//GenerateINTon3rdevent//SetComparevalues}voidsvpwmGen(void){//clarkeUalpha=0.6666667*(Ua-0.5*Ub-0.5*Uc);//0.8660254=sqrt(3)/2Ubeta=0.6666667*(0.8660254*Ub-0.8660254*Uc);//0.6666667=2/3//sectorA=Ubeta;B=1.7320508*Ualpha-Ubeta;C=-1.7320508*Ualpha-Ubeta;if(A>=0){a=1;}elsea=0;if(B>=0){b=1;}elseb=0;if(C>=0){c=1;}elsec=0;N=a+2*b+4*c;switch(N){case1:sector=2;break;case2:sector=6;break;case3:sector=1;break;case4:sector=4;break;case5:sector=3;break;case6:sector=5;break;default:break;}//TimeTs=2*TPRD;///////////////////Ts为开关周期与载波周期(计数周期)相等if(sector==1){T1=1.5*Ts*(Ualpha-0.5773503*Ubeta)/Udc;//0.5773503=1/sqrt(3)T2=1.7320508*Ts*Ubeta/Udc;T0=Ts-T1-T2;if(T1+T2>Ts){T1=T1*Ts/(T1+T2);T2=T2*Ts/(T1+T2);T0=Ts-T1-T2;}}elseif(sector==2){T2=1.5*Ts*(Ualpha+0.5773503*Ubeta)/Udc;T3=1.5*Ts*(0.5773503*Ubeta-Ualpha)/Udc;T0=Ts-T2-T3;if(T2+T3>Ts){T2=T2*Ts/(T2+T3);T3=T3*Ts/(T2+T3);T0=Ts-T2-T3;}}elseif(sector==3){T3=1.7320508*Ts*Ubeta/Udc;T4=1.5*Ts*(Ualpha+0.5773503*Ubeta)/Udc;T0=Ts-T3-T4;if(T3+T4>Ts){T3=T3*Ts/(T3+T4);T4=T4*Ts/(T3+T4);T0=Ts-T3-T4;}}elseif(sector==4){T4=1.5*Ts*(0.5773503*Ubeta-Ualpha)/Udc;T5=1.7320508*Ts*Ubeta/Udc;T0=Ts-T4-T5;if(T4+T5>Ts)//0.5773503=1/sqrt(3){T4=T4*Ts/(T4+T5);T5=T5*Ts/(T4+T5);T0=Ts-T4-T5;}}elseif(sector==5){T5=-1.5*Ts*(Ualpha+0.5773503*Ubeta)/Udc;T6=-1.5*Ts*(0.5773503*Ubeta-Ualpha)/Udc;T0=Ts-T5-T6;if(T5+T6>Ts){T5=T5*Ts/(T5+T6);T6=T6*Ts/(T5+T6);T0=Ts-T5-T6;}}elseif(sector==6){T6=-1.7320508*Ts*Ubeta/Udc;T1=1.5*Ts*(Ualpha+0.5773503*Ubeta)/Udc;T0=Ts-T6-T1;if(T6+T1>Ts){T6=T6*Ts/(T6+T1);T1=T1*Ts/(T6+T1);T0=Ts-T6-T1;}}//SwitchTimeswitch(sector){case1:{Taon=T0/4+T1/2+T2/2;Tbon=T0/4+T2/2;Tcon=T0/4;}break;case2:{Taon=T0/4+T3/2;Tbon=T0/4+T2/2+T3/2;Tcon=T0/4;}break;case3:{Taon=T0/4;}break;case4:{Taon=T0/4;Tbon=T0/4+T5/2;Tcon=T0/4+T4/2+T5/2;}break;case5:{Taon=T0/4+T6/2;}break;case6:{}break;default:break;}}//svpwmGen(void)结束
本文档为【(完整word版)svpwm源程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: ¥13.0 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
is_090281
常年从事设计、施工及相关教育工作,一线工作经验丰富。
格式:doc
大小:370KB
软件:Word
页数:0
分类:
上传时间:2021-09-25
浏览量:23