您好,欢迎访问三七文档
//Fosc晶振输出频率//Fcclk处理器时钟频率//FccoPLL电流控制振荡器输出频率//M=Fcclk/Fosc//P=Fcco/Fcclk*2#defineM4#defineP2#defineFosc11059200#defineFcclk(Fcos*M)#defineFcco(Fcclk*2*P)#defineFpclk(Fcclk/4)/********************PLL设置*******************************************/voidPLL_Init(void){/*设置系统各部分时钟*/PLLCON=1;#if(Fpclk/(Fcclk/4))==1VPBDIV=0;#endif#if(Fpclk/(Fcclk/4))==2VPBDIV=2;#endif#if(Fpclk/(Fcclk/4))==4VPBDIV=1;#endif#if(Fcco/Fcclk)==2PLLCFG=((Fcclk/Fosc)-1)|(05);#endif#if(Fcco/Fcclk)==4PLLCFG=((Fcclk/Fosc)-1)|(15);#endif#if(Fcco/Fcclk)==8PLLCFG=((Fcclk/Fosc)-1)|(25);#endif#if(Fcco/Fcclk)==16PLLCFG=((Fcclk/Fosc)-1)|(35);#endifPLLFEED=0xaa;PLLFEED=0x55;while((PLLSTAT&(110))==0);PLLCON=3;PLLFEED=0xaa;PLLFEED=0x55;}与锁相环PLL(PhaseLockingLoop)相关的寄存器有4个,分别是:PLL控制寄存器PLLCON、PLL配置寄存器PLLCFG、PLL状态寄存器PLLSTAT、PLL馈送寄存器PLLFEED1.PLLCON中的第0、1位PLLE、PLLC分别为PLL使能、PLL连接,使用时需要操作。2.PLLCFG中的MSEL[4:0]为PLL倍频器控制位,其值记为M;PSEL[1:0]为PLL分频器控制位,其值记为P,使用时需要操作。3.PLLSTAT中的第十位是PLL锁定标志位PLOCK,操作实例:while((PLLSTAT&(110))==0);//等待PLL锁定(PLOCK位为1),书中如此描述PLOCK作用:PLL锁定标志位(PLOCK)是非常重要的,只有该位置1后,才能将PLL连接到系统中,否则系统很可能会出现致命的错误。VPB分频器,主要用途是将处理器时钟CCLK分频,以便外设在合适的速度下工作。VPB分频寄存器VPBDIVVPBDIV[1:0]两个位可以设定三个分频值。00:VPB总线时钟为处理器时钟的1/4;01:VPB总线时钟与处理器时钟相同;10:VPB总线时钟为处理器时钟的1/2。设置PLL时需要设置这两个位。总结:以上程序实现了对PLLCON中PLLC、PLLE的设置,PLLCFG中M、P值的设置,PLLSTAT中第十位PLOCK的设置,VPBDIV中【1:0】位的设置。PLL馈送寄存器PLLFEED:是为了保证PLL正在使用的参数不被意外修改而设计的。使用时,必须将正确的馈送序列写入PLLFEED寄存器才能使PLLCON和PLLCFG寄存器的更改生效。馈送序列分两步进行:①将值0xAA写入PLLFEED;②将值0x55写入PLLFEED。操作实例:PLLFEED=0xAA;//馈送序列第一步PLLFEED=0x55;//馈送序列第二步。2011-10-2716:14
本文标题:PLL设置
链接地址:https://www.777doc.com/doc-6072821 .html