打印

F2812的EV模块驱动步进电机配置问题

[复制链接]
1886|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ndt126|  楼主 | 2014-5-9 10:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟采用F2812的EVA和EVB驱动同时驱动两个步进电机1和2。步进电机1的PWM信号由定时器T1产生,步进电机2的PWM信号由定时器T3产生。两个定时的程序初始化如下。用示波器检测TI和T3引脚时,T1出现正常波形,但T3一直是3.3V高电平。求高手指点,感激不尽!!!
void InitT1PWM(void)
  {
    EvaRegs.T1CON.bit.TMODE=1;            //连续增/减模式
    EvaRegs.T1CON.bit.TPS=1;                //T1CLK=HSPCLK/2=15M
    EvaRegs.T1CON.bit.TENABLE=0;        //暂时禁止T1计数
    EvaRegs.T1CON.bit.TCLKS10=0;         //使用内部时钟,T1CLK
    EvaRegs.T1CON.bit.TECMPR=1;           //使能定时器比较操作
    EvaRegs.GPTCONA.bit.T1PIN=2;          //高电平有效
EvaRegs.GPTCONA.bit.TCOMPOE=1;     //通过比较逻辑驱动t1pwm
    EvaRegs.T1PR=0x1D4C;                  //1KHz的PWM,周期为1ms  r 7500=1D4C
    EvaRegs.T1CMPR=0x0EA6;                //占空比为50%,高电平有效  3750
    EvaRegs.T1CNT=0;                          //  (7500-3500)/7500=0.5
EvaRegs.T1CON.bit.TCLD10=0;          // 当计数器T1CNT为0时,定时器1比较寄存器T1CMPR重载
  }


  void InitT3PWM(void)
  {
    EvbRegs.T3CON.bit.TMODE=1;           //连续增/减模式
    EvbRegs.T3CON.bit.TPS=1;                  //T3CLK=HSPCLK/2=15M
    EvbRegs.T3CON.bit.TENABLE=0;         //暂时禁止3计数
    EvbRegs.T3CON.bit.TCLKS10=0;          //使用内部时钟,T3CLK
    EvbRegs.T3CON.bit.TECMPR=1;          //使能定时器比较操作
    EvbRegs.GPTCONB.bit.T3PIN=2;   
    EvbRegs.GPTCONB.bit.TCOMPOE=1;   
    EvbRegs.T3PR=0x1D4C;            
    EvbRegs.T3CMPR=0x0EA6;         
    EvbRegs.T3CNT=0;
    EvbRegs.T3CON.bit.TCLD10=0;      
  
  }

相关帖子

沙发
NWPU_CHEN| | 2014-5-9 15:55 | 只看该作者
两个通用定时器设置完全相同,没看出有啥问题,你的T3口不能产生PWM波,是不是没有使能EVB的外设时钟,贴出你的InitSysCtrl函数和InitGpio函数和主函数

使用特权

评论回复
板凳
ndt126|  楼主 | 2014-5-10 08:01 | 只看该作者
EVB外设时钟在InitSysCtrl函数中已经使能
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;   //EVA CLOCK ENABLED
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;   //EVB CLOCK ENABLED

InitGpio函数中也将这两个引脚设为功能脚
GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6=1;
GpioMuxRegs.GPBMUX.bit.T3PWM_GPIOB6=1;

使用特权

评论回复
地板
ndt126|  楼主 | 2014-5-10 08:02 | 只看该作者
NWPU_CHEN 发表于 2014-5-9 15:55
两个通用定时器设置完全相同,没看出有啥问题,你的T3口不能产生PWM波,是不是没有使能EVB的外设时钟,贴出 ...

EVB外设时钟在InitSysCtrl函数中已经使能
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;   //EVA CLOCK ENABLED
SysCtrlRegs.PCLKCR.bit.EVBENCLK=1;   //EVB CLOCK ENABLED

InitGpio函数中也将这两个引脚设为功能脚
GpioMuxRegs.GPAMUX.bit.T1PWM_GPIOA6=1;
GpioMuxRegs.GPBMUX.bit.T3PWM_GPIOB6=1;

使用特权

评论回复
5
NWPU_CHEN| | 2014-5-11 09:21 | 只看该作者
ndt126 发表于 2014-5-10 08:02
EVB外设时钟在InitSysCtrl函数中已经使能
SysCtrlRegs.PCLKCR.bit.EVAENCLK=1;   //EVA CLOCK ENABLED
S ...

确实没问题,你把你的main函数贴出来看看,这确实有点奇怪a

使用特权

评论回复
6
ndt126|  楼主 | 2014-5-12 09:02 | 只看该作者
NWPU_CHEN 发表于 2014-5-11 09:21
确实没问题,你把你的main函数贴出来看看,这确实有点奇怪a

void main ( )
{                                                     
     InitSysCtrl( );   
     DINT;
     InitPieCtrl();
     IER=0x0000;
     IFR=0x0000;
     InitPieVectTable();          //初始化pie中断向量
   
      InitParameter( );             //标志位
     Initperipheral( );               
      First_Initial_MAX7219( );
      PieCtrl.PIEIER1.bit.INTx7 = 1;
      PieCtrl.PIEIER9.bit.INTx3=1;
            
       EvbRegs.T3CON.bit.TENABLE=1;

     EvaRegs.T1CON.bit.TENABLE=1;

     EvbRegs.T4CON.bit.TENABLE=1;

     EvaRegs.T2CON.bit.TENABLE=1;
                           
       
       IER |= M_INT1;   //TIMERO
       IER |= M_INT5;   //CAP
       IER |= M_INT3;   //CAP
        IER |= M_INT9;   //SCIRX
         EINT;   //全局中断使能
         ERTM;   //使能实时中断  
            
    CpuTimer0Regs.TCR.bit.TSS = 0;   //系统复位以后,TSS清零立即启动定时器  
    ScibRegs.SCICTL2.bit.RXBKINTENA=1;  //调试SCI接受中断用
     
    while(1)
    {
     ......
     }
}

使用特权

评论回复
7
NWPU_CHEN| | 2014-5-12 15:43 | 只看该作者
你这主函数中用了这么多东西?为什么没有EV事件管理器的初始化(相对于你程序中的InitT1Pwm()和InitT3pwm())?莫非放到了while(1)中?通用定时器2和4都是使用了?cpu定时器0和捕获都使用?是联合使用计算转速?为什么两个捕获中断没有使能pie中断?还有串行通讯的使用总之疑问很多。。。。

使用特权

评论回复
8
ndt126|  楼主 | 2014-5-12 18:01 | 只看该作者
NWPU_CHEN 发表于 2014-5-12 15:43
你这主函数中用了这么多东西?为什么没有EV事件管理器的初始化(相对于你程序中的InitT1Pwm()和InitT3pwm( ...

主程序太多,只贴了一小部分。EV的初始化在Initperipheral( );里。
这是一个大的系统程序,用EV定时器控制两个步进电机只是其中的一小部分

使用特权

评论回复
9
NWPU_CHEN| | 2014-5-12 21:13 | 只看该作者
ndt126 发表于 2014-5-12 18:01
主程序太多,只贴了一小部分。EV的初始化在Initperipheral( );里。
这是一个大的系统程序,用EV定时器控 ...

这问题要么是软件哪设置问题要么是硬件问题,从你贴的代码中没看出evb这块有啥问题
1.觉得ev初始化没问题,Gpio引脚设置成功能模式,使能外设时钟都对,不应该产生不了波形啊
2.硬件能保证正常吗?
个人觉得,有条件换换板子试试,不行可用换管脚用比较单元产生一路pwm试试看行不行,你仔细查查吧,反正暂时从你贴的代码中没发现啥大问题,我再琢磨琢磨,你要是解决了分享下

使用特权

评论回复
10
ndt126|  楼主 | 2014-5-13 19:30 | 只看该作者
NWPU_CHEN 发表于 2014-5-12 21:13
这问题要么是软件哪设置问题要么是硬件问题,从你贴的代码中没看出evb这块有啥问题
1.觉得ev初始化没问题 ...

恩,谢谢啦
我也在怀疑是不是硬件的问题,所以准备换一块板子试试。

使用特权

评论回复
11
zhangmangui| | 2014-5-13 21:44 | 只看该作者
T3可以吗  我怎么记得2812只有T1和T2
记得不清楚了

使用特权

评论回复
12
zhangmangui| | 2014-5-13 21:46 | 只看该作者

使用特权

评论回复
13
ndt126|  楼主 | 2014-5-20 09:00 | 只看该作者

使用特权

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

本版积分规则

5

主题

16

帖子

0

粉丝