查看: 8604|回复: 9

[已解决] MK60FX512VLQ15 时钟设置问题(已解决)

[复制链接]

该用户从未签到

4

主题

34

帖子

0

注册会员

Rank: 2

积分
62
最后登录
1970-1-1
发表于 2014-2-12 18:06:38 | 显示全部楼层 |阅读模式
各位新年好!
(1)我正在用 MK60FX512VLQ,将主频倍到150 M的时候来翻转GPIO ,发现速度特别慢,才几百KHZ,怀疑是时钟设置有问题,请各位前辈帮忙看看!工程文件我会做为附件添上来。
(2)另外我打算用20M有源晶振倍频到150M,是可行否?
(3)最后还有个问题,P653 的例子,是将 16M晶振倍频到 128M,设的是 PRDIV0 分频2,VDIV0 倍频16,
MCGOUT=16MHZ/2*16=128M
我之前看到前辈分享的一份资料,FAQ_Kinetis常见问题与解答(第十三版),非常好,里面有个50M倍频达不到150M的问题,前辈的回答是 PLL 模块中,VCO 的输出会减半,所以倍频时应加倍,原来10M倍到150Md VCO的 VDIV0不应设为15倍,应设为30倍,使VCO OUT 为300M,对应的PLL 输出为150M。

所以呢,倍频时,用户手册的 VDIV0 设的系数没有加倍,前辈的资料有加倍,我想问问前辈们,是否需要加倍?
各位要看下我工程文件啊,非常非常感谢!
工程中的pll_init  函数是这样的:
uint32 pll_init()
{

        MCG_C2=0x28;
        SIM_SCGC4 |= SIM_SCGC4_LLWU_MASK;
        PMC_REGSC=PMC_REGSC_ACKISO_MASK;
        MCG_C1 = MCG_C1_CLKS(2) | MCG_C1_FRDIV(0); //MCGOUTCLK 选择外部参考时钟 设置一个 FRDIV 分频,其实不必要。因为 FLL 不会用到
        PMC_REGSC |= PMC_REGSC_ACKISO_MASK;
        MCG_C6=0;
        while (MCG_S & MCG_S_IREFST_MASK); // 等待 FLL 参考时钟变成 external ref-erence clock
        while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x2); //等待时钟状态显示为外部参考时钟(ext ref clk)//进入 PBE 模式
        //MCG_C5配置PLL
            //由于外部用的有源晶振是20M,而0x01对应的分频系数是2,则分频后是20/2=10M
        MCG_C5 = MCG_C5_PRDIV0(1); // 设置 PLL 匹配晶振的参考分频数
        //确保MCG_C6处于复位状态,禁止LOLIE、PLL、和时钟控制器,清PLL VCO分频器
        //倍频,以及废除一些检测位
        MCG_C6 = 0x0;
        //PLL的选择,取决于参数的时钟选项
        set_sys_dividers(0,1,2,5); //core=150M, bus=75M, FlexBus=50M, Flash Clk=25M
        MCG_C6 = MCG_C6_PLLS_MASK | MCG_C6_VDIV0(0x0b); //VDIV = 10(10*30)300MHz//pll_freq = 150;
        while (!(MCG_S & MCG_S_PLLST_MASK)){}; // wait for PLL status bit to set
         while (!(MCG_S & MCG_S_LOCK0_MASK)){}; // Wait for LOCK bit to  set// Now running PBE Mode// Transition into PEE by setting CLKS to 0//  CLKS=0, FRDIV=3, IREFS=0, IRCLKEN=0, IREFSTEN=0
        MCG_C1 &= ~MCG_C1_CLKS_MASK;// Wait for clock status bits to update
        while (((MCG_S & MCG_S_CLKST_MASK) >> MCG_S_CLKST_SHIFT) != 0x3){};// Now running PEE Mode}

            //此时进入PEE模式
        return (uint32)(150*1000);//返回内核时钟(KHz)
我知道答案 目前已有9人回答

GPIOTEST.rar

3.23 MB, 下载次数: 113, 下载积分: 威望 1

回复

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2014-2-12 20:46:52 | 显示全部楼层

回复:MK60FX512VLQ15 时钟设置问题

1. 这个应该是你时钟设置的问题,之前在KL25(48M)上GPIO速度也能达到十几M,GPIO挂载的时钟总线为system clock,可以通过FB_CLK/TRACE_CLKOUT输出引脚和outdiv值来判断内核clock是否正确。至于PLL初始化设置你可以参看K60120M的初始化例子。
2. 用20M有源晶振倍频到150M,也就是说PDIV=1,VDIV=30,由于VDIV最大等于47,所以此处PDIV必须等于1了。
 
3. 最后一个问题,你看到的资料是正确的,在K60的120M和150M 版本中core clock/system clock/Bus clock等都来自于MCGOUTCLK的输出,而MCGOUTCLK的输出又来自于下图中红色箭头所标注的地方(两个PLL模块),是需要除以2的。而在K60100M中只有一个PLL模块,并且输出直接来自于VCO没有除以2.
 
Capture.PNG
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-13 10:18:12 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    楼主新年好
    就像楼上所述,KL25在48MHz主频下翻转频率都可以达到几M(你看得FAQ文档中也有相关问题描述与波形)。
    建议你看一下FB_CLKOUT引脚输出的FlexBus时钟频率。
    K60P144M150SF3RM参考手册上有点小问题,没有标注出FB_CLKOUT位置,其实这个功能在PTC3的ALT5位置。

     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    16

    帖子

    0

    新手上路

    Rank: 1

    积分
    6
    最后登录
    1970-1-1
    发表于 2014-2-13 12:16:35 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    不用FB_CLK的话使用TRACE_CLKOUT然后根据outdiv值换算也是可以的!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-13 15:51:08 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    楼主我刚看了一下你的工程是用CodeWarrior下PE生成的,那么可以直接用PE将时钟配置到150MHz,使用外部的20MHz晶振呀。
    但我没看到你在PE的选项上作出你想要的操作。
    GPIOtest clock.jpg
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    34

    帖子

    0

    注册会员

    Rank: 2

    积分
    62
    最后登录
    1970-1-1
     楼主| 发表于 2014-2-13 16:15:19 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    谢谢大家的帮忙,我把时钟问题解决了,用trace clock 测到的是37.5MHz,而且现在io口的翻转速度慢是由于GPIO 程序效率低造成的,现在的结果可以达到 6M,谢谢各位前辈的帮忙!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    34

    帖子

    0

    注册会员

    Rank: 2

    积分
    62
    最后登录
    1970-1-1
     楼主| 发表于 2014-2-13 16:17:36 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    回复第 5 楼 于2014-02-13 15:51:08发表:
    楼主我刚看了一下你的工程是用CodeWarrior下PE生成的,那么可以直接用PE将时钟配置到150MHz,使用外部的20MHz晶振呀。
    但我没看到你在PE的选项上作出你想要的操作。

     

    嘿嘿,这个工程没有用 PE 工具,这是假象嘿嘿,忘记说啦
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-2-13 16:46:44 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题

    恭喜楼主,找到问题所在了。
    如果问题解决了,麻烦楼主在求助帖标题末添加“(已解决)”字样。
    如果有新的问题,也欢迎继续在飞思卡尔FAE线上技术支持版块发求助帖提问。
    感谢你对飞思卡尔产品的关注!
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    9

    帖子

    0

    新手上路

    Rank: 1

    积分
    4
    最后登录
    1970-1-1
    发表于 2014-6-17 18:18:17 | 显示全部楼层

    回复:MK60FX512VLQ15 时钟设置问题(已解决)

    急问各位版主,mcg模块中pll那部分的电路图画错了吧?vcoout应该从vco直接反馈才对。你除以2之后再反馈,试问这除以2还有什么意义???
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    9

    帖子

    0

    新手上路

    Rank: 1

    积分
    21
    最后登录
    1970-1-1
    发表于 2015-10-19 09:23:37 | 显示全部楼层
    下下来学习学一下
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-29 12:06 , Processed in 0.115095 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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