本帖最后由 草上之风 于 2015-4-9 11:04 编辑
各位前辈,小白想用28335输出PWM给驱动器驱动步进电机,编译过了,可是动不了,不知道哪里有问题求指导!! 或者直接给一个能输出PWM的28335的工程也许啊!!
多谢啦~~
这个是配置PWM程序
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#if (CPU_FRQ_150MHZ)
#define CPU_CLK 150e6
#endif
#if (CPU_FRQ_100MHZ)
#define CPU_CLK 100e6
#endif
#define PWM_CLK 10e3 // If diff freq. desired, change freq here.
#define SP CPU_CLK/(2*PWM_CLK)
#define TBCTLVAL 0x200E // Up-down cnt, timebase = SYSCLKOUT
void EPwmSetup()
{
// InitEPwm1Gpio();
InitEPwm();
EPwm1Regs.TBSTS.all=0;
EPwm1Regs.TBPHS.half.TBPHS=0;
EPwm1Regs.TBCTR=0;
EPwm1Regs.CMPCTL.all=0x50; // Immediate mode for CMPA and CMPB
EPwm1Regs.CMPA.half.CMPA =400;
EPwm1Regs.CMPB=0;
EPwm1Regs.AQCTLA.all=0x60; // EPWMxA = 1 when CTR=CMPA and counter inc
// EPWMxA = 0 when CTR=CMPA and counter dec
EPwm1Regs.AQCTLB.all=0;
EPwm1Regs.AQSFRC.all=0;
EPwm1Regs.AQCSFRC.all=0;
EPwm1Regs.DBCTL.all=0xb; // EPWMxB is inverted
EPwm1Regs.DBRED=0;
EPwm1Regs.DBFED=0;
EPwm1Regs.TZSEL.all=0;
EPwm1Regs.TZCTL.all=0;
EPwm1Regs.TZEINT.all=0;
EPwm1Regs.TZ标志寄存器.all=0;
EPwm1Regs.TZCLR.all=0;
EPwm1Regs.TZFRC.all=0;
EPwm1Regs.ETSEL.all=0; // Interrupt when TBCTR = 0x0000
EPwm1Regs.ET标志寄存器.all=0;
EPwm1Regs.ETCLR.all=0;
EPwm1Regs.ETFRC.all=0;
EPwm1Regs.PCCTL.all=0;
EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL; // Enable Timer
EPwm1Regs.TBPRD=SP;
}
这个是输出PWM主程序
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
void EPwmSetup();
Uint16 i;
void main(void)
{
InitSysCtrl();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up on GPIO18 驱动器方向控制信号
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up on GPIO19 驱动器空转信号
GpioDataRegs.GPASET.bit.GPIO18 = 1; // Load output latch
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 0; // Configure GPI18 as IO
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; // Configure GPI19 as IO
GpioCtrlRegs.GPADIR.bit.GPIO18 = 1; // GPIO18 = output
GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; // GPIO19 = output
EDIS;
EPwmSetup();
for(; ;)
{
}
}
|
|