Cotex-M3内核LPC17xx系列时钟及其配置方法

发布者:BlissfulMoments最新更新时间:2016-12-26 来源: eefocus关键字:Cotex-M3内核  LPC17xx系列  时钟  其配置方法 手机看文章 扫描二维码
随时随地手机看文章

一、背景:

  最近正在接手一个项目,核心芯片既是LPC17XX系列MCU,内核为ARM的Cotex-M3内核。

  想要玩转一个MCU,就一定得搞定其时钟!

  时钟对MCU而言,就好比人类的心脏。由其给AHB、APB总线供给血液(时钟频率),而挂在AHB(Advance High Bus)总线上的器件就像是我们的各个器官,挂在APB(Adance Peripheral Bus)总线的外设就像是人类的四肢。各个器官和四肢只有在你的血液(时钟频率)供给恰到好处时才能正常运转。

  本篇文章既是对LPC17xx系列的时钟结构及其配置方法做个介绍与总结。

 

二、正文:

  二话不说,先上一张LPC17xx时钟。

 

  由图所示,MCU最原始的时钟动力来自于上图三个地方之一,

    osc_clk-->由外接在”XTAL1”,”XTAL2”的晶振来提供时钟源;

    rtc_clk-->由外接在”RTCX1”,”RTCX2”的晶振来提供时钟源;

    irc_osc-->由MCU内部自带的晶振来提供时钟源。

  又由图知,LPC1700系列一共有4大类时钟,

  供给CPU直接使用的CCLK时钟;

  供给USB使用的usb_clk时钟;

  供给看门狗使用的wd_clk时钟;

  供给各种外设使用的pclk时钟;

  CCLK时钟由主PLL(PLL0)或者直接由三个晶振源之一来提供;

  usb_clk时钟由主PLL(PLL0)或者PLL1提供;

  pclk时钟由CCLK分频得来;

  wd_clk时钟由”rtc_clk” 或者 “irc_osc”提供时钟。

  

 

  接下来该说如何配置时钟了:

  1、 配置CPU时钟(CCLK) :

  CPU时钟CCLK若是由PLL0提供的,那么PLL0会先将供给它的时钟进行升频,升频之后,再降频供CPU使用,即CCLK,

  至于为何要先升频再降频,暂时未知,也许单纯的是PLL的工作机制吧。以下即配置CPU时钟(CCLK)的具体过程:

  a、 描述主振荡器——即主振荡器大小范围多少,有没有稳定等,配置的寄存器为“SCS”。

  b、 配置外设时钟:

  这里要注意!按照正常思维顺序走的话,“b”这一步应该在所有步骤之后,,但是LPC17xx系列的MCU规定,在enable PLL0前,

  要先把外设时钟配置完成,所以,要先配置外设时钟。

  PLL0升频再降频后,会生成一个CCLK时钟,该CCLK经过再次分频即可得到所有外设的外设时钟。

  外设时钟的配置,既是根据各个外设的时钟需求,来分别独立的对CCLK分频取得。

  每个系列MCU均有其最大工作频率CCLK,以不超过该最大工作频率为准,配置CCLK降频(分频)大小的寄存器为“CCLKCFG”。

  配置外设时钟的寄存器分别为“PCLKSEL0/1”

  在配置外设时钟前,先考虑由PPL0升频多少降频多少才可得到想要的CCLK值,而这实际上是“d”步骤考虑的,所以此处的逻辑

  会有点乱。在阅读过程中,可跳过该步骤,直接看“c”步骤,最后跳回来看“b”步骤,但实际操作得按该步骤来。

  c、  从这三个振荡器选择供给PLL0的时钟,配置的寄存器为“CLKSRCSEL”。

  d、 配置“PLL0CFG”寄存器,来设置PLL0升频值及降频值的大小,寄存器截图如下:

  M即是倍频值,N即分频值,当使用晶振源为”rtc_clk”时,M值参照表4.8所建议的值。

  PLL0计算方法如下图:

    计算PLL0时,各个计算变量参数的意义如下图:

    

  e、 最后使能PLL0时钟并选择是否选用PLL0作为CCLK的输入时钟,操作的寄存器为“PLL0CON”

  f、  举个例子:MCU外接晶振为12MHZ,我需要CPU工作在频率100MHZ。那么根据式子,M = 100, N = 6。

  Fcco = (2 * 100 * 12MHZ) / 6 =400MHZ。然后4分频,最后得到CCLK为100MHZ。

  配置代码如下:

 


#if (PLL0_SETUP)
  LPC_SC->PLL0CFG   = 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


 

  2、 USB时钟的配置:

  如整体时钟图示,USB时钟只能由PLL0或者PLL1提供,并且!若USB时钟由PLL0提供,那么PLL0的时钟源必须是外部 晶振!

  USB需要一个占空比为50%的48MHZ的时钟源,也就是说,PLL1或者PLL0分频出来的时钟Fcco必须为48MHZ的偶数倍数,

  以便为USB提供合适的时钟。

  A、 若由PLL0提供,那么由“1”步骤配置完PLL0,通过USB分频器获得满足条件的USB时钟即可。

  举个例子:USB的CLK要求为48MHZ,那么PLL0主频配置为48MHZ的偶数倍,然后通过USB时钟分频器分频,

  来获得符合要求的时钟。

  B、 若由PLL1提供,那么就得说说PLL1是如何配置的:

  a、 PLL1仅支持10MHZ到25MHZ范围内的时钟输入,且只能是外部时钟源,所以时钟源不用选择;

  b、 设置PLL1的“M”值与“P值”,PLL1类似于PLL0,也是会有一个先升频后降频的过程,但可以看出PLL1算是USB的一个

  特供时钟源,所以每个值的限制条件会比较多。

  PLL1输出频率的公式:

  Fcco频率可按如下公式计算:

  

  注意:

  Fosc(时钟源)的频率范围必须为10MHZ~25MHZ,

  USBCLK必须为48MHZ,

  Fcco的范围为:156MHZ~320MHZ;

  举个例子:

  输入的外部晶振为12MHZ,配置“M”的值为4,“P”的值为2,按公式计算可得PLL1升频后为192MHZ,然后分频到48MHZ

  供给USB使用。

      PLL1配置代码如下:


#if (PLL1_SETUP)
  LPC_SC->PLL1CFG   = PLL1CFG_Val;
  LPC_SC->PLL1CON   = 0x01;             /* PLL1 Enable                        */
  LPC_SC->PLL1FEED  = 0xAA;
  LPC_SC->PLL1FEED  = 0x55;  while (!(LPC_SC->PLL1STAT & (1<<10)));/* Wait for PLOCK1                    */

  LPC_SC->PLL1CON   = 0x03;             /* PLL1 Enable & Connect              */
  LPC_SC->PLL1FEED  = 0xAA;
  LPC_SC->PLL1FEED  = 0x55;#else
  LPC_SC->USBCLKCFG = USBCLKCFG_Val;    /* Setup USB Clock Divider            */#endif


  3、 看门狗wd_clk还未使用,下次要配时,再做记录。

 

三、总结:

  不论是cotex-m3内核的LPC17xx系列、STM32系列,还是更高阶的arm9,arm11,时钟才是是摸透它们的最佳切入点。

  就实际使用来说,使用MCU既是使用各种外设,或者实现各种通信。不论何种外设,何种通信(UART、IIC、CAN、USB等),

  其能正确工作的关键就在于要给定正确合适的时钟。时钟的选法就采用MCU芯片手册上的时钟图来倒推回去,

  首先根据外设的需求确定外设时钟,接着考虑CPU的时钟,然后在反推到最初的时钟源的选择。

  完毕,在此做个记录,以便下次参考。


关键字:Cotex-M3内核  LPC17xx系列  时钟  其配置方法 引用地址:Cotex-M3内核LPC17xx系列时钟及其配置方法

上一篇:LPC1768/1769之CAN控制器概述(附库函数下载地址)
下一篇:如何用MDK从零开始创建STM32F2xx工程(图文教程)

推荐阅读最新更新时间:2024-03-16 15:27

89C51复位电路原理、条件、原理图以及时钟的概念
1.复位条件 89C51单片机复位需要一个长达24个时钟周期的高电平才能复位,复位的作用就是使程序的指针指向地址0,每个程序都是从地址0开始执行,所以复位的概念就是让程序从头开始执行。 2.复位电路原理图 3.原理说明 该复位电路具有上电复位的功能,此功能是由C1(极性电容)实现的。当系统上电时C1有一个充电放电的过程,放电过程会产生一个高电平,放电的时间根据公式(t=RC开平方)计算。R为电阻R2的阻值,C为极性电容C1的大小。 系统正常运行时,按下按键S1时,RST端的电平为VCC*10/11,也是一个高电平,此时芯片也会产生一个高电平复位信号。 4.关于时钟的概念 机器周期和指令周期的概念: 振荡周期: 也称时钟
[单片机]
89C51复位电路原理、条件、原理图以及<font color='red'>时钟</font>的概念
MSP430G2553时钟外部晶振配置说明
摘要:关于MSP430G2553的时钟分类以及ACLK,MCLK和SMCLK的时钟源以下均不会做具体解释,在百度或者CSDN能搜到好多相关的说明文章。本文主要论证一下ACLK,MCLK和SMCLK可选作为时钟源的LFXT1CLK的频率是多少。在BAIDU以及TAOBAO中搜索不到下图电路板中的无源晶振,所以想要自己动手对其进行推导。(2553的技术文档介绍中该晶振为32kHz晶振) 主要思路: 配置相关时钟寄存器,将外部晶振LFXT1CLK作为SMCLK的时钟源,SMCLK作为定时器A的时钟源,配置定时器使相应引脚输出PWM波,根据PWM波的频率,最终推导出LFXT1CLK对应的外部无源晶振的频率。 小试牛刀 本步主要
[单片机]
MSP430G2553<font color='red'>时钟</font>外部晶振<font color='red'>配置</font>说明
SiTime推出高精度MEMS振荡器
小型基站、微波回传、同步以太网及光学设备的动态性能将提升30倍 动态稳定性提升10倍达1 ppb/℃,可取代IEEE 1588应用中价格昂贵的恒温槽控制石英晶振(OCXO) 抗振性增加20倍,确保系统持续运行 10/40/100G以太网的可靠性提升30倍 可运行于-40℃至 +105℃温度范围,特别适合无风扇户外设备 Stratum 3规格搭配独特系统内可编程功能(ISP),有助于减少系统所需物料,提供多重协议支持 【2016年9月26日,加州森尼韦尔讯】MEMS和模拟半导体公司和MegaChips公司(东京证券交易所:6875)的全资子公司SiTime公司(SiTime Corporation)今天宣布推出创
[网络通信]
MSP432UART波特率与时钟关系
MSP432波特率与时钟频率对应关系 msp432在进行串口通讯时,都会进行波特率的设置,在MSP432中如何快速设置波特率?? 1.首先确定时钟频率 2.串口配置参数结构体设置 msp432在进行串口通讯时,都会进行波特率的设置,在MSP432中如何快速设置波特率?? 1.首先确定时钟频率 下面是可选项(一般选用12MHZ/24MHZ) 2.串口配置参数结构体设置 最主要设置这三项 这是如何计算来的??? 这里直接打开应用技术手册905页,可以看到以下两张表 在这里插入图片描述 这里可以看到在不同频率下对应波特率设置 举个例子: 在设置频率为12Mhz时候,波特率设置为115200 找到对用应用手册
[单片机]
MSP432UART波特率与<font color='red'>时钟</font>关系
TI - MCU - MSP430使用指南6 -> CS时钟系统
MSP430产品能做到超低功耗主要得益于对时钟的严谨设计,在所有MSP430产品中,总共有以下几种时钟类型: MCLK : Master Clock,MCU主时钟,决定着CPU,CRC等运行的速度。 SMCLK:Subsystem Master Clock,子系统时钟,这个时钟总是由MCLK分频得到,可以是1、2、4、8等分频,与MCLK属于同步时钟,主要可用于常规外设的时钟源。 ACLK:Auxiliary clock,辅助时钟,可以由XT1CLK(外部时钟)或REFCLK(内部时钟)产生,这个时钟频率必须在32KHz左右,最常规的应该在32768Hz,不能超过40KHz。 VLOCLK:Internal very-low-
[单片机]
TI - MCU - MSP430使用指南6 -> CS<font color='red'>时钟</font>系统
基于多路移相时钟的瞬时测频模块设计
  0 引 言   目前,脉冲雷达的脉内信号分析一直是研究的热点和难点,如何能更快速,准确的对脉内载波频率测量成为研究人员关注的目标,与此同时高精度频率源在无线电领域应用越来越广泛,对频率测量设备有了更高的要求,因此研究新的测频方法对开发低成本、小体积且使用和携带方便的频率测量设备有着十分重要的意义。本文根据雷达发射机频率快速变化的特点,采用目前新型的逻辑控制器件研究新型频率测量模块,结合等精度内插测频原理,对整形放大后的脉冲直接计数,实现对下变频后单脉冲包络的载波快速测频。具有测量精度高,测量用时短的特点,能作为脉冲雷达单脉冲瞬时测频模块。 1 移相时钟计数法测频原理   移相时钟计数法以等精度测频法为基础,是一种新的内
[安防电子]
基于多路移相<font color='red'>时钟</font>的瞬时测频模块设计
美国国家半导体最新推出时钟抖动滤除器产品
美国国家半导体公司(National Semiconductor Corp.)(美国纽约证券交易所上市代码:NSM)宣布推出一系列全新的时钟抖动滤除器,该系列产品拥有业界最低的相位噪声和均方根抖动性能:在12kHz与20MHz之间的均方根抖动只有111飞秒(fs);若输出频率为184MHz,锁相环的宽带噪声基底则只有-162dBc/Hz。对于无线和有线通信系统、测试和测量设备、医疗成像系统、软件无线电系统(SDR)和数字广播设备来说,低相位噪声除了可以提高系统的稳定性之外,也可降低整个物料清单(BOM)的成本。 LMK04800系列时钟抖动滤除器由4款集成电路(ICs)组成,包括LMK04808、LMK04806、LMK
[模拟电子]
最新ADC采用连续时间Sigma-Delta 技术
  美国国家半导体推出业界一款采用连续时间 sigma-delta(1) (CTSD) 技术的高速模拟/数字转换器。这款8通道、12位、50MSPS 的 ADC12EU050模拟/数字转换器属于美国国家半导体PowerWise高能效芯片系列产品。该产品的无混叠信号采样带宽为25MHz,功耗比采用流水线架构的同类竞争产品低一半(350mW)。   15年来,CTSD技术一直是高校与业内的热门研究课题。ADC12EU050芯片首次采用CTSD技术。美国国家半导体还计划推出更多采用CTSD技术的模拟/数字转换器产品。连续时间架构的优点在于不但可以添加信号调节等信号路径功能,而且可为模拟/数字转换器增添滤除混叠信号的滤波功能,大幅精简系
[模拟电子]
最新ADC采用连续时间Sigma-Delta 技术
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved