6490|0

81

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

LPC54608开发板时钟设置的解析 [复制链接]

本帖最后由 冒险武者 于 2018-1-28 11:37 编辑

NXP Semiconductors LPC546 32 位微控制器 (MCU) 具有丰富的外设集、极低的功耗和增强的调试功能。
LPC546 MCU 系列采用 ARM® Cortex®-M4 内核,可提供以太网支持,并设有一个 TFT LCD 控制器和两个 CAN FD 模块。 LPC546 MCU 旨在提高灵活性和性能可扩展性,可提供高达 180MHz 的性能,同时保持低至 120uA/MHz 的功率效率。 LPC546 MCU 具有多达 21 个通信接口,可满足下一代物联网应用的人机界面和连接需求。

官方提供的示例一般开头如下所示:
  1. BOARD_InitPins();
  2. BOARD_BootClockFROHF48M();
  3. BOARD_InitDebugConsole();
复制代码

意思 : 代码初始化  》》》 设置系统时钟工作频率48MHz  》》》 串口调试打印初始化

这是48MHz是怎么来的呢?,留个疑问
请往下看。。。。

用MCUXpresso Config Tools v4.0工具打开一个官方示例,进入时钟设置会如下所示:这可能就是默认设置

下面详细分析:Main clock select A主要有四个时钟来源,分别是fro_12m、clk_in、wdt_clk、fro_hf


其中
1)fro_12m 与 fro_hf 内部FRO时钟振荡器,不同的是fro_12m时钟频率为12Mhz,而fro_hf时钟频率作为高频输出,频率出厂设置为48MHz 与96Mhz两种高频输出。
下面来看看FRO控制寄存器的描述,用户手册截图如下:

大致意思是:该寄存器用于为高频时钟选择芯片上的振荡器,以及自动USB速率调整模式的配置。
这个修剪值是96 MHz振荡器的工厂预置,并由启动代码编写。
因此如选择fro_12m 与 fro_hf作为时钟频率,可以直接调用官方提供的函数
  1. void BOARD_BootClockFROHF48M(void);
  2. void BOARD_BootClockFROHF96M(void);
复制代码

其选择如下:



2)clk_in是外部晶振时钟频率

3)wdt_clk是看门狗时钟,同样来看看看门狗时钟设置的寄存器描述

大致意思是:这个寄存器控制了监视器振荡器的频率,在6 KHz到1.5 MHz之间。这个振荡器连接到监视器定时器和微型计时器。该振荡器的低功耗特性限制了其在温度、电压和硅处理变化上的精度在±40%。

因此只要设置MAINCLKSELA寄存器的[1:0]就可以选择不同的时钟频率
00 --------   fro_12m
01 --------   clk_in
10 --------   wdt_clk
11 --------   fro_hf
通过如上的分析,相信大家对时钟选择有个基本了解。

但是设置系统频率还需要了解Main clock select B的频率选择,主要对应Main clock select A、pll_clk、32k_clk,如下所示:



1)Main clock select A通道的选择前面已经详细介绍了,这里就不详细介绍了

2)32k-clk是RTC振荡器输出的频率,32kHZ,寄存器设置截图如下所示;

设置比较简单,只需要设置RTCOSCCTRL寄存器0位为1就可以使能RTC时钟频率

3)pll-clk是由System PLL得频率而来,

PLL 时钟选择是由SYSPLLCLKSEL得[2:0]最低三位设置的,分别是fro_12m、clk_in、32k_clk与none(无时钟)
SYSTEM PLL的设置中包括倍频分频器,合理的设置倍频分频器数值可以达到设置系统合适的频率
这就是SYSTEM PLL系统内部,下面设置的数值是我设置的LPC54608工作的最高频率180MHz


到这里,系统时钟的选择与设置基本了解了,下面我们操作设置系统工作频率为180MHZ(最大频率,超频不考虑)

一)先看一张设置系统函数void BOARD_BootClockFROHF48M(void)时钟设置的由来,如下所示:


二)工作频率为180MHZ的设置
1)PLL 时钟选择fro_12m为输入时钟频率,你也可以选择外部时钟clk_in


2)Main clock select B的频率选择pll_clk,目的是激活


3)倍频后频率不得低于275MHz,不得高于550MHz,刚开始是想直接倍频设置为180MHz,后面就直通


参数设置如下所示


4)生成代码可以看到在右侧,时钟源代码中可以看到出现如下函数:
  1. void BOARD_BootClockPLL180M(void)
复制代码




5)代码分析

  1. //使能FRO的电源是打开的
  2.     POWER_DisablePD(kPDRUNCFG_PD_FRO_EN);
  3. //首先切换到12MHz,以确保我们能够在不意外的情况下改变电压以达到当前的速度
  4.     CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);

  5. //使能系统振荡器的电源
  6.     POWER_DisablePD(kPDRUNCFG_PD_SYS_OSC);
  7. //设置系统频率范围
  8.     SYSCON->SYSOSCCTRL = ((SYSCON->SYSOSCCTRL & ~SYSCON_SYSOSCCTRL_FREQRANGE_MASK)                            |SYSCON_SYSOSCCTRL_FREQRANGE(0U));
  9. //设置高频输出的电压
  10.     POWER_SetVoltageForFreq(12000000U);
  11. //将FLASH等待状态设置为核心
  12.     CLOCK_SetFLASHAccessCyclesForFreq(12000000U);

  13. //设置PLL-clk,主要是设置倍频分频等
  14.     const pll_setup_t pllSetup = {
  15.         .pllctrl =  SYSCON_SYSPLLCTRL_SELI(32U) | SYSCON_SYSPLLCTRL_SELP(16U) | SYSCON_SYSPLLCTRL_SELR(0U),
  16.         .pllmdec = (SYSCON_SYSPLLMDEC_MDEC(8191U)),
  17.         .pllndec = (SYSCON_SYSPLLNDEC_NDEC(770U)),
  18.         .pllpdec = (SYSCON_SYSPLLPDEC_PDEC(98U)),
  19.         .pllRate = 180000000U,
  20.         .flags =  PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_POWERUP
  21.     };
  22. //设置pll时钟输入作为系统源
  23.     CLOCK_AttachClk(kFRO12M_to_SYS_PLL);
  24.     CLOCK_SetPLLFreq(&pllSetup);

  25. //重置并且设置AHB总线分频为1
  26.     CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false);

  27. //转换main_clk的频率
  28.     CLOCK_AttachClk(kFRO12M_to_MAIN_CLK);
  29.     SystemCoreClock = BOARD_BOOTCLOCKPLL180M_CORE_CLOCK;
复制代码


到此为止,PLC54608时钟的通道的选择与分析,设置都说明了,并且应用MCUXpresso Config Tools v4.0工具设置了系统工作频率
其他外设的时钟分析都如上所示,希望以上分析对你有帮助,有什么不明白的可以留言,谢谢!


此内容由EEWORLD论坛网友冒险武者原创,如需转载或用于商业用途需征得作者同意并注明出处






此帖出自NXP MCU论坛

赞赏

1

查看全部赞赏

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表