重工电子论坛

标题: 飞思卡尔 K60 设置系统时钟并做输出验证 [打印本页]

作者: 李维强-15级    时间: 2017-2-20 20:58
标题: 飞思卡尔 K60 设置系统时钟并做输出验证
第一次用飞思卡尔单片机(MK60DN512VLQ10),研究了一下怎么配置系统时钟,因为我发现周老师给的例程是用的内部时钟,也就是官方的启动文件,要么就是设置为外部8M 的时钟通过倍频而来的,而给的开发板上面是50M的有源晶振,明显套不上了,所以需要自己配置时钟。  让单片机的频率跑上100M,不至于浪费。(只不过就用默认配置41M那种你起始也是感觉不出来差别的,我这里只是心理感觉不爽,所以去研究了一下怎么配)

然而K60的内部时钟配置之复杂,研究了我一阵,最后参考官方的那个8M外部晶振的配置来改成现在用的50M外部有源晶振的配置,并且使用PA6引脚输出系统总线时钟来验证是否配置正确。

下面我简单介绍下怎么去看这个手册里面的时钟配置(手册全部都是英文的,不过都是简单英语哈,还凑合着看),当然不需要的直接跳过,看后面我给的启动代码即可
从Keil里面books选项卡打开 "MK60 100MHz Reference Manual",然后 找到第5章 里面就有那个图

这个图就是K60的时钟来龙去脉流程图。这是总图,如果需要配置,还需要在这个图的基础上去看那些分图。例如这个图里面的灰色的MCG模块就在手册的25章描述,SIM模块在12章描述,下面的system oscillator模块就是26章OSC模块,以此类推。
然后MCG模块内部又有一个时钟选择流程图,里面通过大量的配置

然后OSC模块内部是这样:

这里我主要讲下为什么实现倍频的,首先我们需要通过寄存器设置到MCG里面external reference clock的时钟来源,然后通过PRDIV0寄存器把时钟先分频到2M的频率,然后通过PLL(锁相环,VDIV0寄存器)倍频50倍到100M,提供给系统的内部主时钟MCGOUTCLK,大概流程图如下

这里主要就从PBE模式直接转到PEE模式,然后得到主时钟MCGOUTCLK,然后从资料的187页到188页里面给了几种推荐的时钟配置,我这里就是按照option2的推荐设置来的,core clock是100M,bus clock(总线时钟)是50M

由于时钟系统有一定的复杂性,以上我只是说了个很大概的流程,如果要搞懂时钟的话,还是自己去看手册吧(反正我也只是弄了个大概),所以直接看我下面的代码即可,就是复制我的代码即可,这个代码只适合周老师才发的那个小的正方形黑色开发板哦

至于其他还有什么疑问的,我来不及解释了,各位同学直接照做!!!让板子跑到100M频率

首先如下图 在system_MK60D10.c里面添加如下定义

然后在SystemInit函数里面再添加如下条件编译的代码

然后最重要的最后 需要在这个文件的最上面 一个宏定义处选择3

然后我直接把这个这个修改过的文件打包成RAR贴出来,各位同学直接下载后 去替换你原工程里面的system_MK60D10.c文件即可 system_MK60D10.rar (3.39 KB, 下载次数: 11)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面我给出效果,在给出效果之前,首先根据参考手册里面的SIM_SOPT2寄存器 设置把MCGOUTCLK设置为trace clock的时钟源

再根据data sheet

需要在程序主函数里面把PA6这个引脚初始化为推挽,然后设置为第7种端口复用功能,这个时候,就可以从示波器看到PA6的波形了,因为这里是BUS的时钟 ,按照上面讲的option2的配置,输出的调试时钟是总时钟的一半,所以有50M。
下面上测试的示波器的图

然后我把它设置为之前的内部时钟  也就是#define CLOCK_SETUP     0
下面看到照片,照花了,反正只得20M左右哈。












欢迎光临 重工电子论坛 (http://cqutlab.cn/) Powered by Discuz! X3.1