多语言展示
当前在线:1090今日阅读:167今日分享:16

DAVE4中的时钟配置与简单原理介绍

DAVE软件使用APP组件的方式帮助嵌入式程序员快速实现产品,其APP经过多代更新验证已经趋于稳定。任何嵌入式系统都需要配置系统时钟,本文将介绍如何在DAVE软件中使用官方的APP组件CLOCK_XMC4来设置系统时钟
工具/原料
1

DAVE4软件

2

XMC4800开发板

方法/步骤
1

新建一个DAVE CE工程,添加一个名叫CLOCK_XMC4的APP到工程中该APP的主要功能有:1. 设置单片机上的各种时钟源2. 设置内部快速振荡器的校验方式3. 配置系统锁相环PLL的参数4. 可选的时钟分频输出5. 最主要的是,该APP会根据你的配置生成一个名叫SystemCoreClockSetup()的函数供上层应用调用

2

默认情况下,SystemInit函数会调用一个weak函数SystemCoreClockSetup来初始化系统时钟,该函数实现在system_XMC4800.c文件中。但是,当系统是中一旦使用了CLOCK_XMC4这个APP,那么SystemInit将会改成调用clock_xmc_conf.c文件中的SystemCoreClockSetup函数。

3

CLOCK_XMC4这个APP实质上是使用了芯片中的SCU(System Control Unit)模块来产生各种需要的时钟,如系统时钟,外设时钟,备份时钟等,此外,该APP还使用了一个GPIO来监视一路输出到外部的时钟

4

时钟初始化序列如图所示,SCU模块的底层驱动就是按照这个时序图来初始化时钟树的。需要特别注意的是,只有当内部高速晶振的校准模式设置为使用STDBY时钟为基准来校准时(即图中的Automatic模式),才会去尝试开启外部的ULP时钟电路(一般是32.768KHz的钟表晶振)。

5

双击该时钟模块,打开配置界面,在Clock Control Settings选项卡中展示配置结束后,系统中各个时钟的结果,图形界面一目了然,以后查阅大量数据手册,配置寄存器的工作都交给半导体厂商来完成了,毕竟他们是最了解自己产品的一群人,作为客户的我们,就应该把重心放在应用层的实现逻辑上

6

打开Clock Generation Settings选项卡1. Operating mode为高精度振荡器选择时钟来源,可以选择External Crystal Mode:使用外部晶振(XTAL1和XTAL2引脚);External Clock Input Mode:使用CLKIN引脚输入的时钟;Disabled:不使用高精度振荡器,选择内部的快速振荡器来替代2. Calibration设置如何提高内部快速振荡器的精度,可以选择Factory Calibration:即出厂时候的配置;Automatic Calibration Using Standby Clock:使用STDBY时钟作为参考来校准OFI时钟3. Enable main PLL选择是否打开主锁相环4. PLL clock source选择主锁相环的时钟输入源,可以选择内部高速振荡器或者外部高精度的晶振5. PLL operating mode用来配置是否旁路掉芯片内部的VCO(压控振荡器)6. Enable USB PLL选择是否打开USB的锁相环(不同于主锁相环的另外一个锁相环)

7

打开Standby Clock Generation Settings选项卡这里主要配置STDBY和RTC的时钟输入源,可以选择尾部超低功耗的晶振或者内部的低俗振荡器(精度不会很好)

8

打开Clock Selection Settings选项卡在这里将会配置系统中需要时钟的各种时钟,包括时钟源和分频系数

9

打开Event Settings选项卡在这里将会配置是否需要监视几个特别重要的时钟,被监视的时钟一旦发生了故障将会触发不可屏蔽中断,用户需要在NMI_Handler中断函数中进行相应处理

10

点击生成代码,DAVE软件将会自动根据前面的配置生成代码,最主要的实际上就是SystemCoreClockSetup函数,它会覆盖新建工程的时候自带的weak类型的同名函数

注意事项
1

每一次在GUI界面上对APP进行的改动都需要手动重新生成一遍代码

2

在自动生成的代码上做的手动的修改都会再下一次自动代码生成后被覆盖

3

如果示波器上没有看到外部的32.768KH在的晶振起振,一方面需要查看晶振的型号、匹配电容,焊接是否无误,另外一方面,需要查看软件中是否将这部分的电路开启了,即OFI时钟的校准模式需要设置为Automatic模式

推荐信息