查看: 3936|回复: 6

[求助] KE06 FTM Combine 模式有些不明白?

[复制链接]

该用户从未签到

7

主题

30

帖子

0

中级会员

Rank: 3Rank: 3

积分
403
最后登录
2015-11-20
发表于 2015-6-26 09:34:45 | 显示全部楼层 |阅读模式
1、在KE06 FTM  Combine 模式初始化函数中有如下不明白请看下面:

void FTM_PWMInit(FTM_Type *pFTM, uint8_t u8PWMModeSelect, uint8_t u8PWMEdgeSelect)
{
     ..................

else if(FTM_PWM_LOWTRUEPULSE == u8PWMEdgeSelect)  //
    {
        /* Configure timers for PWM Low True Pulses */
        for(i=0; i<channels; i++)
        {
            pFTM->CONTROLS.CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSA_MASK;  
           //#define FTM_CnSC_MSB_MASK  0x20u   选择组合模式
          //#define FTM_CnSC_ELSA_MASK  0x4u  这句话是怎么确定 ELSA的呢,不明白? ELSA 应该是0000 0010 high ture pulse  0000 00X1 low pulse
            pFTM->CONTROLS.CnV  = FTM_C0V_INIT + i*100 ;  
            //#define FTM_C0V_INIT 1000  
           //   i=0 1000  i=1 1100  i=2 1200  i=3 1300  i=4 1400  i=5 1500  我的理解是每个通道的CnV的值?请明示啊?
                                                      
        }
    }

}


2、在KE06 FTM  Combine 模式占空比设置函数中有如下不明白请看下面:
void  FTM_SetDutyCycleCombine(FTM_Type *pFTM, uint8_t u8FTM_Channel, uint8_t u8DutyCycle) // (FTM2,1,50)
{
uint16_t   cnv = pFTM->CONTROLS[u8FTM_Channel-1].CnV; // 为什么通道要减1 ,既然减一那么就是通道0 其值为1000?

    uint16_t   modulo = pFTM->MOD; //9999
   
    ASSERT((1 == u8FTM_Channel) || (3 == u8FTM_Channel) || (5 == u8FTM_Channel)); //轮询奇数通道,为什么?
   
    cnv += (u8DutyCycle * (modulo+1))  / 100;    // 这句话不明白

    if(cnv > modulo)
    {
        cnv = modulo - 1; // 这里是FTM计数时,建议MOD值必须大于CNTIN值,编程时需注意。如果MOD==CNTIN,则计数值一直保持MOD值的意思吗?
    }
    pFTM->CONTROLS[u8FTM_Channel].CnV = cnv ;   //这里应该是通道1吧,其值是6000,有点不明白?
   
    pFTM->PWMLOAD |= FTM_PWMLOAD_LDOK_MASK | (1<<u8FTM_Channel); //使能更新加载,那么1左右1位是通道往下一个通道吗?比如通道1 左移变成通道2,通道2 左移变成通道4?

}

以上的函数有诸多的不明白,请楼主帮忙分析一下。不胜感激!!














我知道答案 目前已有6人回答
回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-6-26 09:38:35 | 显示全部楼层
看了楼主的几个问题,其实最大的原因是楼主没有去看用户手册FTM的combine章节,认真看完,你就非常清楚了。
现在KE06的用户手册以及出中文版的了,所以建议你先好好看看手册。
http://cache.freescale.com/zh-Ha ... M48SF0RM.pdf?fasp=1
410页,26.4.8 组合模式
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16714
    最后登录
    1970-1-1
    发表于 2015-6-26 10:53:39 | 显示全部楼层
    学习了哈
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-4-17 08:39
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    33

    主题

    788

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2796
    最后登录
    1970-1-1
    发表于 2015-6-26 11:02:42 | 显示全部楼层
    先看手册,手册明白了即使上面的程序不明白直接自己配寄存器也能做出想要的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    30

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    403
    最后登录
    2015-11-20
     楼主| 发表于 2015-6-27 11:35:45 | 显示全部楼层
    楼主您好以及各位大神, 我重新配置了一番,KE06的 FTM EPWM为什么打不出波形,完全按照手册配置的,能提点建议或者指点一下吗?不甚感激啊!!

    main()
    {
        Clk_Init(); //system bus clock 20M       
        SIM_PINSEL1 |=SIM_PINSEL1_FTM2PS0(0);     
        SIM_SCGC |=SIM_SCGC_FTM2_MASK ;               
        FTM2_MODE |= FTM_MODE_WPDIS_MASK;     
       FTM2_COMBINE=0;                                       
       FTM2_SC=0x09;                                       
       FTM2_C3SC |= FTM_CnSC_ELSB_MASK;
       FTM2_C3SC &= ~FTM_CnSC_ELSA_MASK;               
       FTM2_C3SC |= FTM_CnSC_MSB_MASK;
       FTM2_MODE |= ~1;               
       FTM2_OUTMASK =~FTM_OUTMASK_CH0OM_MASK;
       FTM2_CNTIN=0x0000;       
      FTM2_MOD=9999;                               
      FTM2_C0V=5000;
    }
    不胜感激啊!!!!!!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-6-29 14:10:43 | 显示全部楼层
    楼主这样定义:
        sysinit();
             
       SIM->PINSEL1 |=SIM_PINSEL1_FTM2PS0(0);     
       SIM->SCGC |=SIM_SCGC_FTM2_MASK ;
       FTM2->MODE |= FTM_MODE_WPDIS_MASK;     
       FTM2->COMBINE=0;                                                                       
       FTM2->MODE |= FTM_MODE_FTMEN_MASK;                                 
       FTM2->CONTROLS[3].CnSC = FTM_CnSC_MSB_MASK | FTM_CnSC_ELSB_MASK;   
       FTM2->CNTIN=0x0000;
       FTM2->MOD=9999;  
       FTM2->CONTROLS[3].CnV=5000;
       FTM2->SC=0x09;   
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7

    主题

    30

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    403
    最后登录
    2015-11-20
     楼主| 发表于 2015-7-2 20:26:12 | 显示全部楼层
    多谢楼主!!
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-27 23:59 , Processed in 0.095422 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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