重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 8365|回复: 0

飞思卡尔 K60 设置系统时钟并做输出验证

[复制链接]

287

主题

668

帖子

5619

积分

学生管理组

Rank: 8Rank: 8

积分
5619
发表于 2017-2-20 20:58:13 | 显示全部楼层 |阅读模式
第一次用飞思卡尔单片机(MK60DN512VLQ10),研究了一下怎么配置系统时钟,因为我发现周老师给的例程是用的内部时钟,也就是官方的启动文件,要么就是设置为外部8M 的时钟通过倍频而来的,而给的开发板上面是50M的有源晶振,明显套不上了,所以需要自己配置时钟。  让单片机的频率跑上100M,不至于浪费。(只不过就用默认配置41M那种你起始也是感觉不出来差别的,我这里只是心理感觉不爽,所以去研究了一下怎么配)

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

下面我简单介绍下怎么去看这个手册里面的时钟配置(手册全部都是英文的,不过都是简单英语哈,还凑合着看),当然不需要的直接跳过,看后面我给的启动代码即可
从Keil里面books选项卡打开 "MK60 100MHz Reference Manual",然后 找到第5章 里面就有那个图
CLK.jpg
这个图就是K60的时钟来龙去脉流程图。这是总图,如果需要配置,还需要在这个图的基础上去看那些分图。例如这个图里面的灰色的MCG模块就在手册的25章描述,SIM模块在12章描述,下面的system oscillator模块就是26章OSC模块,以此类推。
然后MCG模块内部又有一个时钟选择流程图,里面通过大量的配置
MCG.jpg
然后OSC模块内部是这样:
OSC.jpg
这里我主要讲下为什么实现倍频的,首先我们需要通过寄存器设置到MCG里面external reference clock的时钟来源,然后通过PRDIV0寄存器把时钟先分频到2M的频率,然后通过PLL(锁相环,VDIV0寄存器)倍频50倍到100M,提供给系统的内部主时钟MCGOUTCLK,大概流程图如下
1123.jpg
这里主要就从PBE模式直接转到PEE模式,然后得到主时钟MCGOUTCLK,然后从资料的187页到188页里面给了几种推荐的时钟配置,我这里就是按照option2的推荐设置来的,core clock是100M,bus clock(总线时钟)是50M

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

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

首先如下图 在system_MK60D10.c里面添加如下定义
1.jpg
然后在SystemInit函数里面再添加如下条件编译的代码
2.jpg
然后最重要的最后 需要在这个文件的最上面 一个宏定义处选择3

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-4-18 09:23 , Processed in 0.239730 second(s), 32 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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