微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > LPC1754内部PLL0原理及应用设计详解

LPC1754内部PLL0原理及应用设计详解

时间:09-19 来源:周立功单片机 点击:

  LPC_SC->SC->PLL0FEED  = 0x55;

#endif 

  LPC_SC->PCONP     = PCONP_Val;                         /* Power Control for Peripherals    */

  LPC_SC->CLKOUTCFG = CLKOUTCFG_Val;                   /* Clock Output Configuration     */

#endif 

其中关键参数为PLL0倍频系数PLL0CFG_Val、CPU时钟分频系数CCLKCFG_Val,由于寄存器值比实际值小1,因此它们实际值为16和4。另外每次想PLL0相关寄存器写入新的数值时,需要向馈送寄存器当中写入馈送系列以后才能生效,通常是将0xAA和0x55先后写入PLLxFEED寄存器。

将相关参数准备好之后,就要根据参数配置,判断选中的时钟源,并通过计算得出最后的系统时钟频率。在选用外部12MHz时钟源的条件下,程序会跳转到CASE1的位置运行,并结合此前所给参数,计算出系统时钟频率CCLK=12M×2×16/1/4=96MHz。

     case 1:                                                /* Main oscillator => PLL0        */

        SystemFrequency = (OSC_CLK *

              ((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1))) /    /*PLL0STAT的低15位是15,倍频值*/

              (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)  /    /*PLL0STAT的16~23位是0,分频值*/

              ((LPC_SC->CCLKCFG & 0xFF)+ 1));            /*CCLKCFG是系统分频值,3       */

        break; 

又例如使用32.768KHz的外低速晶振作为时钟源,并同样产生96MHz的系统时钟,只需将CLKSRCSEL_Val、CCLKCFG_Val、PLL0CFG_Val分别改为0x02、0x02、0x1127(4391)即可,含义分别是选择外部低速晶振,系统分频为3(寄存器值比实际值小1),PLL0倍频值为4392(而PLL0分频值不设,默认为0),计算:32.768×2×4392÷3=95944.704KHz,

约为96MHz。

时钟配置注意事项

在整个代码编写过程中要格外注意对馈送寄存器PLLxFEED的操作,要严格遵循0xAA和0x55先后写入的顺序。另外要确保执行写入馈送序列时,不会出现任何一个中断服务程序,即在执行PLL0馈送操作时,必须禁止中断,如果写入的值不正确、或者没有满足无中断发生的条件,那么对PLL0CFG寄存器的更改都不会生效。

在根据自身需求配置所需系统时钟频率时,往往会使用仿真器的Debug功能,观测相关参数,以验证时钟频率配置的正确与否。但不能在执行PLL0馈送操作时,设置任何断点,否侧同样无法使配置生效。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top