打印
[Kinetis]

KL26 PLL初始化不通过

[复制链接]
2589|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
北雪|  楼主 | 2014-8-20 17:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
沙发
FSL_TICS_Jeremy| | 2014-8-20 18:43 | 只看该作者
你好,楼主!
请问你的板子和例程具体是什么?

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
北雪 + 1 赞一个!
板凳
北雪|  楼主 | 2014-8-20 19:11 | 只看该作者
板子是野火的,芯片烧坏了,我自己换了一块芯片,例程也是野火的。原来的板子没有这样的问题,换了芯片之后就出现了上面的问题

使用特权

评论回复
地板
北雪|  楼主 | 2014-8-20 19:14 | 只看该作者
  mcg_div_count( pll);

    SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK;      //PTA18 和 PTA19 用于 晶振

    // set clock dividers to desired value
    SIM_CLKDIV1 = SIM_CLKDIV1_OUTDIV1(mcg_div.core_div) |  SIM_CLKDIV1_OUTDIV4(mcg_div.bus_div);


    //上电复位后,单片机会自动进入 FEI 模式,使用 内部参考时钟

    //FEI -> FBE
    OSC0_CR  =  ( 0
                  | OSC_CR_ERCLKEN_MASK     //使能 外部参考时钟
                  //| OSC_CR_SC2P_MASK      //配置电容
                  //| OSC_CR_SC4P_MASK      //配置电容
                  //| OSC_CR_SC8P_MASK      //配置电容
                  | OSC_CR_SC16P_MASK       //配置电容
                 );

    MCG_C2 =    ( 0
                | MCG_C2_RANGE0(2)
                | MCG_C2_EREFS0_MASK
                );

    MCG_C1 = (0
              | MCG_C1_CLKS(2)
              | MCG_C1_FRDIV(7)
              | MCG_C1_IRCLKEN_MASK
              );

    while (MCG_S & MCG_S_IREFST_MASK) {};                       //等待FLL参考时钟 为 外部参考时钟(S[IREFST]=0,表示使用外部参考时钟,)(就卡在这里)

    while ((MCG_S & MCG_S_CLKST_MASK)  != MCG_S_CLKST(0x2)) {}; //等待选择外部参考时钟
for(int i=1000;i>0;i--);
    //现在已经进入了 FBE模式

    //FBE -> PBE


    MCG_C5 = MCG_C5_PRDIV0(mcg_cfg[pll].prdiv);                      //分频, EXTAL_IN_MHz/( PRDIV+1)
    MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV0(mcg_cfg[pll].vdiv) ;    //倍频, EXTAL_IN_MHz/( PRDIV+1)  * (VDIV+24)

    while (!(MCG_S & MCG_S_PLLST_MASK)) {};                         //等待时钟源选择PLL

    while (!(MCG_S & MCG_S_LOCK0_MASK)) {};                          //等待 PLL锁了(锁相环)

    // 现在已经进入了 PBE 模式

    // PBE -> PEE
    //MCG_C1 &= ~MCG_C1_CLKS_MASK;
    MCG_C1 = MCG_C1_IRCLKEN_MASK;

    while (((MCG_S & MCG_S_CLKST_MASK) ) != MCG_S_CLKST(0x3)) {};//等待选择输出PLL

    // 现在已经进入了 PEE 模式

    return mcg_cfg[pll].clk;
} //pll_init

使用特权

评论回复
5
FSL_TICS_Jeremy| | 2014-8-20 19:36 | 只看该作者
北雪 发表于 2014-8-20 19:11
板子是野火的,芯片烧坏了,我自己换了一块芯片,例程也是野火的。原来的板子没有这样的问题,换了芯片之后 ...

你用示波器测试一下晶振的波形。

使用特权

评论回复
6
攻城狮| | 2014-8-20 22:05 | 只看该作者
北雪 发表于 2014-8-20 19:11
板子是野火的,芯片烧坏了,我自己换了一块芯片,例程也是野火的。原来的板子没有这样的问题,换了芯片之后 ...

换了块芯片就不行,问题应该出在硬件身上

使用特权

评论回复
7
北雪|  楼主 | 2014-8-20 23:02 | 只看该作者
我用的是8M无源晶振,用示波器看过了,没有输出方波。

使用特权

评论回复
8
北雪|  楼主 | 2014-8-20 23:17 | 只看该作者
无源晶振的电路图如下,但是就是没有方波输出,

_7J]L{{04P0M0JO0WBVQYU3.jpg (161.74 KB )

_7J]L{{04P0M0JO0WBVQYU3.jpg

使用特权

评论回复
9
FSL_TICS_Jeremy| | 2014-8-21 09:07 | 只看该作者
北雪 发表于 2014-8-20 23:17
无源晶振的电路图如下,但是就是没有方波输出,

你好,楼主!
我猜测也是有硬件原因造成的,如果你确认代码没修改过且以前可以正常运行的,建议还是检查一下硬件,实在不行,可以重新焊块再试试

使用特权

评论回复
10
北雪|  楼主 | 2014-8-22 14:09 | 只看该作者
我换了块晶振就好了。谢谢了

使用特权

评论回复
11
FSL_TICS_Jeremy| | 2014-8-22 14:52 | 只看该作者
北雪 发表于 2014-8-22 14:09
我换了块晶振就好了。谢谢了

估计是你换MCU时,弄坏了,重点是问题解决了就好,以后有问题再来论坛交流

使用特权

评论回复
12
FSL_TICS_ZJJ| | 2014-8-28 13:51 | 只看该作者
一般卡在while (MCG_S & MCG_S_IREFST_MASK) {};
这句的基本都是晶振电路有问题,所以在测之前,要用示波器测试下,晶振电路是否起振了。

使用特权

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

本版积分规则

2

主题

10

帖子

0

粉丝