查看: 9553|回复: 9

[已解决] 请问K60如何实现联合PWM输出,需要用在电机控制方面(已解决)

[复制链接]

该用户从未签到

3

主题

31

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
发表于 2013-10-28 01:16:56 | 显示全部楼层 |阅读模式
 请问K60如何实现联合PWM输出,我试过了,只要使用COMBINE这个寄存器,设置联合模式、死区插入等等,PWM就没法输出,有大虾有解决方法吗??
我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

124

主题

3600

帖子

0

金牌会员

Rank: 6Rank: 6

积分
5781
最后登录
1970-1-1
发表于 2013-10-28 09:49:06 | 显示全部楼层

RE:请问K60如何实现联合PWM输出,需要用在电机控制方面

你好,你的意思是使用COMBINE寄存器后,关联的两个PWM通道都没有引脚输出吗?还有能详细介绍一下你对Flextimer是怎么配置的吗,以方便更快的解决你的问题?
回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

31

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-10-28 23:22:46 | 显示全部楼层

RE:请问K60如何实现联合PWM输出,需要用在电机控制方面

对的,关联的两路PWM互补输出,结果什么信号都出不来,如果只是普通PWM输出就没有问题,具体的配置发给您看下:
void  ftm1PwmInit (INT32U  ulFreq)
{
    SIM_SCGC5  |= SIM_SCGC5_PORTA_MASK;                             
     
    PORTA_PCR12 = PORT_PCR_MUX(3)                              
                | PORT_PCR_DSE_MASK;                           
    PORTA_PCR9  = PORT_PCR_MUX(3)                           
                | PORT_PCR_DSE_MASK;                              
       
  
    FTM1_SC  |= FTM_SC_PS(2)                                       
              | FTM_SC_CLKS(1);                              
       
    SIM_SCGC6   |= SIM_SCGC6_FTM1_MASK;
                        
    FTM1_C0SC   |=  FTM_CnSC_ELSB_MASK;              
    FTM1_C0SC   &= ~FTM_CnSC_ELSA_MASK;     
    FTM1_C0SC   |=  FTM_CnSC_MSB_MASK;
       
    FTM1_C1SC   |=  FTM_CnSC_ELSB_MASK;                  
    FTM1_C1SC   &= ~FTM_CnSC_ELSA_MASK;     
    FTM1_C1SC   |=  FTM_CnSC_MSB_MASK;
       
    FTM1_MODE   |= FTM_MODE_WPDIS_MASK;                  
    FTM1_MODE   |= 1;         
                     
    FTM1_COMBINE |= FTM_COMBINE_DTEN0_MASK;                    
   
    FTM1_DEADTIME |= FTM_DEADTIME_DTPS(1)               
                  | FTM_DEADTIME_DTVAL(12);         
   
    FTM1_COMBINE |= FTM_COMBINE_SYNCEN0_MASK                     
                   |FTM_COMBINE_COMP0_MASK
                   |FTM_COMBINE_COMBINE0_MASK;
    FTM1_SYNC    |= FTM_SYNC_CNTMAX_MASK;
    FTM1_SYNCONF |= FTM_SYNCONF_SWWRBUF_MASK
                  | FTM_SYNCONF_SYNCMODE_MASK;

    FTM1_OUTMASK = 0xf0;      
    FTM1_OUTINIT = 0;         
    FTM1_POL     = 0;              
    FTM1_INVCTRL = 0;            
               
    FTM1_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;      
   
    FTM1_SWOCTRL = 0;         
    FTM1_PWMLOAD = 0;     

    FTM1_CNTIN= 0;         
     
    __GusActMod = (INT16U)(100000000 / 4 / ulFreq);   
     
    FTM1_MOD  = __GusActMod;
                 
    FTM1_C0V   = 30 * __GusActMod / 100;
    FTM1_C1V   = 30 * __GusActMod / 100;
     
    FTM1_CNT  = 0;     
                                                       
    FTM1_SYNC |=FTM_SYNC_SWSYNC_MASK;   
}
void  ftm1PwmSet (INT16U  usDuty)
{

   FTM1_C0V   = 30 * __GusActMod / 100;
   FTM1_C1V   = 30 * __GusActMod / 100;
   FTM1_SYNC |=FTM_SYNC_SWSYNC_MASK;   
}
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2016-11-29 19:14
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    20

    主题

    405

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1529
    最后登录
    1970-1-1
    发表于 2013-10-29 01:15:05 | 显示全部楼层

    回复:请问K60如何实现联合PWM输出,需要用在电机控制方面

    谁有高招,实现级联PWM?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    47

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    1970-1-1
    发表于 2013-10-29 08:44:43 | 显示全部楼层

    回复:请问K60如何实现联合PWM输出,需要用在电机控制方面

    回复第 3 楼 于2013-10-28 23:22:46发表:
    对的,关联的两路PWM互补输出,结果什么信号都出不来,如果只是普通PWM输出就没有问题,具体的配置发给您看下:
    void ftm1PwmInit (INT32U ulFreq)
    {
    SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;

    PORTA_PCR12 = PORT_PCR_MUX(3)
    | PORT_PCR_DSE_MASK;
    PORTA_PCR9 = PORT_PCR_MUX(3)
    | PORT_PCR_DSE_MASK;


    FTM1_SC |= FTM_SC_PS(2)
    | FTM_SC_CLKS(1);

    SIM_SCGC6 |= SIM_SCGC6_FTM1_MASK;

    FTM1_C0SC |= FTM_CnSC_ELSB_MASK;
    FTM1_C0SC &= ~FTM_CnSC_ELSA_MASK;
    FTM1_C0SC |= FTM_CnSC_MSB_MASK;

    FTM1_C1SC |= FTM_CnSC_ELSB_MASK;
    FTM1_C1SC &= ~FTM_CnSC_ELSA_MASK;
    FTM1_C1SC |= FTM_CnSC_MSB_MASK;

    FTM1_MODE |= FTM_MODE_WPDIS_MASK;
    FTM1_MODE |= 1;

    FTM1_COMBINE |= FTM_COMBINE_DTEN0_MASK;

    FTM1_DEADTIME |= FTM_DEADTIME_DTPS(1)
    | FTM_DEADTIME_DTVAL(12);

    FTM1_COMBINE |= FTM_COMBINE_SYNCEN0_MASK
    |FTM_COMBINE_COMP0_MASK
    |FTM_COMBINE_COMBINE0_MASK;
    FTM1_SYNC |= FTM_SYNC_CNTMAX_MASK;
    FTM1_SYNCONF |= FTM_SYNCONF_SWWRBUF_MASK
    | FTM_SYNCONF_SYNCMODE_MASK;

    FTM1_OUTMASK = 0xf0;
    FTM1_OUTINIT = 0;
    FTM1_POL = 0;
    FTM1_INVCTRL = 0;

    FTM1_QDCTRL &=~FTM_QDCTRL_QUADEN_MASK;

    FTM1_SWOCTRL = 0;
    FTM1_PWMLOAD = 0;

    FTM1_CNTIN= 0;

    __GusActMod = (INT16U)(100000000 / 4 / ulFreq);

    FTM1_MOD = __GusActMod;

    FTM1_C0V = 30 * __GusActMod / 100;
    FTM1_C1V = 30 * __GusActMod / 100;

    FTM1_CNT = 0;

    FTM1_SYNC |=FTM_SYNC_SWSYNC_MASK;
    }
    void ftm1PwmSet (INT16U usDuty)
    {

    FTM1_C0V = 30 * __GusActMod / 100;
    FTM1_C1V = 30 * __GusActMod / 100;
    FTM1_SYNC |=FTM_SYNC_SWSYNC_MASK;


    FTM1_C0V = 30 * __GusActMod / 100;
    FTM1_C1V = 30 * __GusActMod / 100;
    你的C0V和C1V怎么设成是一样的?试试取不一样的值
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2013-10-29 16:43:44 | 显示全部楼层

    RE:请问K60如何实现联合PWM输出,需要用在电机控制方面

    要使用级联的话,只需要配置n-1通道的PWM参数就可以啊,不需要两者一起配置的吧。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3

    主题

    31

    帖子

    0

    新手上路

    Rank: 1

    积分
    44
    最后登录
    1970-1-1
     楼主| 发表于 2013-10-29 16:52:49 | 显示全部楼层

    RE:请问K60如何实现联合PWM输出,需要用在电机控制方面

    C0V和C1V设置成不一样的还是不行,有没有实现级联PWM的配置代码??万分感谢!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2013-10-29 17:28:42 | 显示全部楼层

    RE:请问K60如何实现联合PWM输出,需要用在电机控制方面

    你有试过在Debug时,查看寄存器的设置的值是否正确的吗?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10

    主题

    47

    帖子

    0

    注册会员

    Rank: 2

    积分
    144
    最后登录
    1970-1-1
    发表于 2013-10-30 08:38:16 | 显示全部楼层

    回复:请问K60如何实现联合PWM输出,需要用在电机控制方面

    回复第 6 楼 于2013-10-29 16:43:44发表:
    要使用级联的话,只需要配置n-1通道的PWM参数就可以啊,不需要两者一起配置的吧。
     
    一直没明白你们说的“级联”指的是什么?是combine这个词吗?
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    124

    主题

    3600

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    5781
    最后登录
    1970-1-1
    发表于 2013-10-30 16:21:34 | 显示全部楼层

    回复:请问K60如何实现联合PWM输出,需要用在电机控制方面

    回复第 9 楼 于2013-10-30 08:38:16发表:
    回复第 6 楼 于2013-10-29 16:43:44发表:
    要使用级联的话,只需要配置n-1通道的PWM参数就可以啊,不需要两者一起配置的吧。
     
    一直没明白你们说的“级联”指的是什么?是combine这个词吗?
     

     

    是的,你电脑有安装CW的话,可以利用CW中的PE生成两路级联的PWM波,这样做比较简单,容易理解。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-19 15:45 , Processed in 0.107156 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表