DSP tms 28335 以下epwm配置能不能实现电流滞环控制以及软件强制输出6路pwm

qq_42156112 2018-05-07 04:39:12
求各位懂DSP得大佬帮助下
这是关于软件强制输出高低电平的配置 :
#include "DSP2833x_Device.h"
#include "f2833xpwm.h"


void F2833X_PWM_Init(PWMGEN *p)
{

// Init Timer-Base Period Register for EPWM1-EPWM3
EPwm1Regs.TBPRD = p->PeriodMax;
EPwm2Regs.TBPRD = p->PeriodMax;
EPwm3Regs.TBPRD = p->PeriodMax;

// Init Timer-Base Phase Register for EPWM1-EPWM3
EPwm1Regs.TBPHS.half.TBPHS = 0;
EPwm2Regs.TBPHS.half.TBPHS = 0;
EPwm3Regs.TBPHS.half.TBPHS = 0;


// Init Timer-Base Control Register for EPWM1-EPWM3 0xA00A
EPwm1Regs.TBCTL.all = 0xA18E;
EPwm2Regs.TBCTL.all = 0xA18E;
EPwm3Regs.TBCTL.all = 0xA18E;


// Init Compare Control Register for EPWM1-EPWM3 0x0000
EPwm1Regs.CMPCTL.all = 0x0000;
EPwm2Regs.CMPCTL.all = 0x0000;
EPwm3Regs.CMPCTL.all = 0x0000;

// Init Action Qualifier Output A Register for EPWM1-EPWM3 0x0060
EPwm1Regs.AQCTLA.all = 0x0060;
EPwm2Regs.AQCTLA.all = 0x0060;
EPwm3Regs.AQCTLA.all = 0x0060;


// Init Dead-Band Generator Control Register for EPWM1-EPWM3 0x000B
EPwm1Regs.DBCTL.all = 0x0007;//DBCTL_INIT_STATE;
EPwm2Regs.DBCTL.all = 0x0007;//DBCTL_INIT_STATE;
EPwm3Regs.DBCTL.all = 0x0007;//DBCTL_INIT_STATE;

// Init PWM Chopper Control Register for EPWM1-EPWM3
EPwm1Regs.PCCTL.all = 0x0000;
EPwm2Regs.PCCTL.all = 0x0000;
EPwm3Regs.PCCTL.all = 0x0000;


// Init Dead-Band Generator Falling/Rising Edge Delay Register for EPWM1-EPWM3 100
EPwm1Regs.DBFED = 70;
EPwm1Regs.DBRED = 70;
EPwm2Regs.DBFED = 70;
EPwm2Regs.DBRED = 70;
EPwm3Regs.DBFED = 70;
EPwm3Regs.DBRED = 70;



//------------------------------------------
EALLOW;
EPwm1Regs.TZSEL.all=0x0000; //TZ1 OST
EPwm2Regs.TZSEL.all=0x0000; //TZ1 OST
EPwm3Regs.TZSEL.all=0x0000; //TZ1 OST

/* GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pullup on GPIO0
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0; // Enable pullup on GPIO1
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 0; // Enable pullup on GPIO2
GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0; // Enable pullup on GPIO3
GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; // Enable pullup on GPIO4
GpioCtrlRegs.GPAPUD.bit.GPIO5 = 0; // Enable pullup on GPIO5 */

GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // GPIO0 = PWM1A
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 1; // GPIO1 = PWM1B
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 1; // GPIO2 = PWM2A
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 1; // GPIO3 = PWM2B
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 1; // GPIO4 = PWM3A
GpioCtrlRegs.GPAMUX1.bit.GPIO5 = 1; // GPIO5 = PWM3B

EDIS;


/* EPwm1Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
EPwm1Regs.TZCTL.all=0; //One Shot mod
EPwm2Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
EPwm2Regs.TZCTL.all=0; //One Shot mod
EPwm3Regs.TZEINT.all=4; //Trip-zones Cycle by Cycle Interrupt
EPwm3Regs.TZCTL.all=0; //One Shot mod
*/
EPwm1Regs.AQSFRC.all = 0xc0;
EPwm2Regs.AQSFRC.all = 0xc0;
EPwm3Regs.AQSFRC.all = 0xc0;

EPwm1Regs.AQCSFRC.bit.CSFA=2; //对输出A强制产生连续高信号
EPwm2Regs.AQCSFRC.bit.CSFA=2;
EPwm3Regs.AQCSFRC.bit.CSFA=2;

EPwm1Regs.AQCSFRC.bit.CSFB=1; //对输出B强制产生连续高信号
EPwm2Regs.AQCSFRC.bit.CSFB=1;
EPwm3Regs.AQCSFRC.bit.CSFB=1;



//=========================================================//



}


下面是电流滞环的逻辑
void F2833X_PWM_Update(PWMGEN *p)
{

float32 A;
float32 B;
float32 C;
A=(float32)p->MfuncC4 - (float32)p->MfuncC1;//C1,C2,C3是指输入电流 , C4,C5,C6是指反馈电流
B=(float32)p->MfuncC5 -(float32) p->MfuncC2;
C=(float32)p->MfuncC6 -(float32) p->MfuncC3;

if( A>=0.316)
{
EPwm1Regs.AQCSFRC.bit.CSFA = 1; // Forcing a continuous Low on output A of EPWM1
EPwm1Regs.AQCSFRC.bit.CSFB = 2;
}
else
{

EPwm1Regs.AQCSFRC.bit.CSFA = 2; // Forcing a continuous Low on output A of EPWM1
EPwm1Regs.AQCSFRC.bit.CSFB = 1;
}

if( B>=0.316)
{
EPwm2Regs.AQCSFRC.bit.CSFA = 1; // Forcing a continuous Low on output A of EPWM1
EPwm2Regs.AQCSFRC.bit.CSFB = 2;

}
else
{
EPwm2Regs.AQCSFRC.bit.CSFA = 2; // Forcing a continuous Low on output A of EPWM1
EPwm2Regs.AQCSFRC.bit.CSFB = 1;

}

if( C>=0.316)
{
EPwm3Regs.AQCSFRC.bit.CSFA = 1; // Forcing a continuous Low on output A of EPWM1
EPwm3Regs.AQCSFRC.bit.CSFB = 2;

}
else
{
EPwm3Regs.AQCSFRC.bit.CSFA = 2; // Forcing a continuous Low on output A of EPWM1
EPwm3Regs.AQCSFRC.bit.CSFB = 1;

}


}
...全文
1204 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysysysr 2018-07-16
  • 打赏
  • 举报
回复
环宽怎么表达的呢?

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧