打印
[DSP编程]

28335输出PWM波形求指导!

[复制链接]
4985|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
草上之风|  楼主 | 2015-4-9 11:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 草上之风 于 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(; ;)
    {

    }

}


相关帖子

沙发
zhangmangui| | 2015-4-9 21:39 | 只看该作者
controlSUITE里面没有嘛     你先别接驱动器和电机   用示波器看看输出的波形是什么样子的

使用特权

评论回复
板凳
草上之风|  楼主 | 2015-4-10 09:38 | 只看该作者
zhangmangui 发表于 2015-4-9 21:39
controlSUITE里面没有嘛     你先别接驱动器和电机   用示波器看看输出的波形是什么样子的 ...

谢谢回复,我用示波器看了输出三角波,我要的是方波啊。。不知道该改哪个寄存器。。

使用特权

评论回复
地板
zhangmangui| | 2015-4-10 23:39 | 只看该作者
草上之风 发表于 2015-4-10 09:38
谢谢回复,我用示波器看了输出三角波,我要的是方波啊。。不知道该改哪个寄存器。。 ...

怎么会是三角波啊   数字口啊  
负载有没有去掉   或者输出频率是不是过高

使用特权

评论回复
5
草上之风|  楼主 | 2015-4-12 19:38 | 只看该作者
zhangmangui 发表于 2015-4-10 23:39
怎么会是三角波啊   数字口啊  
负载有没有去掉   或者输出频率是不是过高 ...

谢谢回复,示波器上显示频率是50hz,我改了几次程序不过图像一点没变,有同学说可能是干扰,而且我板子只插上电,不开电源键就是那样的波形。。不知道怎么办。。。求指导

使用特权

评论回复
6
zhangmangui| | 2015-4-12 21:35 | 只看该作者
草上之风 发表于 2015-4-12 19:38
谢谢回复,示波器上显示频率是50hz,我改了几次程序不过图像一点没变,有同学说可能是干扰,而且我板子只 ...

不开电源就有那种波形?
是不是示波器的问题啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝