⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f280xpwm_res.c

📁 数字电机控制程序,已经完全调试通过,方便使用TI公司2812DSP的同行应用,高手可用.是我的心血,小心应用
💻 C
字号:
/* ==================================================================================
File name:       F280XPWM_RES.C
                    
Originator:	Digital Control Systems Group
			Texas Instruments

Description:   This file contains source for the Resolver driver for the F280x
              
Target: TMS320F280x family
              
=====================================================================================
History:
-------------------------------------------------------------------------------------
 04-15-2005	Version 3.20: Using DSP280x v. 1.10 or higher 
------------------------------------------------------------------------------------*/

#include "DSP280x_Device.h"
#include "f280xpwm_res.h"


void F280X_Resolver_PWM_Init(RESOLVER_PWM *p) 
{       

         // Setup Sync
         EPwm1Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through
         EPwm2Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through
         EPwm3Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through
         EPwm4Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through
         EPwm5Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through
         EPwm6Regs.TBCTL.bit.SYNCOSEL = 0;          // Pass through

         // Allow each timer to be sync'ed
         EPwm1Regs.TBCTL.bit.PHSEN = 1;
         EPwm2Regs.TBCTL.bit.PHSEN = 1;
         EPwm3Regs.TBCTL.bit.PHSEN = 1;
         EPwm4Regs.TBCTL.bit.PHSEN = 1;
         EPwm5Regs.TBCTL.bit.PHSEN = 1;
         EPwm6Regs.TBCTL.bit.PHSEN = 1;

         // Init Timer-Base Period Register for EPWM5
         EPwm5Regs.TBPRD = p->PeriodMax;

         // Init Timer-Base Phase Register for EPWM5
         EPwm5Regs.TBPHS.half.TBPHS = 0;

         // Init Timer-Base Control Register for EPWM5
         EPwm5Regs.TBCTL.all = PWM_RESOLVER_INIT_STATE;

         // Init Compare Control Register for EPWM5
         EPwm5Regs.CMPCTL.all = PWM_RESOLVER_CMPCTL_INIT_STATE;

         // Init Action Qualifier Output A Register for EPWM5
         EPwm5Regs.AQCTLA.all = PWM_RESOLVER_AQCTLA_INIT_STATE;

         // Init Dead-Band Generator Control Register for EPWM5
         EPwm5Regs.DBCTL.all = PWM_RESOLVER_DBCTL_INIT_STATE;

         // Init Dead-Band Generator Falling/Rising Edge Delay Register for EPWM5
         EPwm5Regs.DBFED = PWM_RESOLVER_DBCNT_INIT_STATE;
         EPwm5Regs.DBRED = PWM_RESOLVER_DBCNT_INIT_STATE;

         // Init PWM Chopper Control Register for EPWM5
         EPwm5Regs.PCCTL.all = PWM_RESOLVER_PCCTL_INIT_STATE;

         EALLOW;                       // Enable EALLOW 

         // Init Trip Zone Select Register
         EPwm5Regs.TZSEL.all = PWM_RESOLVER_TZSEL_INIT_STATE;

         // Init Trip Zone Control Register
         EPwm5Regs.TZCTL.all = PWM_RESOLVER_TZCTL_INIT_STATE;

         // Setting two EPWM as primary output pin
         GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 1;   // EPWM5A pin
         GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1;   // EPWM5B pin

         EDIS;                         // Disable EALLOW

}

void F280X_Resolver_PWM_Update(RESOLVER_PWM *p) 
{       
        int32 Tmp;

        EPwm5Regs.TBPRD = p->PeriodMax;  

// Compute the compare A (Q0) from the EPWM4 A&B duty cycle ratio (Q15)
        Tmp = (int32)p->PeriodMax*(int32)p->RefSignal;                // Q15 = Q0*Q15
        EPwm5Regs.CMPA.half.CMPA = (int16)(Tmp>>16) + (int16)(p->PeriodMax>>1);  // Q0 = (Q15->Q0)/2 + (Q0/2)

}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -