0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

UtFs_Zlgmcu7890 来源:互联网 作者:佚名 2017-10-19 06:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

LPC175x作为NXP公司主推的cortex-M3内核芯片,广泛应用于各工控、电子计量、报警系统等领域,无论何种应用,根据实际需求选择合适的时钟源并配置合理的系统时钟频率都是必不可少的。

振荡器

以EasyARM-1754M3开发板为例,LPC1754芯片外部晶体振荡器包含两个,一个频率为12MHz外部高速晶振和一个频率为32.768KHz的外部低速晶振,两个都可以使用软件设置选用或不选用。此外LPC1754内部也包含三个独立的振荡器,他们分别是内部主振荡器,内部RC振荡器和内部RTC振荡器。实际应用当中常用的振荡器是外部高速晶体振荡器,和外部低速晶体振荡器。

LPC1754内部PLL0原理简介

PLL0包含多个寄存器,其中PLL0时钟源的选择可在CLKSRCSEL寄存器中设置,PLL0将输入时钟进行倍频,然后再分频为CPU及芯片外设提供实时时钟信号。PLL0可产生的时钟频率最高可达100MHz,是CPU所允许的最大值。

PLL0内部结构可表示为下图,PLL0的输出时钟信号即为pllclk,后经过CPU时钟分频器的分频,产生系统时钟,系统时钟再进入外设时钟分频器后输出多路的外设时钟。

应用举例

EasyARM-1754M3开发板配套的所有例程使用统一的系统初始化函数SystemInit()将系统时钟配置为96MHz,外设时钟配置为默认值24MHz。用户可在对此函数有一定理解的条件下,根据自身实际需求,对参数进行修改,可修改项一般包含时钟源、倍频系数、分配系数三个重要参数,系统初始化函数当中的PLL0配置部分如下程序清单所示:

#if (CLOCK_SETUP) /* Clock Setup */

LPC_SC->SCS = SCS_Val;

if (SCS_Val & (1 << 5)) {                                   /* If Main Oscillator is enabled  */

while ((LPC_SC->SCS & (1<<6)) == 0);                     /* Wait for Oscillator to be ready*/

}

LPC_SC->CCLKCFG = CCLKCFG_Val; /* 系统时钟分频值,CCLKCFG_Val值可改 */

LPC_SC->PCLKSEL0 = PCLKSEL0_Val; /* Peripheral Clock Selection */

LPC_SC->PCLKSEL1 = PCLKSEL1_Val;

LPC_SC->CLKSRCSEL = CLKSRCSEL_Val; /* 选取时钟源,CLKSRCSEL_Val值可改 */

#if (PLL0_SETUP)

LPC_SC->PLL0CFG = PLL0CFG_Val; /*PLL0倍频值,PLL0CFG_Val值可改 */

LPC_SC->PLL0CON = 0x01; /* PLL0 Enable */

LPC_SC->PLL0FEED = 0xAA;

LPC_SC->PLL0FEED = 0x55;

while (!(LPC_SC->PLL0STAT & (1<<26)));                    /* Wait for PLOCK0               */

LPC_SC->PLL0CON = 0x03; /* PLL0 Enable & Connect */

LPC_SC->PLL0FEED = 0xAA;

LPC_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馈送操作时,设置任何断点,否侧同样无法使配置生效。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LPC
    LPC
    +关注

    关注

    8

    文章

    137

    浏览量

    79444
  • NXP
    NXP
    +关注

    关注

    61

    文章

    1413

    浏览量

    199567
  • 寄存器
    +关注

    关注

    31

    文章

    5624

    浏览量

    130639
  • lpc1754
    +关注

    关注

    0

    文章

    1

    浏览量

    1912

原文标题:多种选择—轻松配置LPC175x系统时钟-ZLG技术研发中心

文章出处:【微信号:Zlgmcu7890,微信公众号:周立功单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AD9576:高性能双PLL异步时钟发生器的深度解析

    时钟发生器,它在众多应用场景中展现出了卓越的性能。 文件下载: AD9576/PCBZ.pdf 一、AD9576的核心特性 1. 双PLL架构 AD9576集成了一个高性能的分数N PLLPLL0)和一个
    的头像 发表于 05-23 12:30 582次阅读

    AD9176 PLL没有锁定,但输出正常,为什么?

    ,DAC0输出,sysref为3.75M连续信号,DAC采样时钟为9.6G,内部pll的参考时钟为300M,channeldatapaths are bypassed,main DAC datapaths
    发表于 05-08 07:39

    如何在 LPCXpresso IDE 上编写初始化控制器 PLL 的代码LPC2478?

    如何在 LPCXpresso IDE 上编写初始化控制器 PLL 的代码LPC2478给我一个示例和正确的方法。
    发表于 04-27 08:27

    LPC804的内部上拉和下拉电阻值是多少?

    您能否建议LPC804的内部上拉和下拉电阻值是多少?谢谢!
    发表于 04-20 09:12

    探索LPC82x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点

    探索LPC82x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点 在当今的电子设计领域,微控制器扮演着至关重要的角色。NXP的LPC82x系列32位ARM Cortex
    的头像 发表于 04-09 09:45 285次阅读

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点 在当今的电子设计领域,微控制器扮演着至关重要的角色。NXP的LPC11E6x 32位ARM Cortex
    的头像 发表于 04-09 09:25 627次阅读

    探索 LPC11E3x 32 位 ARM Cortex - M0 微控制器的无限可能

    探索 LPC11E3x 32 位 ARM Cortex - M0 微控制器的无限可能 在当今的电子世界里,微控制器如同智慧的心脏,驱动着各式各样的设备。其中,NXP 半导体的 LPC
    的头像 发表于 04-09 09:15 592次阅读

    探索NXP LPC111xLV/LPC11xxLVUK 32位ARM Cortex - M0微控制器

    探索NXP LPC111xLV/LPC11xxLVUK 32位ARM Cortex - M0微控制器 在当今的电子设计领域,寻找一款性能卓越、功耗低且功能丰富的微控制器是每个工程师的追求。NXP
    的头像 发表于 04-09 09:15 655次阅读

    LPC1111/12/13/14 32位 ARM Cortex - M0 微控制器全方位剖析

    LPC1111/12/13/14 32位 ARM Cortex - M0 微控制器全方位剖析 在嵌入式系统设计领域,微控制器的选择至关重要,它直接影响着产品的性能、功耗、成本等多个关键指标。今天我们
    的头像 发表于 03-24 17:20 710次阅读

    PLL控制器和分辨率模式切换详解

    pll_controller.v 是一个PLL动态重配置控制器,用于根据不同的视频模式(mode)动态配置Altera PLL IP的时钟频率参数。
    的头像 发表于 03-13 10:00 296次阅读
    <b class='flag-5'>PLL</b>控制器和分辨率模式切换<b class='flag-5'>详解</b>

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点

    探索LPC11E6x 32位ARM Cortex - M0+微控制器:特性、应用与设计要点 在当今电子设备飞速发展的时代,微控制器作为核心部件,其性能和功能直接影响着产品的质量和竞争力。NXP
    的头像 发表于 03-02 17:10 876次阅读

    LTC1754-3.3/LTC1754-5:高效微功耗电荷泵DC/DC转换器

    LTC1754-3.3/LTC1754-5:高效微功耗电荷泵DC/DC转换器 在电子设备设计中,电源管理模块至关重要,它直接影响着设备的性能、功耗和稳定性。今天,我们就来深入探讨Linear
    的头像 发表于 02-11 16:10 829次阅读

    LPC1110/11/12/13/14/15 32 位 ARM Cortex - M0 微控制器:设计与应用指南

    LPC1110/11/12/13/14/15 32 位 ARM Cortex - M0 微控制器:设计与应用指南 一、引言 在电子设计领域,微控制器是众多项目的核心。NXP 推出的 LPC
    的头像 发表于 02-10 15:20 394次阅读

    探究PLL1705与PLL1706:3.3V双PLL多时钟发生器的卓越性能

    输入输出特性 PLL1705和PLL1706采用27 - MHz主时钟输入,能产生多个系统时钟输出。以音频系统时钟为例,SCKO0固定为33.8688 MHz,
    的头像 发表于 02-04 09:35 417次阅读

    Analog Devices Inc. ADES1754 评估套件数据手册

    Analog Devices Inc. ADES1754评估套件(EV套件)用于演示ADES1754/ADES1755/ADES1756数据采集系统的功能和特性。该套件与MAX17851评估套件搭配
    的头像 发表于 06-10 11:25 1213次阅读
    Analog Devices Inc. ADES<b class='flag-5'>1754</b> 评估套件数据手册