• 大小: 13KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: DSP28335  PWM  移相  

资源简介

基于DSP28335产生4路PWM移相程序,每路以A为准,B与之互补,带死区。移相以第一路信号(EPWM1A)为基准。假设第一路与第二路之间的移相角为D1 若D1=x,则D1对应0.24*x度,例如x=50时,D1对应12度。

资源截图

代码片段和文件信息

//###############################################################################################
// Description:
// program for 4路PWM信号,每路以A为准,B与之互补,带死区。移相以第一路信号(EPWM1A)为基准
// $TI Release: F2833x/F2823x Header Files and Peripheral Examples V142 $
// $Release Date: July 30 2017 $
// $Copyright: Copyright 孙川(Sun Chuan) $
//###############################################################################################

#include “DSP28x_Project.h“     

void InitExInt(void);
void InitEPwm1Example(void);
void InitEPwm2Example(void);
void InitEPwm3Example(void);
void InitEPwm4Example(void);

//interrupt void epwm1_isr(void);
//interrupt void epwm2_isr(void);
//interrupt void epwm3_isr(void);
//interrupt void epwm4_isr(void);

// Configure the period for each timer
//第一路
volatile Uint16 EPWM1_TIMER_TBPRD = 1500;  // Period=1501 TBCLK counts
volatile Uint16 EPWM1_CMPA = 750;          // Set 50% 占空比 for EPWM1A -> S1
//第二路
volatile Uint16 EPWM2_TIMER_TBPRD = 1500;  
volatile Uint16 EPWM2_CMPA = 750;          
//第三路
volatile Uint16 EPWM3_TIMER_TBPRD = 1500;  
volatile Uint16 EPWM3_CMPA = 750;
//第四路
volatile Uint16 EPWM4_TIMER_TBPRD = 1500;
volatile Uint16 EPWM4_CMPA = 750;

volatile Uint16 D1 = 50;   //第一路与第二路之间的移相角 若D1=x,则D1对应0.24*x度,例如x=50时,D1对应12度
volatile Uint16 D2 = 100;  //第一路与第三路之间的移相角
volatile Uint16 D3 = 72;   //第一路与第四路之间的移相角

#define DBTIME_FED 28  死区设置
#define DBTIME_RED 28

void main(void)
{
// Step 1. Initialize System Control:
// PLL WatchDog enable Peripheral Clocks
// This example function is found in the DSP2833x_SysCtrl.c file.
   InitSysCtrl();

// Step 2. Initialize GPIO:
// This example function is found in the DSP2833x_Gpio.c file and
// illustrates how to set the GPIO to it‘s default state.
// InitGpio();  // Disenable pull-up on GPIO0 ~ GPIO11

// For this case just init GPIO pins for ePWM1 ePWM2 ePWM3 ePWM4
// These functions are in the DSP2833x_EPwm.c file
   InitEPwm1Gpio();
   InitEPwm2Gpio();
   InitEPwm3Gpio();
   InitEPwm4Gpio();

// Step 3. Clear all interrupts and initialize PIE vector table:
// Disable CPU interrupts
   DINT;

// Initialize the PIE control registers to their default state.
// The default state is all PIE interrupts disabled and flags
// are cleared.
// This function is found in the DSP2833x_PieCtrl.c file.
   InitPieCtrl();

// Disable CPU interrupts and clear all CPU interrupt flags:
   IER = 0x0000;
   IFR = 0x0000;

// Initialize the PIE vector table with pointers to the shell Interrupt
// Service Routines (ISR).
// This will populate the entire table even if the interrupt
// is not used in this example.  This is useful for debug purposes.
// The shell ISR routines are found in DSP2833x_DefaultIsr.c.
// This function is found in DSP2833x_PieVect.c.
   InitPieVectTable();

   MemCopy(&RamfuncsLoadStart &RamfuncsLoadEnd &RamfuncsRunStart);  //烧录进Flash中运行
   InitFlash();

   InitExInt();

   EALLOW;
   PieVect

评论

共有 条评论