TI中文支持网
TI专业的中文技术问题搜集分享网站

F2812的EV模块同时驱动两个步进电机的配置问题

小弟采用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;      
  
  }

ting wang3:

我看你初始化事件管理器都没错,估计你是忘记将T3PWM_GPIO6这个引脚置1了,或者是你把该引脚置0了,所以才会一直出现3.3v,仅供参考

小弟采用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;      
  
  }

Datao Nie:

回复 ting wang3:

你好,那个引脚已经置1了。请问是否还有其他的原因?调试时发现T3驱动的步进电机使能时,虽然没有任何动作,但它影响了T1驱动的电机,是的T1的电机也无法动作。

小弟采用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;      
  
  }

ting wang3:

回复 Datao Nie:

我也不是很清楚,现在T1电机也不转了啊,你用了电机驱动模块没,DSP输出是3.3v,驱动电机要5v,要加个数字IO口电压转换芯片,我也是菜鸟,帮不了你

小弟采用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;      
  
  }

Datao Nie:

回复 ting wang3:

用了电机驱动模块,现在的情况是T3对T1产生了影响,很是头疼啊。

呵呵,谢谢啦……

赞(0)
未经允许不得转载:TI中文支持网 » F2812的EV模块同时驱动两个步进电机的配置问题
分享到: 更多 (0)