打印

请教KE02的FTM2设置

[复制链接]
5134|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秋叶|  楼主 | 2014-1-14 11:19 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
FSL_TICS_Jeremy| | 2014-1-14 14:44 | 只看该作者
这是由于FTM2_CH4和FTM_CH5只可以与一个引脚复用。而其他三个FTM2_CHn可以与多个引脚复用。

使用特权

评论回复
板凳
秋叶|  楼主 | 2014-1-14 15:50 | 只看该作者
你好,
sSIMConfig.u32PinSel|=SIM_PINSEL_FTM2PS1_MASK  | SIM_PINSEL_FTM2PS0_MASK;
SIM_Init(&sSIMConfig);                   /* initialize SIM */     

    FTM_PWMInit(FTM2, FTM_PWMMODE_EDGEALLIGNED, FTM_PWM_HIGHTRUEPULSE);
    /* FTMEN enable */
    FTM_SetFTMEnhanced(FTM2);
    /* update MOD value */
    FTM_SetModValue(FTM2, 2000);
    /* set clock source, start counter */
    FTM_ClockSet(FTM2, FTM_CLOCK_SYSTEMCLOCK, FTM_CLOCK_PS_DIV1);  
启动PWM后,CH5是有PWM波了,但CH4通道没有,也不知什么原因
                        ;

使用特权

评论回复
地板
FSL_TICS_Jeremy| | 2014-1-14 16:49 | 只看该作者
秋叶 发表于 2014-1-14 15:50
你好,
sSIMConfig.u32PinSel|=SIM_PINSEL_FTM2PS1_MASK  | SIM_PINSEL_FTM2PS0_MASK;
SIM_Init(&sSIMConf ...

请查看一下SIM_SPOT[NNIE]的设置。

使用特权

评论回复
5
秋叶|  楼主 | 2014-1-15 17:40 | 只看该作者
非常感谢!再请教一个PLL的问题
OSC->CR |=OSC_CR_OSCEN_MASK   |     //OSC模块有效
              OSC_CR_OSCOS_MASK   |     //选择晶振
              OSC_CR_RANGE_MASK   |     //外部晶振为4~20MH
              OSC_CR_HGO_MASK          //时钟采用高幅度
              ;
    while(!(OSC->CR & OSC_CR_OSCINIT_MASK));  //等待OSC模块初始化完成
    //**************************SIM设置***************************************
    //读出芯片的ID号  P148页
    DIVER_ID=SIM->SRSID;
    //
  //  SIM->SOPT
    SIM->SOPT=SIM->SOPT&(~SIM_SOPT_NMIE_MASK);   //取消NMI,否则FTM2的CH4不能用,因为是复用功能
    /* 使能模块的时钟*/ //P156页
    SIM->SCGC |= SIM_SCGC_SWD_MASK   |      //切不可没有SWD,因为我是用SWD调试的,否则芯片就联不上了
                 SIM_SCGC_FLASH_MASK |      //这个也是默认的,不可以取消
                 SIM_SCGC_UART0_MASK |    //使能UART0时钟
                 SIM_SCGC_UART1_MASK |    //使能UART1时钟
                 SIM_SCGC_RTC_MASK   |    //使能RTC时钟
                 SIM_SCGC_FTM0_MASK  |    //使能FTM0用于编码器
                 SIM_SCGC_FTM2_MASK  |    //使能FTM2用于无刷马达PWM
                 SIM_SCGC_CRC_MASK   |   //使能CRC用于通讯校验
                 SIM_SCGC_IRQ_MASK   |   //使能IRQ用于纺码器Z点检测
                 SIM_SCGC_ADC_MASK      //使能ADC用于电流检测
                 ;
               
    //-------------------------------------
    //引脚设置  P154
    SIM->PINSEL|=SIM_PINSEL_FTM2PS1_MASK  | //FTM2  CH0->PTH0  CH1->PTH1
                 SIM_PINSEL_FTM2PS0_MASK    // CH2->PTC2  CH3->PTC3  CH4->PTB4  CH5->PTB5               
                 ;
    //**********************ICS设置********************************************   
    //-----------振荡器设置----------------------------------------------------
    //P266,如看时钟分配图P93
    ICS->C1 |=ICS_C1_CLKS(0) |        //从PLL中得到时钟
              ICS_C1_RDIV(8)          //外部时钟分频到31.25 kHz to 39.0625 kHz(8M/256=31.25)
             // ICS_C1_IREFS_MASK     //进入PLL的时钟为外部时钟
             // ICS_C1_IRCLKEN_MASK|    //使能ICSIRCLK,以给看门狗与RTC提供时钟,这里设无效,因为要用外部晶振时钟,不用内部的
             //ICS_C1_IREFSTEN_MASK     //内部振荡无效
              ;
    ICS->C2 |=ICS_C2_BDIV(0)         //对ICSOUT时钟调整到有效的时钟内 PLL/ICS_C2_BDIV(0)
             // ICS_C2_LP_MASK
              ;
   // ICS->C3=ICS_C3_SCTRIM(0x54);    //对内部振荡器的频率设置
   // ICS->C4 |= ICS_C4_SCFTRIM_MASK     //在外部时钟丢失时智能选择内部时钟
    ICS->C1 =  ICS->C1 & ~(ICS_C1_IREFS_MASK);       //因为IREFS默认是内部时钟,所以这里要切换到外部时钟     
    asm(
                "nop \n"
                "nop \n"
        );
    while(ICS->S & ICS_S_IREFST_MASK); //IREFST为0表示联接到了外部时钟,1为内部时钟
    while(!(ICS->S & ICS_S_LOCK_MASK));   //0:FLL没有锁定  1:FLL锁定
    ????????总是锁定不了

使用特权

评论回复
6
FSL_TICS_Jeremy| | 2014-1-16 14:54 | 只看该作者
秋叶 发表于 2014-1-15 17:40
非常感谢!再请教一个PLL的问题
OSC->CR |=OSC_CR_OSCEN_MASK   |     //OSC模块有效
              OSC_CR ...

关于你这个问题,我建议你最好参考官网例程代码。你可以通过以下链接下载KE02_SC.
http://www.freescale.com/zh-Hans/webapp/sps/site/prod_summary.jsp?code=FRDM-KE02Z&fpsp=1&tab=Design_Tools_Tab

使用特权

评论回复
7
秋叶|  楼主 | 2014-1-16 15:48 | 只看该作者
非常感谢!希望能早日见到KE02的中文手册.

使用特权

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

本版积分规则

42

主题

91

帖子

1

粉丝