注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
billbot501的个人空间 https://home.eeworld.com.cn/space-uid-274536.html [收藏] [复制] [分享] [RSS]
日志

分享ARM7学习经验—系统时钟配置(四)

已有 2376 次阅读2011-4-7 08:38 |个人分类:LPC21XX

LPC2148的振荡器可以工作在两种模式:从属模式也就是外部输入信号源,频谱范围为150M。还有一种就是常用的政党模式,采用外部晶振,频谱范围130MLPC2148上有两个 PLL 模块。当 PLL1 必须在 48MHz 的固定速率下提供 USB 时钟时,PLL0 生成 CCLK 时钟(系统时钟)。这两个 PLL 在结构上都相同,不同的是 PLL 的中断功能只保留用于 PLL0PLL0 PLL1 接受的输入时钟频率范围仅为 10MHz~25MHz。输入频率通过使用一个电流控制振荡器(CCO)倍增到范围 10MHz~60MHz 用于 CCLK 以及 48MHz  用于 USB 时钟。下面是PLL的框图:

使用到的寄存器有:

PLLCON 控制寄存器,只有当其中的第0PLLE和第1位都为1时,PLL输出时钟才能连接到微控制器中。

PLLCFG 配置寄存器,设置倍频值和分频值

PLLSTAT 状态寄存器,主要用于查询第10PLCOK,看PLL是否锁定指定的频率。

PLLFEED 馈送寄存器,必须将正确的馈送序列写入 PLLFEED 寄存器才能使 PLLCON PLLCFG 寄存器的更改生效。馈送序列如下:依次写入0XAA,0X55,有点像看门狗的功能。

板上的外部晶振为Fosc=12M,我们希望获得最快时钟Fcclk=60M,根据上面的图我们计算出M=60/12=5;因此设置PLLCFG 配置寄存器的分频值为M-1=4;根据Fcco的取值范围, 1.3<P<2.67,所以PLLCFG 配置寄存器的倍频值P只能取值2.然后我们按照这个顺序编写代码,设置成功电亮LED1

z   PLLCON1——设定 PLL 之前,必须使能 PLL,但不能连接 PLL

z   设定 P M 的值(PLLCFG);

z   发送 PLL 馈送序列;

z   等待 PLL 锁定——PLLSTAT. 10    1

z   PLLCON3——设定 P M 之后,连接 PLL

z   发送 PLL 馈送序列,把 P M 的值写入硬件。

主要代码:

#include <LPC214X.H>

#include "led.h"

void PLL_Init(void)//设置系统时钟CCLK=60M,默认VPB四分频=15M

{

       PLL0CON=1;            //使能PLL0

       PLL0CFG=0X23;      //设置M=4 P=2

       PLL0FEED=0XAA; //发送PLL0馈送序列

       PLL0FEED=0X55;

       while((PLL0STAT&(1<<10))==0);//等待锁定

       PLL0CON=3;                   //PLL0使能并连接

       PLL0FEED=0XAA;

       PLL0FEED=0X55;

}

int main(void)

{

       PLL_Init();

       Led_Init();

       LED1_ON();

       while(1)

       {

             

       }

}
评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章