本帖最后由 andeyqi 于 2023-4-20 18:00 编辑
简介:
对于mcu 开发来说对clock一定不会陌生,clock相当于mcu 的心脏,没有clock 的 输入mcu及片上集成的外设大部分是无法工作的。对于clock 的配置大部分情况下我们只是配置成特定的频率,但是是否配置成功及是否按照自己期待的配置,我们无法很直观的看出来,笔者之前开发中曾经遇到过片内的RTC时钟误差比较大的场景,造成RTC时间存在误差的问题,对于这种问题我们如果能把片内的时钟通过gpio输出的话能让我清晰的确认时钟配置是否正确及时钟的精度状况,之前接触的发部分的MCU都是支持这个功能的,同样LPC845也是支持该功能的,我们开始今天的主题将LPC845 的内部时钟通过GPIO输出确认内部时钟频率。
1.Clkout 功能配置流程
Lpc845 的Clkout 功能由 System configuration (SYSCON) 控制,大部分IO 口都是可以配置为Clkout输出功能,从图 1.1 的时钟配置框图可知,软件上只要设置clock 对应的时钟选择信号(CLKOUTSEL[2:0]),及输出分频系数(CLKOUTDIV),再将对应的IO口配置为 Clkout 功能脚即可以将片内时钟信号输出,是不是感觉so easy,实现起来确实是很简单,有了NXP的配置工具我们甚至不用自己写一行代码即可实现该功能,不得不说官方的配置工具真的很赞,用上后会有种爱上了的感觉!!
图 1.1
图 1.2
2.代码对应
按照之前的理解,我们只要配置gpio 为clkout 功能脚,配置SCON IP 选择输出信号(CLKOUTSEL[2:0])及配置分频系数(CLKOUTDIV)即可,我们使用MCUXpresso IDE 自带配置配置工具即可轻松搞定上述配置。
2.1 GPIO 配置为clkout 功能脚
我们在PIN 配置界面配置PIO0_6 路由到CLKOUT 输出功能,配置如图2.1.1完成GPIO 的配置,生成代码如图2.1.2。
图 2.1.1
图 2.1.2
我们的板子上无外部晶振,可配置的输出clock 如下: - fro 30M
- main_clk 30M
- wdt_osc_clk 300K
我们配置fro 输出至CLKOUT,分频系数为1 图 2.2.1 为对应的配置选项,图 2.2.2 为对应的生成代码。
图 2.2.1 图 2.2.2
果然是很 easy 我们没有手动写一行代码就完成了上述的工作,果然很香吧这个配置工具O(∩_∩)O。
将上述程序下载验证发现按照预期输出了clkout,可以修改配置输出不同的时钟源,图3.1为fro 频率(30M),图3.2 为main_clk 二分频(15M)图3为wdt_osc_clk 二分频(15k)
图 3.1
图 3.2
图 3.3
|