基于DSP2812的SVPWM波形实现程序

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于DSP2812的SVPWM波形实现程序//filename:svpwm.c//generatesvpwmwaveforms#includemath.h#includeDSP281x_Device.h//DSP281xHeaderfileIncludeFile#includeDSP281x_Examples.h#includestdio.h//DSP281xExamplesIncludeFile//globalvariablesfloatTz=2e-4;intVdc=600;//floatPI=3.1415;//intf=50;//Prototypestatementsforfunctionsfoundinthisfile.voidsvpwm(float*ptr,floatuapha,floatubeta,floatTswitch,intvdc_link);voidinit_eva(void);voidmain(void){floatcmpr[3]={0,0,0};//cmpr[3]={CMPR1,CMPR2,CMPR3)float*ptrc=&cmpr[0];//pointtotheaddrsofcmprfloatv_aphar=100;//referencevalueofvapharfloatv_betar=-20;//referencevalueofvbetar//floattstep=0.0000001;//floattend=5//floatw=2*PI*f;//floaty=sin(w*t);//Step1.InitializeSystemControl://PLL--30MHz*10/2,disableWatchDog,enablePeripheralClocks//ThisexamplefunctionisfoundintheDSP281x_SysCtrl.cfile.InitSysCtrl();//Step2.InitalizeGPIO://ThisexamplefunctionisfoundintheDSP281x_Gpio.cfileand//illustrateshowtosettheGPIOtoit'sdefaultstate.InitGpio();//Step3.ClearallinterruptsandinitializePIEvectortable://DisableCPUinterruptsDINT;//asm(setcINTM)//InitializethePIEcontrolregisterstotheirdefaultstate.//ThedefaultstateisallPIEinterruptsdisabledandflags//arecleared.//ThisfunctionisfoundintheDSP281x_PieCtrl.cfile.//InitPieCtrl();//DisableCPUinterruptsandclearallCPUinterruptflags:IER=0x0000;IFR=0x0000;//InitializethePIEvectortablewithpointerstotheshellInterrupt//ServiceRoutines(ISR).//Thiswillpopulatetheentiretable,eveniftheinterrupt//isnotusedinthisexample.Thisisusefulfordebugpurposes.//TheshellISRroutinesarefoundinDSP281x_DefaultIsr.c.//ThisfunctionisfoundinDSP281x_PieVect.c.//InitPieVectTable();init_eva();svpwm(ptrc,v_aphar,v_betar,Tz,Vdc);EvaRegs.CMPR1=cmpr[0]*75e6;EvaRegs.CMPR2=cmpr[1]*75e6;EvaRegs.CMPR3=cmpr[2]*75e6;}//********************************************//function:svpwm//discription://********************************************voidsvpwm(float*ptr,floatuapha,floatubeta,floatTswitch,intvdc_link){intA,B,C,N;doubleX,Y,Z,Tx,Ty,T0,Tl,Tm,Th;if(ubeta0)A=1;elseA=0;if((1.732051*uapha-ubeta)0)B=1;elseB=0;if((-1.732051*uapha-ubeta)0)C=1;elseC=0;N=A+2*B+4*C;X=1.732051*ubeta*Tswitch/vdc_link;Y=(0.8660*ubeta+1.5*uapha)*Tswitch/vdc_link;Z=(-0.8660*ubeta+1.5*uapha)*Tswitch/vdc_link;switch(N){case1:Tx=Y;Ty=-Z;break;case2:Tx=-X;Ty=Y;break;case3:Tx=Z;Ty=X;break;case4:Tx=-Z;Ty=-X;break;case5:Tx=X;Ty=-Y;break;default:Tx=-Y;Ty=Z;}if((Tx+Ty)Tswitch){Tx=Tx*Tswitch/(Tx+Ty);Ty=Ty*Tswitch/(Tx+Ty);}T0=(Tswitch-(Tx+Ty))/4;Tl=(Tswitch+Tx-Ty)/4;/*Tl=T0/4+Tx/2*/Tm=(Tswitch-Tx+Ty)/4;/*Tm=T0/4+Ty/2*/Th=(Tswitch+Tx+Ty)/4;/*Th=T0/4+Ty/2+Ty/2*/switch(N){case1:*ptr=Tm;*(ptr+1)=T0;*(ptr+2)=Th;break;case2:*ptr=T0;*(ptr+1)=Th;*(ptr+2)=Tm;break;case3:*ptr=T0;*(ptr+1)=Tl;*(ptr+2)=Th;break;case4:*ptr=Th;*(ptr+1)=Tm;*(ptr+2)=T0;break;case5:*ptr=Th;*(ptr+1)=T0;*(ptr+2)=Tl;break;default:*ptr=Tl;*(ptr+1)=Th;*(ptr+2)=T0;}}voidinit_eva(){//EVAConfigureT1PWM,T2PWM,PWM1-PWM6//Initalizethetimers//InitalizeEVATimer1EvaRegs.T1PR=0x1D4C;//Timer1periodHSPCLK/fz=75E6/5E3=15000,T1PR=15000/2=0X1D4C//EvaRegs.T1CMPR=0x3C00;//Timer1compareEvaRegs.T1CNT=0x0000;//Timer1counter//TMODE=continuousup/down//Timerenable//Timercompareenable//EVA_INPUT_CLK=HSPCLK/1=75MHZEvaRegs.T1CON.all=0x0842;//InitalizeEVATimer2//EvaRegs.T2PR=0x0FFF;//Timer2period//EvaRegs.T2CMPR=0x03C0;//Timer2compare//EvaRegs.T2CNT=0x0000;//Timer2counter//TMODE=continuousup/down//Timerenable//Timercompareenable//EvaRegs.T2CON.all=0x1042;//SetupT1PWMandT2PWM//DriveT1/T2PWMbycomparelogicEvaRegs.GPTCONA.bit.TCMPOE=1;//PolarityofGPTimer1Compare=ActivelowEvaRegs.GPTCONA.bit.T1PIN=1;//PolarityofGPTimer2Compare=ActivehighEvaRegs.GPTCONA.bit.T2PIN=2;//EnablecompareforPWM1-PWM6EvaRegs.CMPR1=0x0C00;EvaRegs.CMPR2=0x3C00;EvaRegs.CMPR3=0xFC00;//Compareactioncontrol.Actionthattakesplace//onacmpareevent//outputpin1CMPR1-activehigh//outputpin2CMPR1-activelow//outputpin3CMPR2-activehigh//outputpin4CMPR2-activelow//outputpin5CMPR3-activehigh//outputpin6CMPR3-activelowEvaRegs.ACTRA.all=0x0666;EvaRegs.DBTCONA.all=0x0FF8;//deadbandtimeis3.2us//compareenable//reloadwhenT1CNT=0//hardwaresvpwmmodedisable//FCMPOE=1ENABLEEvaRegs.COMCONA.all=0x8200;}

1 / 8
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功