This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320F2.8375万D:不连续PWM

Guru**** 2551570 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/630024/ccs-tms320f28375d-discontinuous-pwm

部件号:TMS320F2.8375万D
线程中讨论的其他部件: TMS320F2.8377万D

工具/软件:Code Composer Studio

大家好,我正在将TMS32F2811 DSP用于电动机控制应用,在这种应用中,我们使用DPWM技术生成PWM。 我为2811的PWM初始化设置的配置如下所示,并且工作正常。

EvaRegs.EXTCONA.bit.INDCOE=0;

EvaRegs.EXTCONA.bit.QEPIQUAL=0;

EvaRegs.EXTCONA.Bit.QEPIE=0;

EvaRegs.EXTCONA.bit.EVSOCE=0;

EvaRegs.T1PR = 1.5万;

EvaRegs.GPTCONA.Bit.T1PIN = 01;

// EvaRegs.GPTCONA.bit.t2PIN = 01;

EvaRegs.GPTCONA.Bit.T1CMOE = 1;

EvaRegs.GPTCONA.Bit.T2CMPOE = 0;

EvaRegs.GPTCONA.Bit.TCMPOE = 1;

EvaRegs.GPTCONA.Bit.T1TOADC = 00;

EvaRegs.GPTCONA.Bit.T2TOADC = 00;

EvaRegs.GPTCONA.Bit.T1CTRIPE= 0;

EvaRegs.GPTCONA.Bit.T2CTRIPE= 0;

EvaRegs.ACTRA.Bit.CMP1ACT =10;

EvaRegs.ACTRA.Bit.CMP2ACT =01;

EvaRegs.ACTRA.Bit.CMP3ACT =10;

EvaRegs.ACTRA.Bit.CMP4ACT =01;

EvaRegs.ACTRA.Bit.CMP5ACT =10;

EvaRegs.ACTRA.Bit.CMP6ACT =01;

EvaRegs.DBTCONA.Bit.DBTPS = 0x7;

EvaRegs.DBTCONA.Bit.EDBT1 = 1;

EvaRegs.DBTCONA.bit.EDBT2 = 1;

EvaRegs.DBTCONA.Bit.EDBT3 = 1;

EvaRegs.DBTCONA.Bit.DBT = 0xF;

EvaRegs.COMCONA.bit.C1TRIPE =0;

EvaRegs.COMCONA.bit.C2TRIPE =0;

EvaRegs.COMCONA.bit.C3TRIPE =0;

EvaRegs.COMCONA.bit.rsvd:2;

EvaRegs.COMCONA.bit.FCMP1OE =0;

EvaRegs.COMCONA.bit.FCMP2OE =0;

EvaRegs.COMCONA.bit.FCMP3OE =0;

EvaRegs.COMCONA.bit.PDPINTASTATUS=1;

EvaRegs.COMCONA.bit.FCOMPOE =0;

EvaRegs.COMCONA.bit.ACTRLD =00;

EvaRegs.COMCONA.bit.SVENABLE=0;

EvaRegs.COMCONA.bit.CLD =00;

EvaRegs.COMCONA.bit.CENABLE= 1;

EvaRegs.T1CON.Bit.TECMPR = 1;

EvaRegs.T1CON.bit.TCLD10 = 00;

EvaRegs.T1CON.Bit.TCLKS10=00;

EvaRegs.T1CON.Bit.Tenable = 0;

// EvaRegs.T1CON.bit.rsvd2 = 0;

EvaRegs.T1CON.Bit.TPS = 2;

EvaRegs.T1CON.Bit.TMODE = 1;

// EvaRegs.T1CON.bit.rsvd = 1;

EvaRegs.T1CON.bit.free = 1;

EvaRegs.T1CON.bit.soft = 1;

EvaRegs.T2CON.Bit.SET1PR = 0;

EvaRegs.T2CON.bit.TECMPR = 0;

EvaRegs.T2CON.Bit.TCLD10 = 00;

EvaRegs.T2CON.Bit.TCLKS10= 11;

EvaRegs.T2CON.bit.tenable = 0;

EvaRegs.T2CON.Bit.T2SWT1 = 0;

EvaRegs.T2CON.Bit.TPS =000;

EvaRegs.T2CON.Bit.TMODE =10;

// EvaRegs.T2CON.bit.rsvd = 1;

EvaRegs.T2CON.bit.free = 1;

EvaRegs.T2CON.bit.soft = 1;

EvaRegs.CAPCONA.ALL = 0x0000;

EvaRegs.T2PR = 6.5535万;

EvaRegs.T2CMPR = 6.5534万;

EvaRegs.T2CNT = 6.5535万;

EvaRegs.T2CON.bit.tenable = 1;

但在新开发中,我们使用的是TMS320F2.8375万D,并且我们面临着夹紧区域的电流峰值问题(有关DPWM问题的详细信息,请参阅以下链接 e2e.ti.com/.../58.4628万 )。 我为TMS320F2.8375万D的PWM初始化设置的配置如下所示。

EPwm1Regs.TBPRD = 1万;

EPwm1Regs.TBPHS.HalfTBPHS = 0x0000;

EPwm1Regs.TBCTR = 0x0000;

EPwm1Regs.TBCTL.bit.FREE_SOFT = 3;

EPwm1Regs.TBCTL.bit.PHSDIR = 1;

EPwm1Regs.TBCTL.bit.CLKDIV = 1;

EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0;

EPwm1Regs.TBCTL.bit.SWFSYNC = 0;

EPwm1Regs.TBCTL.bit.SYNCOSEL = 3;

EPwm1Regs.TBCTL.bit.PRDLD = 0;

EPwm1Regs.TBCTL.bit.PHSEN = 0;

EPwm1Regs.TBCTL.bit.CTRMODE = 2;

// EPwm1Regs.TBSTS.bit.rsvd1 = 0;

EPwm1Regs.TBSTS.bit.CTRMAX = 0;

EPwm1Regs.TBSTS.bit.SYNCI = 0;

EPwm1Regs.TBSTS.bit.CTRDIR = 0;

// EPwm1Regs.CMPCTL.bit.rsvd1 = 0;保留1

EPwm1Regs.CMPCTL.bit.SHDWBFULL = 0;

EPwm1Regs.CMPCTL.bit.SHDWAFULL = 0;

// EPwm1Regs.CMPCTL.bit.rsvd2 = 0;保留2

EPwm1Regs.CMPCTL.bit.SHDWBMODE = 0;

EPwm1Regs.CMPCTL.bit.SHDWAMODE = 0;

EPwm1Regs.CMPCTL.bit.LOADBMODE = 0;

EPwm1Regs.CMPCTL.bit.LOADAMODE = 2;

EPwm1Regs.CMPA.Halt.CMPA = 1万;

EPwm1Regs.CMPB.Halt.CMPB = 1万;

EPwm1Regs.AQCTLA.bit.CBD = 00;

EPwm1Regs.AQCTLA.bit.CBU = 00;

EPwm1Regs.AQCTLA.bit.CAD = 01;

EPwm1Regs.AQCTLA.bit.CAU = 10;

EPwm1Regs.AQCTLA.bit.PRD = 00;

EPwm1Regs.AQCTLA.bit.ZRO = 00;

// EPwm1Regs.AQCTLB.bit.rsvd = 0;

EPwm1Regs.AQCTLB.bit.CBD = 00;

EPwm1Regs.AQCTLB.bit.CBU = 00;

EPwm1Regs.AQCTLB.bit.CAD = 10;

EPwm1Regs.AQCTLB.bit.CAU = 01;

EPwm1Regs.AQCTLB.bit.PRD = 00;

EPwm1Regs.AQCTLB.bit.ZRO = 00;

EPwm1Regs.AQSFRC.bit.RLDCSF = 11;

//EPwm1Regs.AQCSFRC.bit.rsvd1 = 0;

EPwm1Regs.AQCSFRC.bit.CSFB = 00;

EPwm1Regs.AQCSFRC.bit.CSFA = 01;

EPwm1Regs.DBCTL.bit.out模式=3;

EPwm1Regs.DBCTL.bit.POLSEL = 00;

EPwm1Regs.DBCTL.bit.in_mode = 0;

EPwm1Regs.DBRED =160;

EPwm1Regs.DBFED = 160;

EPwm1Regs.ETSEL.bit.SOCBEN = 0;

EPwm1Regs.ETSEL.bit.SOCBSEL = 0;

EPwm1Regs.ETSEL.bit.SOCAEN = 0;

EPwm1Regs.ETSEL.bit.SOCASEL = 0;

EPwm1Regs.ETSEL.bit.inten = 0;

EPwm1Regs.ETSEL.bit.INTSEL =000;

EPwm1Regs.etps.bit.SOCBCNT = 00;

EPwm1Regs.etps.bit.SOCBPRD = 00;

EPwm1Regs.etps.bit.SOCACNT = 00;

EPwm1Regs.ETPS.bit.SOCAPRD = 00;

// EPwm1Regs.etps.bit.rsvd1 = 0;

EPwm1Regs.ETPS.bit.INTCNT = 00;

EPwm1Regs.etps.bit.INTPRD = 01;

EPwm1Regs.ETFLG.ALL = 0;

EPwm1Regs.ETFLG.ALL = 0;

EALLOW;

//EPwm1Regs.TZsel.bit.rsvd1 = 0;

EPwm1Regs.TZsel.bit.DCAEVT1=0;

EPwm1Regs.TZsel.bit.OSAHT5 = 0;

EPwm1Regs.TZsel.bit.OSAHT4 = 0;

EPwm1Regs.TZsel.bit.OSAHT3 = 1;

EPwm1Regs.TZsel.bit.OSAHT2 = 1;

EPwm1Regs.TZsel.bit.OSAHT1 = 1;

//EPwm1Regs.TZsel.bit.rsvd2 = 0;

EPwm1Regs.TZsel.bit.CBC6 = 0;

EPwm1Regs.TZsel.bit.CBC5 = 0;

EPwm1Regs.TZsel.bit.CBC4 = 0;

EPwm1Regs.TZsel.bit.CBC3 = 0;

EPwm1Regs.TZsel.bit.CBC2 = 0;

EPwm1Regs.TZsel.bit.CBC1 = 0;

//EPwm1Regs.TZCTL.bit.rsvd = 0;

EPwm1Regs.TZCTL.bit.TZA = 00;

EPwm1Regs.TZCTL.bit.TZB = 00;

EPwm1Regs.TZCTL.bit.DCAEVT1=0

//EPwm1Regs.TZEINT.bit.rsvd1 = 0;

EPwm1Regs.TZEINT.Bit.OST = 0;

EPwm1Regs.TZEINT.Bit.CBC = 0;

//EPwm1Regs.TZEINT.bit.rsvd2 = 0;

EPwm1Regs.TZDCSEL.bit.DCBEVT1 = TZ_DCBH_HI;

EPwm1Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xF;

EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;

EPwm1Regs.TZsel.bit.DCBEVT1 = 1;

EPwm1Regs.DCBCTL.bit.EVT1SRCSEL = DC_EVT1;

EPwm1Regs.DCBCTL.bit.EVT1FRCSYNCSEL = DC_EVT_Async;

EPwmXbarRegs.TRIP4MUX0TO15CFG.bit.MUX2 = 0;

EPwmXbarRegs.TRIP4MUXENABLE.bit.MUX2 = 1;

EPwm2Regs.TZDCSEL.bit.DCBEVT1 = TZ_DCBH_HI;

EPwm2Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xF;

EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;

EPwm2Regs.TZsel.bit.DCBEVT1 = 1;

EPwm2Regs.DCBCTL.bit.EVT1SRCSEL = DC_EVT1;

EPwm2Regs.DCBCTL.bit.EVT1FRCSYNCSEL = DC_EVT_Async;

EPwm3Regs.TZDCSEL.bit.DCBEVT1 = TZ_DCBH_HI;

EPwm3Regs.DCTRIPSEL.bit.DCBHCOMPSEL = 0xF;

EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT4 = 1;

EPwm3Regs.TZsel.bit.DCBEVT1 = 1;

EPwm3Regs.DCBCTL.bit.EVT1SRCSEL = DC_EVT1;

EPwm3Regs.DCBCTL.bit.EVT1FRCSYNCSEL = DC_EVT_Async;

EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX7 = 1;

EPwmXbarRegs.TRIP5MUX0TO15CFG.bit.MUX9 = 1;

EPwmXbarRegs.TRIP5MUXENABLE.bit.MUX7 = 1;

EPwmXbarRegs.TRIP5MUXENABLE.bit.MUX9 = 1;

EPwm1Regs.DCBHTRIPSEL.bit.TRIPINPUT5 =1;

EPwm2Regs.DCBHTRIPSEL.bit.TRIPINPUT5 =1;

EPwm3Regs.DCBHTRIPSEL.bit.TRIPINPUT5 =1;

EPwm1Regs.TZCLL.bit.OST = 1;

EPwm1Regs.TZCLL.bit.CBC = 0;

EPwm1Regs.TZCLL.bit.INT =1;

EPwm1Regs.ETSEL.ALL = 0;

EPwm1Regs.ETSEL.bit.SOCAEN = 1;

EPwm1Regs.ETSEL.bit.SOCASEL = 3;

EPwm1Regs.ETPS.bit.SOCAPRD = 1;

EDIS;

请为我提供减少电流峰值的解决方案。

谢谢。