原创 LPC2114系统时钟设置

2008-3-11 18:25 5684 12 12 分类: MCU/ 嵌入式

       LPC2114微控制器的系统时钟有三种:晶振或外部时钟源为Fosc,经PLL调整后供给CPU得时钟为Fcclk,而经VPB分频器后供给外围器件的时钟为Fpclk


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


1、  PLL设置


 


PLL接受的输入时钟频率范围为10MHZ25MHZ。输入频率经过一个电流控制振荡器(CCO)倍增到范围10MHZ60MHZ。倍频器可以是从132得整数,但实际上由于CPU最高频率得限制,其倍频值不能高于6CCO得操作频率范围为156MHZ—320MHZ,因此在环中有个额外的倍频器在PLL提供所需要得输出频率时使CCO保持在频率范围内。输出分频器可设置为24816分频。由于输出分频器得最小值为2,它保证了PLL输出有50%得占空比。


PLL在芯片复位后被关闭并旁路,它可通过软件使能。程序必须在配置并激活PLL后等待其锁定,然后再连接PLL


 


PLL基本操作方法:


     设置PLLCFG寄存器,即倍频值(M)和分频值(P);


     PLLCON=0x01 ,PLLE位置位,使能PLL部件;


     PLLFEED=0xaaPLLFEED=0x55,使PLLCONPLLCFG寄存器得更改生效;


     读取PLLSTAT的值,等待PLL锁定;


     PLLCON=0x03,即PLLC位置位,连接PLL时钟;


     PLLFEED=0xaaPLLFEED=0x55,使连接生效。


 


PLL设置相关计算:


 Fcclk=M×Fosc


其中M16Fcclk60MHZ.


                        Fcco=Fcclk×2×P


其中P<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />2/4/8/16Fcco156MHZ320MHZ


 


2、  VPB分频器设置


 


设置VPBDIV值进行分频设置,可设置为Fcclk1/4,相同,1/2时钟作为Fpclk


 


3、位于Target.c中的系统时钟设置代码(一般不需要修改)


 


PLLCON =0x01;


//PLL被激活但是尚未连接,即PLLE置位,使能PLL部件 [PLLC:PLLE]=01


#if (Fpclk / (Fcclk / 4)) == 1                   


    VPBDIV = 0;    


 //VPB总线时钟为处理器时钟的1/4VPBDIV寄存器的[1:0]位,设置VPB时钟速率   00


#endif


#if (Fpclk / (Fcclk / 4)) == 2


    VPBDIV = 2;  //VPB总线时钟为处理器时钟的1/2    10


#endif


#if (Fpclk / (Fcclk / 4)) == 4


    VPBDIV = 1;   //VPB总线时钟等于处理器时钟      01


#endif


 


#if (Fcco / Fcclk) == 2                //P值等于1 即是PSELPLLCFG[6:5]  00


    PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);


#endif


#if (Fcco / Fcclk) == 4                       //P值等于2    01


    PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);


#endif


#if (Fcco / Fcclk) == 8                       //P值等于4    10


    PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);


#endif


#if (Fcco / Fcclk) == 16                      //P值等于8    11


    PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);


#endif


    PLLFEED = 0xaa;


    PLLFEED = 0x55;               //使PLLCONPLLCFG寄存器得更改生效


    while((PLLSTAT & (1 << 10)) == 0);           //读取PLLSTAT,等待PLL锁定,PLLSTAT寄存器的第十位位PLOCK,0,PLL未锁定;1,锁定到指定得频率.


    PLLCON = 0x03;            //PLL已使能并连接到处理器作为系统时钟源  PLLC置位,连接PLL时钟   [PLLC:PLLE]=11


    PLLFEED = 0xaa;


    PLLFEED = 0x55;              //使PLLCONPLLCFG寄存器得更改生效


 


3、  位于config.h中的时钟配置(根据需要自己设定)


 


#define   Fosc            11059200              //晶振(外部时钟源)11.0592MHZ


#define   Fcclk           (Fosc * 4)              //M=4


#define   Fcco            (Fcclk * 4)             //P=2


#define   Fpclk           (Fcclk / 4) * 1           //VPB分频器VPBDIV, Fcclk1/4

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /1 下一条