LPC1700系列Cortex-M3内部时钟系统

发布者:乘风翻浪最新更新时间:2016-08-04 来源: eefocus关键字:LPC1700系列  Cortex-M3  内部时钟系统 手机看文章 扫描二维码
随时随地手机看文章
LPC1700系列Cortex-M3内部时钟系统 - steven - 学习、工作、事业

 

1、缩略语

osc:oscillator,意为振荡器,晶振。是一种能量转换装置——将直流电能转换为具有一定频率的交流电能。其构成的电路叫振荡电路。

osc_clk:外部晶体振荡器

rtc_clk:real time clock

 

2. 振荡器

2.1 内部RC振荡器(IRC)

    内部RC振荡器(Inner RC),可用作WatchDog的时钟源,也可用作驱动PLL0和CPU的时钟源。IRC的精度达不到USB借口的时间基准精度要求(在使用LPC1700的USB功能时要求使用精度更高的外部晶体振荡器作为系统时钟源)。除此以外,如果CAN波特率高于100Kbit/s,则IRC也不能应用于CAN1/2模块。IRC的标称频率为4MHz。

    在上电或任何片上复位时,LPC1700系列Cortex-M3使用IRC作为时钟源。此后,软件可将其切换为另一种可用的时钟源。

 

2.2 主振荡器(osc)

    主振荡器(外部晶体振荡器)可作为CPU的时钟源(不管是否使用PLL0)。主振荡器工作在1MHz~25MHz下。该频率可通过主PLL(PLL0)来提高至CPU操作频率的最大值。主振荡器的输出称为OSC_CLK。 PLLCLKIN选择用作PLL0输入时钟,周立功的书里将Cortex-M3处理器时钟频率称为CCLK。除非PLL0有效且已连接,否则PLLCLKIN和CCLK的频率相同。

    LPC1700系列Cortex-M3的主振荡器可工作在两种模式下:从属模式、主振荡模式。

    在丛书模式下,输入时钟信号应该与一个100pF的电容相连,其幅值为200mVrms到1000mVrms,相当于方波信号在280mV到1.4V之间浮动。在这种配置下XTAL2引脚可以不连接。

    在主振荡模式下,由于片内集成了反馈电阻,只需在外部连接一个晶体和电容Cx1, Cx2就可形成基本模式的振荡电路(基本频率用L、Cl和Rs来表示。

    由于芯片操作总是从内部RC振荡器开始,因此主振荡器只能由软件请求来启动。

2.3 RTC振荡器

    RTC振荡器可提供1Hz到32KHz的RTC时钟输出,可用作PLL0、CPU和看门狗定时器的时钟源。


3. 多路选择输入时钟源

    用来驱动PLL0、CPU和片内外围设备的时钟源包括主振荡器、RTC振荡器和内部RC振荡器。

    只有在PLL0断开连接时,才可更换输入时钟源。

3.1 PLL时钟源选择寄存器(CLKSRCSEL - 0x400F C10C)

 1:0 CLKSRC {00 使用内部RC振荡器(默认值); 01选择主振荡器; 10选择RTC振荡器; 11 保留值}, 7:2{0保留值}

 

4. 多路选择输出外部时钟

4.1 输出外部时钟源选择

    为了便于系统测试和开发,LPC1700系列Cortex-M3任何一个内部时钟均可作为输出外部时钟源,引出CLKOUT(P1.27引脚)功能。

    通过CLKOUT可观察到的输出外部时钟源有CPU时钟(cclk)[0000]、主振荡器时钟(osc_clk)[0001]、内部RC振荡器时钟(irc_osc)[0010]、USB时钟(usb_clk)[0011]和RTC时钟(rtc_clk)[0100]

4.2 时钟输出配置寄存器(CLKOUTCFG - 0x400F C1C8)

    CLKOUTCFG寄存器可以选择在CLKOUT引脚上作为输出的内部时钟,并允许通过一个整数值(1~16)对时钟进行分频。对于大多数时钟源可进行1分频。当选择CPU时钟且该时钟高于50MHz时,输出必须经过分频,使得频率在适当的范围内。

 

5. PLL0工作原理与使用

    LPC1700系列Cortex-M3内部具有两个PLL模块,分别为PLL0和PLL1。其中PLL0支持32KHz~50MHz范围内的输入时钟频率,而PLL1仅支持10MHz~25MHz范围内的输入时钟频率。

5.1 PLL0工作原理

    PLL0时钟源的选择在CLKSRCSEL寄存器中设置,PLL0将输入时钟升频,然后再分频以提供CPU及芯片外设使用的实际时钟。PLL0可产生的时钟频率高达100MHz,是CPU所允许的最大值。

    PLL0接受的输入时钟频率范围为32KHz~50MHz,PLL0的输出时钟信号就是CCO(电流控制振荡器)的输出,CCO的振荡频率由“相位频率检测”部件控制(内部结构可以忽略),公式为F(PLLin) / N = F(cco) / 2M, 即Fcco = Fpllin * 2M / N

    通常CCO的输出频率是有限的,超出这个范围则无法输出预期的时钟信号。LPC1700系列Cortex-M3内部的CCO可工作在275MHz ~ 550MHz,其中,最佳频率点为288MHz。

    其实,PLL0输出还有其他的分频器,使其频率下降到CPU、USB和其他外设所需要的值。详见“时钟分频器”。

    由于CCO(流控振荡器)与“相位频率检测”部件的工作原理需要一定时间才能稳定,因此需要查询PLL0STAT是否就绪再来启用。

    由于PLL0作为时钟系统中的一个重要模块,为避免程序对PLL0正在使用的相关参数意外修改,芯片厂商从硬件上提供了保护,PLL0FEED(PLL0馈送寄存器),该寄存器使能PLL0CON、PLL0CFG,将前两个配置信息载入到实际影响PLL0操作的映像寄存器中。

5.2 PLL0寄存器描述

    PLL0CON, PLL0CFG, PLL0STAT, PLL0FEED

5.2.1 PLL0控制寄存器(PLL0CON)

    [0] 使能PLL0,允许PLL0尝试锁定倍频器和分频器的当前设定值

    [1] 连接PLL0,使PLL0输出作为处理器和大多数片内外设的时钟源

    对于PLL0CON寄存器的更改,只有在执行了正确的PLL0馈送序列后才生效

5.2.2 PLL0配置寄存器(PLL0CFG)
    [14:0] MSEL0, PLL0倍频器值; [15] 保留;[23:16] NSEL0, PLL0预分频器值; [31:24] 保留

5.2.3 PLL0状态寄存器(PLL0STAT)

    PLL0STAT寄存器提供了当前生效的PLL0工作参数和状态。

    [14:0] MSEL0,保存的值是M - 1; [15] 保留

    [23:16] NSEL0,N - 1; [24] PLLE0,使能位; [25] PLLC0,连接位;

    [26] PLOCK0,反应PLL0的锁定状态。 [31:27] 保留

5.2.4 PLL0馈送寄存器(PLL0FEED)

    使用顺序:PLL0CFG = ***; PLL0FEED = 0xAA; PLL0FEED = 0x55;

5.3 PLL0和掉电模式

    掉电模式会自动关闭并断开PLL0。从掉电模式唤醒不会自动恢复原先的PLL0设置参数,必须在软件中恢复PLL0。通常,可以在中断服务程序的开始激活PLL0、等待锁定并连接PLL0,该中断服务程序也可以在掉电唤醒时调用。

5.4 PLL0频率计算中的参数

    Fin, Fcco, N, M 

    Fcco = Fin x 2M / N  【注意:PLL0输入和设定必须满足下面的条件,Fin的范围32KHz ~ 50MHz, Fcoo的范围 275~550MHz】

    在较高的振荡器频率下(超过1MHz),允许M值的范围从6~512,这是支持主振荡器和IRC操作的整个M值范围。

    对于较低频率,特别是在RTC振荡器用来计时PLL0时,选择了65个M值用于支持波特率产生和CAN/USB操作

5.5 确定PLL0频率参数的过程

    (1)确定是否需要使用USB以及是否由PLL0驱动。USB需要一个占空比为50%的48MHz时钟源,也就是说Fcco必须是48MHz的偶数整数倍(即96MHz的整数倍),此时误差范围极小;

    (2)选择所需的处理器频率(Fcclk)。这取决于处理器的吞吐量要求,外设可在较低时钟频率下运行,这个频率可低于处理器的频率(较低的Fcco值,处理器功耗也更低)。找出与所需Fcclk的倍数接近的一个Fcco值,再与USB所要求的Fcco值相比较;

    (3)选择PLL0输入频率(Fin)的值。这可从主振荡器、RTC振荡器或片内RC振荡器中选择。使用USB功能时,需选择主振荡器;

    (4)计算M和N的值来产生十分精确的Fcco频率。

    总的来说,建议使用一个较小的N值,这样可以降低CCO的倍频数。

5.6 PLL0频率计算举例

    例1:在应用中使用USB接口

    a. 在应用中使用USB接口并且由PLL0驱动。在PLL0操作范围(275MHz ~ 550MHz)内,96MHz的最小整数倍频值是288MHz(越小则功耗越低);

    b. 预期的CPU速率为60MHz;

    c. 使用外部4MHz晶振或内部4MHz作为系统时钟源。 计算 M = (Fcco * N ) / (2 * Fin)

    d. 为了使PLL0的倍频值最小,可选择N=1。因此M = 288 * 10^6 * 1 / (2 * 4 * 10^) = 36

    例2:在应用中不适用USB接口

    a. 预期的Fcclk为72MHz;

    b. 使用32.768KHz RTC时钟源作为系统时钟源。

    c. 要产生所需的Fcclk,而在PLL操作范围内,最小的Fcco为288MHz(4*72MHz),此时,我们令N=1,以获得Fcco的最小倍频值。M=288*10^6/(2*32768)=4394.53125。我们取不同的N值,得到M值不同,且Fcco可以算出几个误差,求得最接近的M=8789, N=2

5.7 PLL0设置步骤

    要对PLL0进行正确初始化,须注意下列步骤:

    (1) 如果PLL0已连接,则用一个馈送序列断开与PLL0的连接;

    (2) 用一个馈送序列禁止PLL0;

    (3) 如果需要,可在没有PLL0的情况下改变CPU时钟分频器的设置以加速操作;

    (4) 如果需要,可操作“时钟源选择控制寄存器”以改变系统时钟源;

    (5) 写PLL0CFG并用一个馈送序列使其有效。PLL0CFG只能在PLL0被禁止时更新;

    (6) 用一个馈送序列使能PLL0;

    (7) 改变CPU时钟分频器设置,使之与PLL0一起操作;

    注意:在连接PLL0之前完成这个操作。

    (8) 通过监控PLL0STAT寄存器的PLOCK位0,或者使用PLL0锁定中断来等待PLL0实现锁定。此外,当使用低频时钟作为PLL0的输入时(也就是32KHz时),需要等待一个固定的时间。当PLL参考频率Fref(=Fin/N)少于100KHz或大于20MHz时,PLOCK0的值可能不稳定。在这些情况下,启动PLL0后等待一段时间即可。当Fref大于400KHz时,这个时间为500us;当Fref少于400KHz时,这个时间为200/Fref秒;

    (9) 用一个馈送序列连接PLL0。

    注意:不要合并上面的任何一个步骤。例如,不能用相同的馈送序列同时更新PLL0CFG和使能PLL0

5.8 PLL0和启动/引导代码的相互作用

    当在用户Flash中无有效代码(由校验和字决定)或在启动时拉低ISP使能引脚(P2.10)时,芯片将进入ISP模式,并且引导代码将用IRC设置PLL0。因此,当用户启动JTAG来调试用户代码时,用户代码不能认为PLL0被禁止。在用户启动代码中必须对PLL0进行重新设置。

 

6. PLL1工作原理与使用

6.1 PLL1工作原理

    PLL1仅接受主振荡器的时钟输入,并且为USB子系统提供一个固定的48MHz时钟。除了从PLL0产生USB时钟外,这是产生USB时钟的另一种选择。

    PLL1在复位时禁止和掉电。如果PLL1保持禁止,那么可以由PLL0提供USB时钟。

    PLL1仅支持从10MHz到25MHz范围内的输入时钟频率。倍频值M可以是1~32的整数值(对于USB,倍频值不能高于4)。Fcco的操作范围从156MHz到320MHz,输出分频器P可设为2、4、8、16分频来产生输出时钟。

6.2 PLL1的寄存器描述(与PLL0的寄存器基本相同)

 

7. 时钟分频器

7.1 CPU时钟配置寄存器(CCLKCFG)

    LPC1700系列Cortex-M3 CPU的时钟频率最大值为100MHz。可以选用适当的分频器值CCLKSEL来降低CPU的操作频率,以达到暂时节省功耗无需关闭PLL0的目的。

7.2 USB时钟配置寄存器(USBCLKCFG)

    注意:该寄存器仅在PLL1禁止时使用。如果PLL1使能,则其输出自动使用PLL1作USB时钟源,且必须配置其为USB子系统提供准确的48MHz时钟。

    USBCLKCFG寄存器控制对PLL0输出时钟的分频,然后提供给USB子系统使用。操作示例:USBCLKCFG = (Fcco / Fusbclk - 1)

7.3 IRC调整寄存器(IRCTRIM),该寄存器用于调整片内4MHz振荡器。

7.4 外设时钟选择寄存器(PCLKSEL0,PCLKSEL1),每个外设都有各自独立的分频器,两位,可表示1、1/2、1/4、1/8倍的CCLK

关键字:LPC1700系列  Cortex-M3  内部时钟系统 引用地址:LPC1700系列Cortex-M3内部时钟系统

上一篇:ARM体系结构知识点
下一篇:arm-linux启动后屏幕不断闪烁

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

ARM Cortex-M3 学习笔记(4-1)
最近在学ARM Cortex-M3,找了本号称很经典的书 An Definitive Guide to The ARM Cortex-M3 在看。这个系列学习笔记其实就是在学习这本书的过程中做的读书笔记。 第四章 指令系统 基本语法 这里介绍的汇编语法是ARM汇编器的语法,如果采用其他的汇编器,比如gcc中的as,语法是不同的。 汇编指令的典型模式如下所示: Label opcode operand1, operand2, ;comment 标号是可选的,如果有,它必须顶格写,标号后面不需要 : 。 操作码是指令的助记符,它的前面必须有至少一个空白符。 立即数必须以 # 开头,16进制数字表示与
[单片机]
STM32_CorTex-M3位带操作的理解
STM32支持了位带操作(bit_band),有两个区中实现了位带。其中一个是SRAM 区的最低1MB 范围,第二个则是片内外设 区的最低1MB 范围。这两个区中的地址除了可以像普通的RAM 一样使用外,它们还都有自己的“位带别名区”,位带别名区 把每个比特膨胀成一个32 位的字。 每个比特膨胀成一个32 位的字,就是把 1M 扩展为 32M , 于是;RAM地址 0X200000000(一个字节)扩展到8个32 位的字,它们是:(STM32中的SRAM依然是8位的,所以RAM中任一地址对应一个字节内容) 0X220000000 ,0X220000004,0X220000008,0X22000000C,0X2200
[单片机]
STM32_CorTex-M3位带操作的理解
如何发挥ARM Cortex-M3和M4微控制器的最大作用
前 言 许多嵌入式开发人员对ARM Cortex处理器架构颇为熟悉,但很少有人能够对这种流行架构了如指掌,从而可以充分发挥它独特的特性和性能。新型ARM Cortex-M4处理器尤为如此,它拥有引以为豪的增强架构、天生的数字信号处理(DSP)能力和可选的浮点加速器,使精于此道的程序设计人员或硬件工程师可以充分发挥它的优势。本文接下来将就Cortex-M3/M4微控制器(MCU)的一些更有趣的(但经常遭到忽视的)特性展开详细的论述。 大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能
[单片机]
如何发挥ARM <font color='red'>Cortex-M3</font>和M4微控制器的最大作用
STM32F10x在OTP MCU编程器中的应用
  OTP单片机因其价格低廉、性能成熟在许多小家电中得以广泛应用。硬件编程器通常是其开发过程中必不可少的设备。本案是用于该类单片机的硬件编程器,可对该类单片机实现联机编程和脱机编程;还可以测试该类单片机的工作频率、工作电压等多项参数,一机多用。    1、STM32F101R8主要特性   STM32F10x系列是ST公司推出的基于ARM最新架构Cortex-M3内核的MCU。集成了存储器、时钟、复位和电源管理电路,DMA控制器,模数/数模转换器,快速IO口,多功能定时器及各种通讯端口。具有多种低功耗模式、在线调试端口。该系列MCU引脚、外设、软件具有高度兼容性,能应用到许多领域中。   本案选用了基本型器件STM32F10
[单片机]
Cortex-M3 (NXP LPC1788)之外部中断操作
要使用LPC1788的外部中断,要进行两部分的操作。由于外部中断的管脚采用I/O复用的形式,显然我们首先要对管脚进行配置,使其工作在外部中断输入的模式。其次,我们需要配置中断相关的寄存器包括中断使能以及中断的触发方式等。 由于我们使用的是外部中断0,查阅数据手册,其GPIO管脚为P2_10,为此我们设置IOCON_P2_10寄存器的FUNC字段,设置成001即为EINT0模式。 配置完引脚后,还需要继续配置具体的中断功能。我们需要打开中断使能,设置ISER相应位;还要配置中断的触发方式如电平触发和边沿触发,相关寄存器为EXTMODE和EXTPOLAR;中断触发以后会将外部中断标志寄存器EXTINT相应位置位,这将会向
[单片机]
<font color='red'>Cortex-M3</font> (NXP LPC1788)之外部中断操作
采用ARM Cortex-M3的USB热电偶温度测量系统电路图
  电路功能与优势   本电路显示如何在精密热电偶温度监控应用中使用精密模拟微控制器ADuCM360/ADuCM361。ADuCM360/ADuCM361集成双通道24位-型模数转换器(ADC)、双通道可编程电流源、12位数模转换器(DAC)、1.2 V内部基准电压源、ARM Cortex-M3内核、126 kB闪存、8 kB SRAM以及各种数字外设,例如UART、定时器、SPI和I2C接口等。   在本电路中,ADuCM360/ADuCM361连接到一个热电偶和一个100 铂电阻温度检测器(RTD)。RTD用于执行冷结补偿。   在源代码中,ADC采样速率选择4 Hz。当ADC输入可编程增益放大器(PGA)的增益配置为3
[单片机]
采用ARM <font color='red'>Cortex-M3</font>的USB热电偶温度测量<font color='red'>系统</font>电路图
Cortex-M3的次声波输气管道泄漏检测系统
引言 随着管道运输在天然气集输系统中所占的比重日益增大,由于管道占压、腐蚀、老化及盗气引起的管道泄漏情况也严重威胁输气管道系统的安全正常运行。能及时检测出管道泄漏情况并对泄漏位置进行及时定位,可以最大限度地减少经济损失和环境污染。目前,国内外有很多方法对油气输送管道进行泄漏检测。根据检测媒介的不同可分为直接检测法和间接检测法。直接检测法主要靠人工巡线,通过观察泄漏时表露出地表的痕迹和散发出的气味等进行判断;间接检测法就是根据泄漏引起管道内压力、流量、声音等的变化进行检测。直接检测法工人的劳动强度过大,且在北方由于冰雪覆盖等环境的原因大大增加巡线的难度。间接检测法最常用的是负压波法和瞬态模型法,负压波法对液体的效果比较明显,而对
[单片机]
<font color='red'>Cortex-M3</font>的次声波输气管道泄漏检测<font color='red'>系统</font>
恩智浦推出带有带免费DSP库的Cortex-M3微控制器
    恩智浦半导体(NXP Semiconductors)近日宣布推出两款工作频率为120 MHz的微控制器LPC1769和LPC1759,这是业界速度最快的ARM Cortex-M3微控制器。凭借这一性能水平,在成本限制型应用中实现微控制器控制与信号处理的集成已成为现实,再无需使用专用的DSP硬件。     该款微控制器的256-点16-位FFT执行时间不到190 微秒,其速度比最接近的Cortex-M3替代产品提高54%,性能上可与低成本的DSP相媲美。1024-点16-位FFT的执行时间不到0.89 毫秒。以上时间包括FFT算法的初始化时间及运行时间。     恩智浦半导体副总裁兼微控制器产品线总经理Geoff L
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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