×
单片机 > 单片机程序设计 > 详情

快速学Arm(23)--lpc2300系统时钟2

发布时间:2022-09-13 发布时间:
|

接着上一篇,我们来看看PLL的设置步骤:

1.如果PLL已经连接,我们先将其断开,方法就是用一个馈送系列断开与PLL的连接,馈送序列当然是通过写入馈送寄存器PLLFEED来实现的.馈送序列机制被用于避免PLL正在使用的相关参数被意外修改的情况.LPC2300系列ARM从硬件上提供了保护,只有先网PLL馈送寄存器写入0xAA,再写入0x55,PLL的相关参数才能有效更改.


2.用一个馈送序列禁止PLL,也就是说停止了流控振动器CCO的工作.


3.通过时钟源选择寄存器CLKSRCSEL来选择PLL输入时钟源.


4.写PLL配置寄存器PLLCFG,并用一个馈送序列使其生效,PLL配置寄存器只有在PLL被禁止时才有效.


5.再发送一个馈送序列使能PLL(将停止的流控振荡器CCO重新开始工作)


6.PLL锁定后,也就是稳定后,用一个馈送序列连接PLL.


注意:PLL在芯片复位和金融掉电模式时会被关闭并从时钟系统中切换出去.芯片从掉电模式被唤醒后,程序必须对PLL重新进行初始化,再激活PLL并等待其锁定,最后才可以连接PLL.


与PLL相关的寄存器有四个,其中三个位控制寄存器,还有一个是状态寄存器.


PLL控制寄存器(PLLCON):保存更新PLL控制位的寄存器,写入该寄存器的值只有在发送有效的PLL馈送序列后才起作用.


PLL配置寄存器(PLLCFG):保存更新PLL配置的寄存器,写入该寄存器的值只有在发生有效的PLL馈送序列后才起作用.


PLL状态寄存器(PLLSTAT):PLL控制和配置信息的读回寄存器.如果曾对PLL控制寄存器或PLL配置金阊区执行了写操作,但没有产生PLL馈送序列,这些值将不会反映PLL的当前状态.


PLL馈送寄存器(PLLFEED):该寄存器使能装载PLL控制和配置信息,该配置信息从PLL控制寄存器和PLL配置寄存器装入时间影响PLL操作的映像寄存器.

下面一段代码是我抄袭的,主要功能是选择4MHz的内部荡器作为PLL的时钟,使输入时钟升频道288MHz,其过程为:


选择时钟源-->使能PLL-->设置分频值-->PLL馈送序列-->等待PLL可用-->设置CPU分频值-->连接PLL-->PLL馈送序列-->等待PLL锁定,代码如下:

CLKSRCSEL=0x01;

PLLCON=1;

PLLCFG=0<<16;

PLLCFG|=35;

PLLFEED=0xAA;

PLLFEED=0x55;

while(((PLLSTAT & (1<<24))=0));

CCLKCFT=3;

PLLCON=3;

PLLFEED=0xAA;

PLLFEED=0x55;

while(((PLLSTAT & (3<<25))!=(3<<25>>>;

......

要注意,上面的PLLCFG对应的存储值分别为N-1=0,M-1=35.所以N=1,M=36.这个地方要注意一下.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向