我是Jeason 本文章会被分享到电赛的论坛
这是电赛的培训网址 : https://bbs.nuedc-training.com.cn/forum.php?fromuid=11142
先前跟大家分享了一个MSP430F5529设置25MHz的频率的方法,但是总是感觉频率变化的比较大,经过一番的研究,我发现25MHz下的时钟是经过380倍频得到的,而网上有大神有提到,倍频的过程中存在的不稳定的情况下,故有了换晶振的想法。
我所使用的的是MSP430F5529 的launchpad,板载一个32.768K的RTC时钟XTAL1和一个4MHz 的时钟,原本我只是想获得一个稳定的25MHz的时钟,但是一次错的的数据配置之后我发现系统时钟居然跑到了26MHz,于是,探究频率极限的行动开始了。现在我把这个过程分享给大家。 链接1 25MHz时钟的设置方法 ---->>> 博客地址 链接2: 超频的代码下载地址----->>>>> 下载地址
第一阶段: 切换系统的时钟源:(试错的过程省略,我直接分享正确的配置过程)
430 默认情况下XT2是关闭的,系统的核心电压是一个比较低的值,在设置高频率,并且使用外部高速时钟之前我们需要打开时钟,并且在这之前我们需要把系统的核心电压升到最高。 如何提升核心电压的部分我就不细说了, 不了解的小伙伴去看我的25MHz 主频的设置方法--->>>>> 博客地址 。这里咱们 从开启系统时钟开始。
上图是我的初步设想,我们打开XT2,然后让XT2 的时钟(4MHz)直接输出给SMCKL 和MCLK,然后我通过外部测量P2.2引脚的频率(不懂为什么是P2.2脚的也去看上一篇博客) 我就可以知道,我的外部晶振有没有起作用。
这里我们找到了几个个关键的寄存器位
相比较于 先前的25MHz 的设置方法,我们添加了XT2 的配置 包括 使能引脚,打开晶振的驱动(XT2DRIVE)
在设置玩这些之后 是我们的升压函数
这里的作用是将核心电压升到最高
然后接下来就是阶段性的测试了, 我们要确认我们的XT2已经可以正常的工作了
通过测量 P2.2 我们获得了稳稳的 4MHz 的时钟, 这就证明了 XT2CLK这条时钟线上已经有了时钟信号了!
接下来就是对这个时钟信号进行倍频的操作了
倍频的单元是FLL 通过这里我们可以获得一个更高的时钟频率! 上图是我们的时钟信号的走向,我们需要向FLL引入一个 4MHz 的时钟信号。
查找相关的寄存器位,我们的设置如下
接下来是对FLL部分进行配置了 我们的设置依据是 用户手册里面的这个公式
这样 我们只需要对FLL 相关的寄存器进行设置就可以了,查找寄存器的位如下
不过 在我们进行这些操作之前我们需要先关闭FLL 在时钟图上有SCG0 寄存器
我查找了他的作用
我们先把 FLL关闭 操作是这个
接下来是配置 FLLN (FLLD 使用默认的参考时钟的分频我们默认不分频!)
这里 我们先假定需要24MHz的时钟 根据公式 则可以计算出 FLLN = 5
测试效果如图 系统的时钟稳定在24MHz
接下来 我们调整FLLN的值
先提升到40MHz 试一下!
还是比较精准的,频率会跳动 不过跳动的范围还是可以接受的
当我把 FLLD 调到2时。。。。。。。此时的理论频率范围已经超过了我的虚拟示波器的测试范围 于是我去借了一个实验室示波器 效果如图
amazing! 居然真的可以达到80MHz ,不过在80MHz下的时钟输出极其不稳定!而且输出的信号的峰峰值只有可怜的660mv
显然 80MHz下的单片机是不具备工作的能力的,我们继续向下去探寻一个更加合理的数值 48M 或许是一个不错的选择, 配置参数FLLD = 1,FLLN = 5 得到了
虽然频率还是在变化,但是变化的范围还在可以接受的范围之内。
这是大致的参数配置表, 更多的配置参数请读者们自行摸索。我目前使用44MHz时很稳定
代码1
后期我将函数进行了整理 整理出来了一款更加实用的代码,可以直接实现超频到自己想要频率
加强版代码
最后推荐一下我所用的示波器 对虚拟示波器 感兴趣的小伙伴可以加 QQ群 706769836 备注:战神