DAVE4中的时钟配置与简单原理介绍
来源:互联网 发布:同声传译软件 编辑:程序博客网 时间:2024/05/22 18:08
方法/步骤
新建一个DAVE CE工程,添加一个名叫CLOCK_XMC4的APP到工程中该APP的主要功能有:1. 设置单片机上的各种时钟源2. 设置内部快速振荡器的校验方式3. 配置系统锁相环PLL的参数4. 可选的时钟分频输出5. 最主要的是,该APP会根据你的配置生成一个名叫SystemCoreClockSetup()的函数供上层应用调用
默认情况下,SystemInit函数会调用一个weak函数SystemCoreClockSetup来初始化系统时钟,该函数实现在system_XMC4800.c文件中。但是,当系统是中一旦使用了CLOCK_XMC4这个APP,那么SystemInit将会改成调用clock_xmc_conf.c文件中的SystemCoreClockSetup函数。
CLOCK_XMC4这个APP实质上是使用了芯片中的SCU(System Control Unit)模块来产生各种需要的时钟,如系统时钟,外设时钟,备份时钟等,此外,该APP还使用了一个GPIO来监视一路输出到外部的时钟
时钟初始化序列如图所示,SCU模块的底层驱动就是按照这个时序图来初始化时钟树的。需要特别注意的是,只有当内部高速晶振的校准模式设置为使用STDBY时钟为基准来校准时(即图中的Automatic模式),才会去尝试开启外部的ULP时钟电路(一般是32.768KHz的钟表晶振)。
双击该时钟模块,打开配置界面,在Clock Control Settings选项卡中展示配置结束后,系统中各个时钟的结果,图形界面一目了然,以后查阅大量数据手册,配置寄存器的工作都交给半导体厂商来完成了,毕竟他们是最了解自己产品的一群人,作为客户的我们,就应该把重心放在应用层的实现逻辑上
打开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的锁相环(不同于主锁相环的另外一个锁相环)
打开Standby Clock Generation Settings选项卡这里主要配置STDBY和RTC的时钟输入源,可以选择尾部超低功耗的晶振或者内部的低俗振荡器(精度不会很好)
打开Clock Selection Settings选项卡在这里将会配置系统中需要时钟的各种时钟,包括时钟源和分频系数
打开Event Settings选项卡在这里将会配置是否需要监视几个特别重要的时钟,被监视的时钟一旦发生了故障将会触发不可屏蔽中断,用户需要在NMI_Handler中断函数中进行相应处理
点击生成代码,DAVE软件将会自动根据前面的配置生成代码,最主要的实际上就是SystemCoreClockSetup函数,它会覆盖新建工程的时候自带的weak类型的同名函数
注意事项
每一次在GUI界面上对APP进行的改动都需要手动重新生成一遍代码
在自动生成的代码上做的手动的修改都会再下一次自动代码生成后被覆盖
如果示波器上没有看到外部的32.768KH在的晶振起振,一方面需要查看晶振的型号、匹配电容,焊接是否无误,另外一方面,需要查看软件中是否将这部分的电路开启了,即OFI时钟的校准模式需要设置为Automatic模式
- DAVE4中的时钟配置与简单原理介绍
- LVS(Linux Virtual Server)原理介绍与简单配置
- stm32时钟问题简单介绍
- Hibernate 简单介绍与图示原理
- FinalBitmap 之 简单配置与加载原理
- 经验总结:Struts2原理与简单配置
- STM32 时钟 系统时钟 配置 与 时钟树解析
- Nginx简单介绍以及安装与配置
- log4j-1简单介绍与配置--eclipse
- java中的枚举介绍与简单应用
- 简单介绍java中的子类与继承
- S3C2440时钟配置与学习
- Linux中的时钟与时间
- Linux中的时钟与时间
- 断点续传简单原理介绍
- 编译原理简单介绍
- 编译原理简单介绍
- RabbitMQ原理简单介绍
- Spring(22)——ApplicationEvent
- eclipse中maven项目发布到tomcat下 报找不到类或class或未定义类或class,实际上定义了
- Hyper-v安装Server 2016
- Unity插件开发基础—浅谈序列化系统
- pip报错解决方法--Fatal error in launcher: Unable to create process using
- DAVE4中的时钟配置与简单原理介绍
- 2017.09.11Dockfile
- Linux命令 Top
- OpenWRT下载与编译
- pycharm常用快捷操作
- @Transactional注解个人总结
- 微信公众号支付签名验证错误
- Maven之Unable to load the mojo 'resources' (or one of its required components)
- linux的虚拟内存和物理内存的理解